일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Spring Batch
- javascript
- elasticsearch
- linux
- Web Server
- php
- Spring
- AWS
- tool
- laravel
- jsp
- Git
- JVM
- ReactJS
- ubuntu
- MySQL
- java
- springboot
- Oracle
- Spring Boot
- IntelliJ
- Gradle
- 요리
- redis
- jenkins
- db
- 맛집
- devops
- Design Patterns
- it
- Today
- Total
목록MySQL (25)
아무거나
컬럼 생성시에 unsigned 선언의 의미] 1 CREATE TABLE `Code` ( 2 `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, 3 ... 4 ... 5 ) 컬럼을 생성할때 활용도에 따라 범위를 다르게 주는 부분이다. id 같은 경우 솔직히 음수는 쓰지 않으므로 int의 범위에서 반은 쓰질 않는다. 이럴때 unsigned를 선언해 주면 그 범위가 양수로 옮겨진다. -2147483648 ~2147483647 에서 0 ~ 4294967295 로 옮겨가는 것이다.
[docker mariaDB 설치] 1. 도커에서 mariaDB 이미지 받은후 컨테이너 생성 - sudo docker pull mariadb:latest - sudo docker run --name mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest - sudo docker exec -it mariadb bash // 해당 컨테이너 접속 - mysql -u root -p 명령으로 db접속 2. 마리아 DB 설정 - CREATE database `DB명` DEFAULT CHARACTER SET utf8; - create user `user명`@'%' identified by '비밀번호'; - grant all privileges on DB명.* t..
UPDATE ~ SELECT: JOIN을 통하여 조건에 맞게 SELECT 한 후 UPDATE 실행 Desc - 1번 코드는 조건에 맞게 SELECT 한 후 UPDATE를 시킨것이다. - 2번 코드는 1번에서 b에서 null경우에 update가 되지 않을 때, 이러한 경우에 LEFT JOIN을 걸어주는 예제이다. Example Query1 UPDATE table1 a, ( SELECT column1, column2 FROM table2 WHERE column1 = 1 ) b SET a.column1 = b.column2 a.column2 = b.column2 WHERE a.column1 = 111 Example Query2 UPDATE table1 a, LEFT JOIN ( SELECT column1, c..
동일한 조건으로 update시에 처음 실행만 반영되고 그 다음부터는 반영이 안되는 현상 작업 중 다량의 데이터를 Update 쿼리를 실행할 과정이 필요하였습니다. 한번의 많은 양의 데이터를 Update 한다면 DB의 커넥션이 끊어진다거나. 메모리 이슈가 생겨 증분으로 업데이트 시도하였습니다. 코드는 아래와 같습니다. [method] int changeCntSum = 0; // 업데이트된 데이터의 총 개수 while (true) { int changCnt = 0; // 업데이트된 데이터 개수 changeCnt = updateMapper.updateData(...매개변수..); changeCntSum += changeCnt; // 업데이트할 데이터의 개수가 없을 때 while문 break if (change..
BINARY: 데이터 조회 시 대소문자 구분(VARCHAR 기준) // AS-IS (대소문자 구분 안하는 조회) SELECT * FROM test_table WHERE searchField = 'test'; // TO-BE (대소문자 구분 조회) SELECT * FROM test_table WHERE searchField = BINARY('test');
UPDATE ~ CASE 문: 한번의 UPDATE로 여러 작업을 할 수 있다. Desc - WHEN과 THEN은 하나의 조건이다. - WHEN과 THEN은 다수가 존재할 수 있습니다. - ELSE는 모든 조건에 부합하지 않을경우가 조건이다. Example Query 아래 그림과 같은 데이터를 기준으로 쿼리를 날려봅니다. UPDATE recursive_test_table SET parent_id = CASE WHEN parent_id = 1 THEN 10 WHEN parent_id = 2 THEN 20 WHEN parent_id = 3 THEN 30 WHEN parent_id = 6 THEN 60 ELSE parent_id END; 위의 3 Line을 예로 들면 parent_id가 1일 때 10으로 변경하..
비트연산자 비트 연산자는 논리 연산자와 비슷하지만, 비트(bit) 단위로 논리 연산을 수행합니다. 또한, 비트 단위로 전체 비트를 좌측이나 우측으로 이동시킬 때도 사용합니다. (연산자 우선순위대로 나열 &가 우선순위 1등) & (AND 연산): 대응되는 비트가 모두 1이면 1을 반환함. | (OR 연산): 대응되는 비트 중에서 하나라도 1이면 1을 반환함. ^ (XOR 연산): 대응되는 비트가 서로 다르면 1을 반환함. ~ (NOT 연산): 비트를 1이면 0으로, 0이면 1로 반전시킴. (Right Shift 연산): 부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. [Example] MySql에서 제공하는 필드의 수는 제한이 있고 필드가 너무 많아지면 관리비용이 늘어납니다. 또한 특정 ..
삭제(DELETE) 하나의 쿼리로 여러 테이블의 데이터 삭제 Table Schema(Table Name: example_table) [user] [user_role] Example Code // user테이블의 user_id와 user_role의 user_id를 조인하여 삭제하자 DELETE u, ur FROM user AS u INNER JOIN user_role AS ur ON u.user_id = ur.user_id WHERE u.user_id = #{userId}
GROUP BY로 GROUPING한 필드말고 중복이 안되는 문자열들을 가진 필드의 문자열들을 합칠땐 GROUP_CONCAT을 사용 Table Schema(Table Name: example_table) Table Sample Data SELECT * FROM test_example; 콤마를 구분자로 한 결과값으로 합쳐져있는 문자열 도출(group_concat 기본 구분자는 콤마) SELECT name, GROUP_CONCAT(value) FROM test_example GROUP BY name; 임의의 구분자로 한 결과값으로 합쳐져있는 문자열 도출 SELECT name, GROUP_CONCAT(value SEPARATOR '|') FROM test_example GROUP BY name; 임의의 구분자로..
GROUPING을 하면서 다른 필드의 종류별 개수와 또 다른 필드의 숫자값을 모두 더한 값의 리스트를 도출하는 쿼리 Table Schema(Table Name: example_table) Table Sample Data SELECT * FROM example_table WHERE brand = '4엑스알'; brand 필드 기준으로 해당 필드를 grouping 하면서 mall_id의 count와 require_cnt의 값을 더한 총 count의 리스트를 구한다. SELECT wbmr.brand, wbmr.mall_cnt, wbmr.require_total_cnt FROM ( SELECT brand, COUNT(mall_id) AS mall_cnt , SUM(require_cnt) AS require_to..