Cheat Sheet
- Link
- overapi.com/
- dev.mysql.com/doc/refman/8.0/en/functions.html
mysql에 5.6, 5.7, 8.0 3가지 매뉴얼이 있음.
써 본 것 정리
BETWEEN … AND …
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| expr BETWEEN min AND max
-> min <= expr => max 이면 1, 아니면 0 리턴.
mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
-> 1, 0
mysql> SELECT 1 BETWEEN 2 AND 3;
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0
|
INSTR
1
2
3
4
5
6
7
| INSTR(str,substr), locate(substr,str)와 동일
-> str에 있는 substr의 첫 인덱스를 찾음.
mysql> SELECT INSTR('foobarbar', 'bar');
-> 4
mysql> SELECT INSTR('xbar', 'foobar');
-> 0
|
LOCATE
1
2
3
4
| LOCATE(substr,str), LOCATE(substr,str,시작점)
-> str에 있는 substr의 첫 인덱스를 찾음.
-> str의 시작점에서부터 substr의 첫 인덱스를 찾음.
|
1
2
3
4
5
6
7
8
| mysql> SELECT LOCATE('bar', 'foobarbar');
-> 4
mysql> SELECT LOCATE('xbar', 'foobar');
-> 0
mysql> SELECT LOCATE('bar', 'foobarbar', 5);
-> 7
|
SLEEP
1
2
3
4
5
6
7
| SLEEP(duration)
-> 레코드 당 정해진 초 동안 지연
-> 정상종료 시 0, 그 외에는 1 리턴
mysql> SELECT SLEEP(1000);
-> 0
|
BENCHMARK
1
2
3
4
5
6
7
8
9
10
11
| BENCHMARK(count,expr)
-> expr을 count만큼 반복
-> Mysql이 expr을 얼마나 빨리 실행하는지 시간을 재며, 항상 0을 리턴.
mysql> SELECT BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye'));
+---------------------------------------------------+
| BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye')) |
+---------------------------------------------------+
| 0 |
+---------------------------------------------------+
1 row in set (4.74 sec)
|
DATABASE, SCHEMA
1
2
3
4
5
6
| DATABASE() 또는 SCHEMA()
-> 현재 데이터베이스 이름 리턴.
-> 기본 데이터베이스가 없으면 NULL 리턴.
mysql> SELECT DATABASE();
-> 'test'
|
VERSION
1
2
3
4
5
| VERSION()
-> mysql 버젼 리턴
mysql> SELECT VERSION();
-> '8.0.24-standard'
|
USER, SYSTEM_USER, SESSION_USER
1
2
3
4
5
| USER() == SYSTEM_USER() == SESSION_USER()
-> 'utf-8'로 mysql 유저와 호스트 이름 리턴
mysql> SELECT USER();
-> 'davida@localhost'
|
REPLACE
1
2
3
4
| REPLACE(str,from_str,to_str)
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
|
INSERT
1
2
3
4
5
6
7
8
9
10
11
12
13
| INSERT(str,시작 위치,len,newstr)
-> str에서 시작 위치에서 len만큼 newstr로 변경
-> 인자 중 NULL이 있으면 NULL 리턴
mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
-> 'QuWhattic'
mysql> SELECT INSERT('Quadratic', -1, 4, 'What');
-> 'Quadratic'
mysql> SELECT INSERT('Quadratic', 3, 100, 'What');
-> 'QuWhat
|
LEAST
- 주어진 여러 인자중에서 가장 최소인 값을 반환
1
2
3
4
5
6
7
8
9
10
| LEAST(value1, value2....)
mysql> SELECT LEAST(2,0);
-> 0
mysql> SELECT LEAST(34.0, 3.0, 5.0, 767.0);
-> 3.0
mysql> SELECT LEAST("A", "B", "C");
-> A
|
JSON_ARRAYAGG
- group_concat이 필터링 되었을 때 사용하였음.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| JSON_ARRAYAGG(col_or_expr)
+------+-----------+-------+
| o_id | attribute | value |
+------+-----------+-------+
| 2 | color | red |
| 2 | fabric | silk |
| 3 | color | green |
| 3 | shape | square|
+------+-----------+-------+
mysql> SELECT o_id, JSON_ARRAYAGG(attribute) AS attributes
> FROM t3 GROUP BY o_id;
+------+---------------------+
| o_id | attributes |
+------+---------------------+
| 2 | ["color", "fabric"] |
| 3 | ["color", "shape"] |
+------+---------------------+
|
JSON_OBJECTAGG
- group_concat이 필터링 되었을 때 사용하였음.
1
2
3
4
5
6
7
8
9
10
| JSON_OBJECTAGG(key, value)
mysql> SELECT o_id, JSON_OBJECTAGG(attribute, value)
> FROM t3 GROUP BY o_id;
+------+---------------------------------------+
| o_id | JSON_OBJECTAGG(attribute, value) |
+------+---------------------------------------+
| 2 | {"color": "red", "fabric": "silk"} |
| 3 | {"color": "green", "shape": "square"} |
+------+---------------------------------------+
|
json_objectagg 함수 사용 시 알아야 하는 점이 있음.
key 값이 중복이 되어 있을 때 select 했을 때 마지막 값만 나온다는 것임.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| mysql> SELECT c, i FROM t;
+------+------+
| c | i |
+------+------+
| key | 3 |
| key | 4 |
| key | 5 |
+------+------+
mysql> SELECT JSON_OBJECTAGG(c, i) FROM t;
+----------------------+
| JSON_OBJECTAGG(c, i) |
+----------------------+
| {"key": 5} |
+----------------------+
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| mysql> INSERT INTO t VALUES ('key', 3), ('key', 5), ('key', 4);
mysql> SELECT c, i FROM t;
+------+------+
| c | i |
+------+------+
| key | 3 |
| key | 5 |
| key | 4 |
+------+------+
mysql> SELECT JSON_OBJECTAGG(c, i) FROM t;
+----------------------+
| JSON_OBJECTAGG(c, i) |
+----------------------+
| {"key": 4} |
+----------------------+
|