๐ก MySQL์ ๋ฌธ์์ด, ์ซ์, ๋ ์ง, ์๊ฐ์ ๊ดํ ๋ค์ํ ์์ ์ํ์ ๋ง์
๋ด์ฅ ํจ์๋ฅผ ์ ๊ณตํ๋ค.
ASCII: ์์คํค ์ฝ๋ ๊ฐ ์ถ์ถ
CHAR: ์์คํค ์ฝ๋๋ก ๋ฌธ์ ์ถ์ถ
Workbench์ ๋ฒ๊ทธ๋ก CHAR(65)์ ๊ฒฐ๊ณผ๊ฐ 'BLOB'์ผ๋ก ๋ณด์ผ ์ ์๋๋ฐ ์ผ๋ฐ ๋ช ๋ นํ ๋ชจ๋์์๋ ์ ์์ ์ผ๋ก 'A'๋ก ์ถ๋ ฅ๋๋ค. 'BLOB' ๊ธ์์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญํ๊ณ 'Open Value in Viewer' ์ ํ ํ Text ํญ์์ ํ์ธํ ์ ์๋ค.
SELECT ASCII('A'), CHAR(65);
BIT_LENGTH: ํ ๋น๋ ๋นํธ ํฌ๊ธฐ ๋ฐํ
CHAR_LENGTH: ๋ฌธ์์ด์ ๊ธธ์ด ๋ฐํ
LENGTH: ํ ๋น๋ BYTE ํฌ๊ธฐ ๋ฐํ
SELECT BIT_LENGTH('pie'), CHAR_LENGTH('pie'), LENGTH('pie');
SELECT menu_name, BIT_LENGTH(menu_name), CHAR_LENGTH(menu_name), LENGTH(menu_name) from tbl_menu;
CONCAT: ๋ฌธ์์ด์ ์ด์ด๋ถ์
CONCAT_WS: ๊ตฌ๋ถ์์ ํจ๊ป ๋ฌธ์์ด์ ์ด์ด๋ถ์
SELECT CONCAT('ํธ๋์ด', '๊ธฐ๋ฆฐ', 'ํ ๋ผ');
SELECT CONCAT_WS(',', 'ํธ๋์ด', '๊ธฐ๋ฆฐ', 'ํ ๋ผ');
SELECT CONCAT_WS('-', '2023', '05', '31');
ELT: ํด๋น ์์น์ ๋ฌธ์์ด ๋ฐํ
FIELD: ์ฐพ์ ๋ฌธ์์ด ์์น ๋ฐํ
FIND_IN_SET: ์ฐพ์ ๋ฌธ์์ด์ ์์น ๋ฐํ
INSTR: ๊ธฐ์ค ๋ฌธ์์ด์์ ๋ถ๋ถ ๋ฌธ์์ด์ ์์ ์์น ๋ฐํ
LOCATE: INSTR๊ณผ ๋์ผํ๊ณ ์์๋ ๋ฐ๋`
SELECT
ELT(2, '์ฌ๊ณผ', '๋ธ๊ธฐ', '๋ฐ๋๋')
, FIELD('๋ธ๊ธฐ', '์ฌ๊ณผ', '๋ธ๊ธฐ', '๋ฐ๋๋')
, FIND_IN_SET('๋ฐ๋๋', '์ฌ๊ณผ,๋ธ๊ธฐ,๋ฐ๋๋')
, INSTR('์ฌ๊ณผ๋ธ๊ธฐ๋ฐ๋๋', '๋ธ๊ธฐ')
, LOCATE('๋ธ๊ธฐ', '์ฌ๊ณผ๋ธ๊ธฐ๋ฐ๋๋');
FORMAT: 1000๋จ์๋ง๋ค ์ฝค๋ง(,) ํ์๋ฅผ ํด ์ฃผ๋ฉฐ ์์์ ์๋ ์๋ฆฟ์(๋ฐ์ฌ๋ฆผ)๊น์ง ํํํ๋ค.
SELECT FORMAT(123142512521.5635326, 3);
BIN: 2์ง์ ํํ
OCT: 8์ง์ ํํ
HEX: 16์ง์ ํํ
SELECT BIN(65), OCT(65), HEX(65);
INSERT: ๊ธฐ์ค ๋ฌธ์์ด์ ์์น๋ถํฐ ๊ธธ์ด๋งํผ์ ์ง์ฐ๊ณ ์ฝ์
ํ ๋ฌธ์์ด์ ๋ผ์ ๋ฃ๋๋ค.
SELECT INSERT('๋ด ์ด๋ฆ์ ์๋ฌด๊ฐ์
๋๋ค.', 7, 3, 'ํ๊ธธ๋');
LEFT: ์ผ์ชฝ์์ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ์ ๋ฐํ
RIGHT: ์ค๋ฅธ์ชฝ์์ ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ์ ๋ฐํ
SELECT LEFT('Hello World!', 3), RIGHT('Hello World!', 3);
UPPER: ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ณ๊ฒฝ
LOWER: ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ณ๊ฒฝ`
SELECT LOWER('Hello World!'), UPPER('Hello World!');
LPAD: ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ์ผ์ชฝ์ผ๋ก ๋๋ฆฐ ํ์ ๋น ๊ณณ์ ๋ฌธ์์ด๋ก ์ฑ์ด๋ค.
RPAD: ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ฆฐ ํ์ ๋น ๊ณณ์ ๋ฌธ์์ด๋ก ์ฑ์ด๋ค.`
SELECT LPAD('์ผ์ชฝ', 6, '@'), RPAD('์ค๋ฅธ์ชฝ', 6 ,'@');
LTRIM: ์ผ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
RTRIM: ์ค๋ฅธ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
SELECT LTRIM(' ์ผ์ชฝ'), RTRIM('์ค๋ฅธ์ชฝ ');
TRIM: TRIM์ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ค ๊ณต๋ฐฑ์ ์ ๊ฑฐํ์ง๋ง ๋ฐฉํฅ(LEADING(์), BOTH(์์ชฝ), TRAILING(๋ค))์ด ์์ผ๋ฉด ํด๋น ๋ฐฉํฅ์ ์ง์ ํ ๋ฌธ์์ด์ ์ ๊ฑฐํ ์ ์๋ค.
SELECT TRIM(' MySQL '), TRIM(BOTH '@' FROM '@@@@MySQL@@@@');
REPEAT: ๋ฌธ์์ด์ ํ์๋งํผ ๋ฐ๋ณต
SELECT REPEAT('์ฌ๋ฐ์ด', 3);
REPLACE: ๋ฌธ์์ด์์ ๋ฌธ์์ด์ ์ฐพ์ ์นํ
SELECT REPLACE('๋ง์ดSQL', '๋ง์ด', 'My');
REVERSE: ๋ฌธ์์ด์ ์์๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง์
SELECT REVERSE('stressed');
SPACE: ๊ธธ์ด ๋งํผ์ ๊ณต๋ฐฑ์ ๋ฐํ
SELECT CONCAT('์ ์ด๋ฆ์', SPACE(5), '์ด๊ณ ๋์ด๋', SPACE(3), '์ธ์
๋๋ค.');
SUBSTRING: ์์ ์์น๋ถํฐ ๊ธธ์ด๋งํผ์ ๋ฌธ์๋ฅผ ๋ฐํ(๊ธธ์ด๋ฅผ ์๋ตํ๋ฉด ์์ ์์น๋ถํฐ ๋๊น์ง ๋ฐํ)
SELECT SUBSTRING('์๋
ํ์ธ์ ๋ฐ๊ฐ์ต๋๋ค.', 7, 2), SUBSTRING('์๋
ํ์ธ์ ๋ฐ๊ฐ์ต๋๋ค.', 7);
SUBSTRING_INDEX: ๊ตฌ๋ถ์๊ฐ ์ผ์ชฝ๋ถํฐ ํ์ ๋ฒ์จฐ ๋์ค๋ฉด ๊ทธ ์ดํ์ ์ค๋ฅธ์ชฝ์ ๋ฒ๋ฆฐ๋ค. ํ์๊ฐ ์์์ผ ๊ฒฝ์ฐ ์ค๋ฅธ์ชฝ๋ถํฐ ์ธ๊ณ ์ผ์ชฝ์ ๋ฒ๋ฆฐ๋ค.
SELECT SUBSTRING_INDEX('hong.test@gmail.com', '.', 2), SUBSTRING_INDEX('hong.test@gmail.com', '.', -2);
ABS: ์ ๋๊ฐ ๋ฐํ
SELECT ABS(-123);
CEILING: ์ฌ๋ฆผ๊ฐ ๋ฐํ
FLOOR: ๋ฒ๋ฆผ๊ฐ ๋ฐํ
ROUND: ๋ฐ์ฌ๋ฆผ๊ฐ ๋ฐํ
SELECT CEILING(1234.56), FLOOR(1234.56), ROUND(1234.56);
CONV: ์๋ ์ง์์์ ๋ณํํ๊ณ ์ ํ๋ ์ง์๋ก ๋ณํ
SELECT CONV('A', 16, 10), CONV('A', 16, 2), CONV(1010, 2, 8);
MOD: ์ซ์ 1์ ์ซ์ 2๋ก ๋๋ ๋๋จธ์ง ์ถ์ถ
SELECT MOD(75, 10), 75 % 10, 75 MOD 10;
POW: ๊ฑฐ๋ญ์ ๊ณฑ๊ฐ ์ถ์ถ
SQRT: ์ ๊ณฑ๊ทผ์ ์ถ์ถ
SELECT POW(2, 4), SQRT(16);
RAND: 0์ด์ 1 ๋ฏธ๋ง์ ์ค์๋ฅผ ๊ตฌํ๋ค.
m <= ์์์ ์ ์ < n'์ ๊ตฌํ๊ณ ์ถ๋ค๋ฉด FLOOR((RAND() (n - m) + m)์ ์ฌ์ฉํ๋ค.
1๋ถํฐ 10๊น์ง ๋์ ๋ฐ์: FLOOR(RAND() (11 - 1) + 1)
SELECT RAND(), FLOOR(RAND() * (11 - 1) + 1);
SIGN: ์์๋ฉด 1, 0์ด๋ฉด 0, ์์๋ฉด -1์ ๋ฐํ
SELECT SIGN(10.1), SIGN(0), SIGN(-10.1);
TRUNCATE: ์์์ ์ ๊ธฐ์ค์ผ๋ก ์ ์ ์์น๊น์ง ๊ตฌํ๊ณ ๋๋จธ์ง๋ ๋ฒ๋ฆผ
SELECT TRUNCATE(12345.12345, 2), TRUNCATE(12345.12345, -2);
ADDDATE: ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐจ์ด๋ฅผ ๋ํจ
SUBDATE: ๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ ์ง๋ฅผ ๋บ
SELECT ADDDATE('2023-05-31', INTERVAL 30 DAY), ADDDATE('2023-05-31', INTERVAL 6 MONTH);
SELECT SUBDATE('2023-05-31', INTERVAL 30 DAY), SUBDATE('2023-05-31', INTERVAL 6 MONTH);
ADDTIME: ๋ ์ง ๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ๋ํจ
SUBTIME: ๋ ์ง ๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ๋บ
SELECT ADDTIME('2023-05-31 09:00:00', '1:0:1'), SUBTIME('2023-05-31 09:00:00', '1:0:1');
CURDATE: ํ์ฌ ์ฐ-์-์ผ ์ถ์ถ
CURTIME: ํ์ฌ ์:๋ถ:์ด ์ถ์ถ
NOW() ๋๋ SYSDATE(): ํ์ฌ ์ฐ-์-์ผ ์:๋ถ:์ด ์ถ์ถ
SELECT CURDATE(), CURTIME(), NOW(), SYSDATE();
-- CURDATE(), CURRENT_DATE(), CURRENT_DATE๋ ๋์ผ
SELECT CURDATE(), CURRENT_DATE(), CURRENT_DATE;
-- CURTIME(), CURRENT_TIME(), CURRENT_TIME์ ๋์ผ
SELECT CURTIME(), CURRENT_TIME(), CURRENT_TIME;
-- NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP()๋ ๋์ผ
SELECT NOW(), LOCALTIME, LOCALTIME(), LOCALTIMESTAMP, LOCALTIMESTAMP();
HOUR(์๊ฐ), MINUTE(์๊ฐ), SECOND(์๊ฐ), MICROSECOND(์๊ฐ)
๋ ์ง ๋๋ ์๊ฐ์์ ์ฐ, ์, ์ผ, ์, ๋ถ, ์ด, ๋ฐ๋ฆฌ์ด๋ฅผ ์ถ์ถ
SELECT YEAR(CURDATE()), MONTH(CURDATE()), DAYOFMONTH(CURDATE());
SELECT HOUR(CURTIME()), MINUTE(CURTIME()), SECOND(CURRENT_TIME), MICROSECOND(CURRENT_TIME);
DATE: ์ฐ-์-์ผ๋ง ์ถ์ถ
TIME: ์:๋ถ:์ด๋ง ์ถ์ถ
SELECT DATE(NOW()), TIME(NOW());
DATEDIFF: ๋ ์ง1 - ๋ ์ง2์ ์ผ์๋ฅผ ๋ฐํ
TIMEDIFF: ์๊ฐ1 - ์๊ฐ2์ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํจ
SELECT DATEDIFF('2023-05-31', '2023-02-27'), TIMEDIFF('17:07:11', '13:06:10');
DAYOFWEEK: ์์ผ ๋ฐํ(1์ด ์ผ์์ผ)
MONTHNAME: ํด๋น ๋ฌ์ ์ด๋ฆ ๋ฐํ
DAYOFYEAR: ํด๋น ๋
๋์์ ๋ช ์ผ์ด ํ๋ ๋์ง ๋ฐํ
SELECT DAYOFWEEK(CURDATE()), MONTHNAME(CURDATE()), DAYOFYEAR(CURDATE());
LAST_DAY: ํด๋น ๋ ์ง์ ๋ฌ์์ ๋ง์ง๋ง ๋ ์ ๋ ์ง๋ฅผ ๊ตฌํ๋ค.
SELECT LAST_DAY('20230201');
MAKEDATE: ํด๋น ์ฐ๋์ ์ ์๋งํผ ์ง๋ ๋ ์ง๋ฅผ ๊ตฌํ๋ค.
SELECT MAKEDATE(2023, 32);
MAKETIME: ์, ๋ถ, ์ด๋ฅผ ์ด์ฉํด์ '์:๋ถ:์ด'์ TIME ํ์์ ๋ง๋ ๋ค.
SELECT MAKETIME(17, 03, 02);
QUARTER: ํด๋น ๋ ์ง์ ๋ถ๊ธฐ๋ฅผ ๊ตฌํจ
SELECT QUARTER('2023-05-31');
TIME_TO_SEC: ์๊ฐ์ ์ด ๋จ์๋ก ๊ตฌํจ
SELECT TIME_TO_SEC('1:1:1');