일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Design Patterns
- JVM
- ReactJS
- Gradle
- redis
- jsp
- it
- Git
- springboot
- AWS
- Spring Boot
- IntelliJ
- ubuntu
- Web Server
- Oracle
- 요리
- jenkins
- php
- javascript
- Spring
- linux
- laravel
- Spring Batch
- MySQL
- java
- elasticsearch
- tool
- devops
- db
- 맛집
- Today
- Total
목록Data Store/DB (34)
아무거나
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에서 제공하는 필드의 수는 제한이 있고 필드가 너무 많아지면 관리비용이 늘어납니다. 또한 특정 ..
- 엑셀 수식으로 쿼리문 생성 ex) " insert into {Table} set b_seq='"&A2&"', b_name='"&B2&"', b_phone='"&C2&"', b_bank_code='"&D2&"', b_bank_accountnumber='"&E2&"', b_bank_depositprice='"&F2&"', b_bank_date='"&G2&"', b_description='"&H2&"', b_naver_id='"&I2&"', b_kakao_id='"&J2&"', b_area_type='"&K2&"', b_area_lat='"&L2&"', b_area_lng='"&M2&"', b_link='"&N2&"', b_dealarticle_type='"&O2&"' ; " 위에 부분을 빈 셀에 채워서 ..
삭제(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..
hierarchy 구조에서 recursive 쿼리의 사용 Desc hierarchy: 계층 recursive: 재귀 Example hierarchy 구조의 샘플 데이터 생성 CREATE TABLE recursive_test_table ( id INTEGER NOT NULL, name VARCHAR(128) NULL, parent_id INTEGER NULL, CONSTRAINT pk_recursive PRIMARY KEY (id) ); INSERT INTO recursive_test_table (id, name, parent_id) VALUES (1, '봉근', NULL); INSERT INTO recursive_test_table (id, name, parent_id) VALUES (2, '봉근 A',..