일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Spring
- gradle
- 한빛미디어
- Kafka
- Logstash
- RabbitMQ
- enablekafkastreams
- coursera
- spring-kafka
- Slick
- avo
- play framework
- statestore
- kafka streams
- kafkastream
- reactive
- springboot
- kafkastreams
- kafka interactive query
- aws
- Elk
- schema registry
- Elasticsearch
- spring-cloud-stream
- spring-batch
- 플레이 프레임워크
- scala 2.10
- confluent
- 카프카
- scala
- Today
- Total
b
7.3.3 MySQL 내장 함수 (MySQL전용 함수) 본문
7.3.3 MySQL 내장 함수 (MySQL전용 함수)
- IFNULL(A, B) : A가 null 이면 B를 A가 null이 아니면 A를 그대로 반환한다.
- ISNULL(A) : A가 null 이면 true(1) , null 이 아니면 false(0) 을 반환한다.
- NOW() : 현재시간 반환
- SYSDATE() : 현재시간 반환
** 일반적인 웹서비스에서 NOW()가 아닌 SYSDATE()를 꼭 사용해야 이유는 없다. 기능은 동일하지만 SYSDATE()는 '호출시점'에 따라 값이 결정되기 떄문에 인덱싱 등에 문제를 가진다.
where from_data > SYSDATE() 는 실행때마다 SYSDATE값이 달라진다, 이건 상수가 아닌상태이다!!
- DATE_FOMRAT : Date Type -> String
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H시 %i분 %s초') AS cur_str;
- STR_TODATE : 문자열을 날자 타입으로 변경
SELECT STR_TO_DATE( '2011-04-30', '%Y-%m-%d') as cur_dt;
- DATE_ADD, DATE_SUB : 날자 타입의 가감
SELECT DATE_ADD( NOW(), INTERVAL 1 DAY ) as tomorrow;
SELECT DATE_ADD( NOW(), INTERVAL -1 DAY ) as yesterday;
** YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 의 값이 있고 [ INTERVAL n 단위 ] 형식으로 입력하면 된다.
- RPAD(), LPAD() : 문자의 좌우측에 문자를 덧붙여 지정된 길이로 만든다.
SELECT RPAD("Cloee', 10, '_'); -> Cloee_____
- RTRIM(), LTRIM(), TRIM() : 문자의 우측, 좌측, 양측의 공백(Space, NewLine, Tab)을 제거
- CONCAT : 문자열을 연결, 인자의 갯수는 제한이 없다.
- CONCAT : 문자열을 구분자를 넣어서 연결해준다.
SELECT CONCAT_WS(',', 'A', 'B', 'C') --> A,B,C
- GROUP_CONCAT : 값들을 정렬한후, 연결하거나 구분자설정, 중복제거등 유용하다.
ex1-SELECT GROUP_CONCAT(dept_no)
==> d001, d002, d003, d004
FROM dept (dept모든 레코드에서 dept_no 칼럼을 기본 구분자, 로 연결한 값을 반환)
ex2- SELECT GROUP_CONCAT(dept_no, SEPARATOR '|') FROM dept
==> d001|d002|d003}d004
ex3- SELECT GROUP_CONCAT(dept_no, ORDER BY dept_name DESC) from dept
==> d007,d008,d004,d001
dept_name 역순 정렬 -> dept_no 들의 연결값을 가져옴
ex4- SELECT GROUP_CONCAT(DISTINCT dept_no ORDER BY dept_name DESC) from dept
==> d007,d008,d006,d004
ex3과 동일하지만 중복된 dept_no가 있다면 제거하고 가져온다.
** 제한적인 메모리 버퍼를 사용하는데 TOAD나 SQLYog에서는 단순한 Warnning지만, JDBC로 연결할 때는 SQLException이 발생하므로, GROUP_CONCAT의 결과가 버퍼를 초과하지 않도록 주의해야한다.
- CASE WHEN (Function가 아닌 Syntax)
SELECT emp_no, frst_name
CASE gender WHEN 'M TEHN 'Man'
WHEN 'F' THEN 'Woman'
ELSE 'Unknown'
END AS gender
FROM emp LIMIT 10
** CASE WHEN 절이 일치해야만 THEN 이하도 실행이 된다. 서브쿼리->CASE WHEN으로 성능 향상을 꾀할 수 있다.(P407)
- MD5, SHA : 비대칭형 암호화 알고리즘 (SHA - SHA-1알고리즘, 160bit 해시 값, MD5 - Message Digest알고리즘 128bit 해시 값)
중복의 가능성이 매우 낮기 때문에, 길이가 긴 데이터를 줄여서 인덱싱하는 용도로도 사용한다.(url값 인덱싱)
'RealMysql' 카테고리의 다른 글
7.4.SELECT ( 7.4.3 WHERE ~ 7.4.5 LIMIT ) (0) | 2012.12.11 |
---|---|
7.4 SELECT ( 7.4.1 SELECT 처리순서 ~ 7.4.2 GROUP BY, ORDER BY) (1) | 2012.12.09 |
7. 쿼리 작성 및 최적화 (ANSI SQL명령) (0) | 2012.11.12 |
6장 실행계획 (6.3.6 테이블 조인) (0) | 2012.11.09 |
6장 실행계획 (6.2 MySQL의 주요 처리 방식 - order by 등등) (0) | 2012.11.08 |