SQL을 작성하다 보면 현재 시간이 필요할 때가 있다. 이 때 활용할 수 있는 함수가 MySQL 에는 두 가지가 있다. sysdate()now() 어떤 차이가 있을까? 둘 다 현재 날짜 값을 가져오는 기능을 한다. 다만 현재라는 기준이 다소 다를 뿐이다. 아래 예시를 참고해 보자. (본 예시는 MySQL 공식문서에서 가져온 내용이다.) 두 번째 예제를 보면 sysdate() 사이에 차이가 있음을 확인할 수 있다. 정리를 해 보면 아래와 같이 정리할 수 있다. sysdate() : 함수 호출 시간now() : 쿼리 수행 시간 그렇다면 하나의 쿼리에서 여러 번의 현재 날짜를 저장해야 하는 컬럼이 있다면 now() 를 사용하는 것이 맞다. 하지만 개발된 코드를 보면 그냥 기준 없이 사용되는 경우가 있을 것이다..
MySQL 에서 insert 쿼리 수행시 Key 중복이 있는 경우 해당 row를 업데이트 하기 위해서 insert ~ on duplicate key update ~ 를 사용한다. 문법 INSERT INTO tb_temp (a, b, c) VALUES(1, 2, 3) ON DUPLICATE KEY UPDATE c = c + 1 tb_temp 테이블에 PK(unique index)가 a 라고 했을 때를 가정하자. 위 SQL은 a=1 인 row 가 이미 존재한다면 c 컬럼을 갱신한다는 의미이다. 예를 들어 위 SQL을 두 번 수행하면? c는 4가 된다. 그럼 Bulk insert 에서의 duplicate key update 쿼리는 어떻게 작성이 될까? 두 개의 insert 구문이 있다고 가정하자. INSERT..
대량으로 insert를 수행하다 보면 성능을 고려하게 된다. MySQL에서는 multi row을 어떻게 빠르게 insert 할 수 있을까? One Transaction 처리 Insert ~ Select Bulk Insert LOAD DATA INFILE 구글링을 해 보니 4가지로 요약되는 것 같다. One Transaction 처리 start transaction; insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c) values (1, 2, 3); insert into tb_name (a, b, c) values (1, 2, 3); commit transaction; 하나의 트랜젝션으로 묶어서 처리하는 방식이다. SQ..
SQL을 작성하다 보면 여러 Row를 하나의 컬럼으로 합쳐서 보여줘야 할 경우가 있다. MySQL에 group_concat 같은 개념이 Oracle에도 존재한다. 한 번 살펴보자. Oracle의 경우 버전마다 할 수 있는 방식이 다르다. 먼저 언급하지만 버전이 올라갈수록 SQL이 간단해진다. 샘플 데이터 국가 차례 왕 이름 고구려 1대 동명왕 고구려 3대 대무신왕 백제 1대 온조왕 고구려 2대 유리왕 백제 3대 기루왕 신라 1대 남해왕 신라 1대 박혁거세 백제 2대 다루왕 신라 1대 유리이사금 샘플 데이터는 "여기"에서 가져왔다. 해결방식 1.9i에서 connect by + sys_connect_by_path 활용 -- 테스트 데이터 WITH TB_TEST AS ( SELECT '고구려' AS COUNT..
- Total
- Today
- Yesterday
- db
- Django
- jenkins
- linux
- exception
- flume
- Apache Spark
- 태그를 입력해 주세요.
- jenkins2.0
- 데이터과학자
- HADOOP
- java
- 책요약
- Sqoop
- jackson
- json
- mysql
- spark
- bigdata
- mongo
- Oracle
- spring
- PYTHON
- 통계학
- Git
- Learning Spark
- Hdfs
- 확률분포
- 알고리즘
- mongodb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |