๊ทธ๋ฃน ์ง๊ณ ํจ์
SELECT
MAX(Quantity),
MIN(Quantity),
COUNT(Quantity),
SUM(Quantity),
AVG(Quantity)
FROM OrderDetails
WHERE OrderDetailID BETWEEN 20 AND 30;
SQL
๋ณต์ฌ
โข
MAX : ๊ฐ์ฅ ํฐ ๊ฐ
โข
MIN : ๊ฐ์ฅ ์์ ๊ฐ
โข
COUNT : ๊ฐฏ์ย (null ์ ์ธ)
โข
SUM : ์ดํฉ
โข
AVG : ํ๊ท
โข
SELECT๋ฅผ ์ด์ฉํด ์ปฌ๋ผ์ผ๋ก ๋ํ๋ผ ์๋ ์๊ณ HAVING์์ ์กฐ๊ฑด์ ์ ์ฌ๋ฃ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ซ์ ๊ด๋ จ ํจ์
SELECT ROUND(0.5), CEIL(0.4), FLOOR(0.6);
SELECT Price, ROUND(price), CEIL(price), FLOOR(price)
FROM Products;
SQL
๋ณต์ฌ
โข
ROUND : ๋ฐ์ฌ๋ฆผ
โข
CEIL : ์ฌ๋ฆผ
โข
FLOOR : ๋ด๋ฆผ
SELECT ABS(1), ABS(-1), ABS(3 - 10);
SELECT *
FROM OrderDetails
WHERE ABS(Quantity - 10) < 5;
SQL
๋ณต์ฌ
โข
ABS : ์ ๋๊ฐ
SELECT GREATEST(1, 2, 3), LEAST(1, 2, 3, 4, 5);
SELECT
OrderDetailID, ProductID, Quantity,
GREATEST(OrderDetailID, ProductID, Quantity),
LEAST(OrderDetailID, ProductID, Quantity)
FROM OrderDetails;
SQL
๋ณต์ฌ
โข
GREATEST : () ์ค ๊ฐ์ฅ ํฐ ๊ฐ
โข
LEAST : () ์ค ๊ฐ์ฅ ์์ ๊ฐ
SELECT POW(2, 3), POWER(5, 2), SQRT(16);
SELECT Price, POW(Price, 1/2)
FROM Products
WHERE SQRT(Price) < 4;
SQL
๋ณต์ฌ
โข
POW(a, b), POWER(a, b) : a๋ฅผ b๋งํผ ์ ๊ณฑ
โข
SQRT : ์ ๊ณฑ๊ทผ
โข
EXP(n) : e์ ๊ฑฐ๋ญ์ ๊ณฑ
โข
LOG(n) : ์์ฐ๋ก๊ทธ
SELECT
TRUNCATE(1234.5678, 1),
TRUNCATE(1234.5678, 2),
TRUNCATE(1234.5678, 3),
TRUNCATE(1234.5678, -1),
TRUNCATE(1234.5678, -2),
TRUNCATE(1234.5678, -3);
SELECT Price
FROM Products
WHERE TRUNCATE(Price, 0) = 12;
SQL
๋ณต์ฌ
โข
TRUNCATE(N, n) : N์ ์์ซ์ n์๋ฆฌ๊น์ง ์ ํ
โฆ
n์๋ฆฌ์ ์์๊ฐ์ ๋ฃ์ผ๋ฉด ์์์ ์๋๋ก ์ฃผ์ด์ง ๊ฐ์ ์๋ฆฌ๋งํผ ๋ฐํํ๋ค
โฆ
n์๋ฆฌ์ ์์๊ฐ์ ๋ฃ์ผ๋ฉด ์์์ ์๋ก ์ฃผ์ด์ง ๊ฐ์ ์๋ฆฌ๋งํผ ๋ด๋ฆผ์ฒ๋ฆฌ๋ ํ ๋ฐํํ๋ค
โฆ
n์๋ฆฌ์ 0์ ๋ฃ์ผ๋ฉด ์์์ ์ ๋ผ๊ณ ๋ฐํํ๋ค
SELECT bin(31), hex(31), oct(31);
SQL
๋ณต์ฌ
โข
bin() : 2์ง์
โข
hex() : 16์ง์
โข
oct() : 8์ง์
SELECT ROUND(RAND()*100, 0)
SQL
๋ณต์ฌ
โข
ROUND(RAND() * max, min) : min~max ์ฌ์ด์ ๋๋ค๊ฐ
๋ฌธ์์ด ๊ด๋ จ ํจ์
SELECT UPPER('abcDEF'), LOWER('abcDEF');
SELECT UCASE(CustomerName), LCASE(ContactName)
FROM Customers;
SQL
๋ณต์ฌ
โข
UCASE, UPPER : ๋๋ฌธ์๋ก
โข
LCASE, LOWER : ์๋ฌธ์๋ก
SELECT CONCAT('HELLO', ' ', 'THIS IS ', 2021) -- HELLO THIS IS 2021
SELECT CONCAT_WS('-', 2021, 8, 15, 'AM') -- 2021-8-15-AM
SELECT CONCAT('O-ID: ', OrderID)
FROM Orders;
SELECT
CONCAT_WS(' ', FirstName, LastName) AS FullName
FROM Employees;
SQL
๋ณต์ฌ
โข
CONCAT(โฆ) : () ์์ ๋ด์ฉ์ ์ด์ด๋ถ์
โข
CONCAT_WS(S, โฆ) : () ์์ ๋ด์ฉ์ S๋ก ์ด์ด๋ถ์
โฆ
NULL์ด ๋ด์ฉ์ ์์ผ๋ฉด ์ถ๋ ฅ๋์ง ์๋๋ค.
SELECT
SUBSTR('ABCDEFG', 3), -- CDEFG
SUBSTR('ABCDEFG', 3, 2), -- CD
SUBSTR('ABCDEFG', -4), -- DEFG
SUBSTR('ABCDEFG', -4, 2); -- DESELECT
LEFT('ABCDEFG', 3), -- ABC
RIGHT('ABCDEFG', 3); -- EFG
SQL
๋ณต์ฌ
โข
SUBSTR, SUBSTRING(โstrโ, start, n) : โstrโ์์ start์์น๋ถํฐ n๋งํผ ์๋ฅธ๋ค
โฆ
start์ ์์๊ฐ์ด ๋ค์ด๊ฐ๋ฉด ๋ค์์๋ถํฐ ์์ํ๋ค.
โข
LEFT, RIGHT(โstrโ, n) : โstrโ์ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ๋ถํฐ n๋งํผ ์๋ฅธ๋ค
SELECT
LENGTH('ABCDE'), -- 5
CHAR_LENGTH('ABCDE'), -- 5
CHARACTER_LENGTH('ABCDE'); -- 5SELECT
LENGTH('์๋
ํ์ธ์'), -- 15
CHAR_LENGTH('์๋
ํ์ธ์'), -- 5
CHARACTER_LENGTH('์๋
ํ์ธ์'); -- 5
SQL
๋ณต์ฌ
โข
LENGTH : ๋ฌธ์์ด ๋ฐ์ดํธ ํฌ๊ธฐ
โข
CHAR_LENGTH, CHARACTER_LENGTH : ๋ฌธ์์ ๊ฐ์
โข
BIT_LENGTH : ๋ฌธ์์ด ๋นํธ ํฌ๊ธฐ
SELECT
CONCAT('|', ' HELLO ', '|'), -- | HELLO |
CONCAT('|', LTRIM(' HELLO '), '|'), -- |HELLO |
CONCAT('|', RTRIM(' HELLO '), '|'), -- | HELLO|
CONCAT('|', TRIM(' HELLO '), '|'); -- |HELLO|
SQL
๋ณต์ฌ
โข
TRIM : ์์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
โข
LTRIM : ์ผ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
โข
RTRIM : ์ค๋ฅธ์ชฝ ๊ณต๋ฐฑ ์ ๊ฑฐ
SELECT
LPAD('ABC', 5, '-'), -- --ABC
RPAD('ABC', 5, '-'); -- ABC--
SQL
๋ณต์ฌ
โข
LPAD(s, n, p) : s๊ฐ n๊ฐ๊ฐ ๋ ๋๊น์ง ์ผ์ชฝ์ p๋ฅผ ๋ถ์ธ๋ค
โข
RPAD(s, n, p) : s๊ฐ n๊ฐ๊ฐ ๋ ๋๊น์ง ์ค๋ฅธ์ชฝ์ p๋ฅผ ๋ถ์ธ๋ค
SELECT
REPLACE('๋งฅ๋๋ ๋์์ ๋งฅ๋๋ ๋ ํ๋ฒ๊ฑฐ๋ฅผ ๋จน์๋ค.', '๋งฅ๋๋ ๋', '๋ฒ๊ฑฐํน'); -- ๋ฒ๊ฑฐํน์์ ๋ฒ๊ฑฐํน ํ๋ฒ๊ฑฐ๋ฅผ ๋จน์๋ค.
SQL
๋ณต์ฌ
โข
REPLACE(s, a, b) : s์์ a๋ฅผ b๋ก ์นํ
SELECT
INSTR('ABCDE', 'ABC'), -- 1
INSTR('ABCDE', 'BCDE'), -- 2
INSTR('ABCDE', 'C'), -- 3
INSTR('ABCDE', 'DE'), -- 4
INSTR('ABCDE', 'F'); -- 5
SQL
๋ณต์ฌ
โข
INSTR(S, s) : S ์ค s์ ์ฒซ ์์น ๋ฐํ (์์ผ๋ฉด 0)
SELECT
'01' = '1', -- 0
CONVERT('01', DECIMAL) = CONVERT('1', DECIMAL); -- 1
SQL
๋ณต์ฌ
โข
CONVERT(a, t) : a๋ฅผ t ์๋ฃํ์ผ๋ก ๋ณํ
โข
CAST(a AS t)๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ
โข
t๋ก ์ฌ ์ ์๋ ํ์
โฆ
BINARY
โฆ
DECIMAL, CHAR, NCHAR, SIGNED, UNSIGNED
โฆ
DATE, DATETIME, TIME
โฆ
JSON
SELECT
REPEAT('A', 3);
SQL
๋ณต์ฌ
โข
REPEAT(s, n) : s๋ฅผ n๋ฒ ๋ฐ๋ณต
SELECT
REVERSE('abcdef');
SQL
๋ณต์ฌ
โข
REVERSE(s) : s๋ฅผ ๋ค์ง์ด ๋ฐํ
-- MySQL์ ๋ฐฐ์ด ์ธ๋ฑ์ค ์์์ด 1์ด๋ค.
LOCATE('abc', 'ababcDEFabc'); -- 3
LOCATE('abc', 'ababcDEFabc', 4); --9
SQL
๋ณต์ฌ
โข
LOCATE(s, t, i) : t์์ s์ ์์น๋ฅผ i๋ถํฐ ์ฐพ์์ ๋ฐํ
์๊ฐ/๋ ์ง ๊ด๋ จ ํจ์
SELECT CURDATE(), CURTIME(), NOW();
SQL
๋ณต์ฌ
โข
CURRENT_DATE() , CURDATE() : ํ์ฌ ๋ ์ง ๋ฐํ
โข
CURRENT_TIEM() , CURTIME() : ํ์ฌ ์๊ฐ ๋ฐํ
โข
CURRENT_TIMESTAMP() , SYSDATE() , NOW() : ํ์ฌ ์๊ฐ๊ณผ ๋ ์ง ๋ฐํ
SELECT
'2021-6-1' = '2021-06-01',
DATE('2021-6-1') = DATE('2021-06-01'),
'1:2:3' = '01:02:03',
TIME('1:2:3') = TIME('01:02:03');
SQL
๋ณต์ฌ
โข
DATE(โyyyy-MM-ddโ) : ๋ฌธ์์ด์ ๋ฐ๋ผ ๋ ์ง ์์ฑ
โข
TIME(โhh:mm:ssโ) : ๋ฌธ์์ด์ ๋ฐ๋ผ ์๊ฐ ์์ฑ
SELECT
OrderDate,
YEAR(OrderDate) AS YEAR,
MONTHNAME(OrderDate) AS MONTHNAME,
MONTH(OrderDate) AS MONTH,
WEEKDAY(OrderDate) AS WEEKDAY,
DAYNAME(OrderDate) AS DAYNAME,
DAY(OrderDate) AS DAY
FROM Orders;
SQL
๋ณต์ฌ
โข
YEAR : ์ฃผ์ด์ง DATETIME๊ฐ์ ๋
๋ ๋ฐํ
โข
MONTHNAME : ์ฃผ์ด์ง DATETIME๊ฐ์ ์(์๋ฌธ) ๋ฐํ
โข
MONTH : ์ฃผ์ด์ง DATETIME๊ฐ์ ์ ๋ฐํ
โข
WEEKDAY : ์ฃผ์ด์ง DATETIME๊ฐ์ ์์ผ๊ฐ ๋ฐํ (์์์ผ : 0)
โข
DAYNAME : ์ฃผ์ด์ง DATETIME๊ฐ์ ์์ผ๋ช
๋ฐํ
โข
DAYOFMONTH, DAY : ์ฃผ์ด์ง DATETIME๊ฐ์ ๋ ์ง(์ผ) ๋ฐํ
SELECT
HOUR(NOW()), MINUTE(NOW()), SECOND(NOW());
SQL
๋ณต์ฌ
โข
HOUR : ์ฃผ์ด์ง DATETIME์ ์ ๋ฐํ
โข
MINUTE : ์ฃผ์ด์ง DATETIME์ ๋ถ ๋ฐํ
โข
SECOND : ์ฃผ์ด์ง DATETIME์ ์ด ๋ฐํ
SELECT
ADDDATE('2021-06-20', INTERVAL 1 YEAR),
ADDDATE('2021-06-20', INTERVAL -2 MONTH),
ADDDATE('2021-06-20', INTERVAL 3 WEEK),
ADDDATE('2021-06-20', INTERVAL -4 DAY),
ADDDATE('2021-06-20', INTERVAL -5 MINUTE),
ADDDATE('2021-06-20 13:01:12', INTERVAL 6 SECOND);
SQL
๋ณต์ฌ
โข
ADDDATE(โyyyy-MM-ddโ,ย INTERVALย nย YEAR) : ์๊ฐ/๋ ์ง ๋ํ๊ธฐ
โข
SUBDATE(โyyyy-MM-ddโ,ย INTERVALย nย YEAR) : ์๊ฐ/๋ ์ง ๋นผ๊ธฐ
SELECT
OrderDate,
NOW(),
DATEDIFF(OrderDate, NOW())
FROM Orders;
SQL
๋ณต์ฌ
โข
DATEDIFF(โyyyy-MM-ddโ, โyyyy-MM-ddโ) : ๋ ์๊ฐ/๋ ์ง ๊ฐ ์ผ์์ฐจ
โข
TIMEDIFF(โhh:mm:ssโ, โhh:mm:ssโ) : ๋ ์๊ฐ/๋ ์ง ๊ฐ ์๊ฐ์ฐจ
SELECT
OrderDate,
LAST_DAY(OrderDate),
DAY(LAST_DAY(OrderDate)),
DATEDIFF(LAST_DAY(OrderDate), OrderDate)
FROM Orders;
SQL
๋ณต์ฌ
โข
LAST_DAY(โyyyy-MM-ddโ) : ํด๋น ๋ฌ์ ๋ง์ง๋ง ๋ ์ง
SELECT
DATE_FORMAT(NOW(), '%M %D, %Y %T'),
DATE_FORMAT(NOW(), '%y-%m-%d %h:%i:%s %p'),
DATE_FORMAT(NOW(), '%Y๋
%m์ %d์ผ %p %h์ %i๋ถ %s์ด');
SQL
๋ณต์ฌ
โข
%Y : ๋
๋ 4์๋ฆฌ
โข
%y : ๋
๋ 2์๋ฆฌ
โข
%M : ์ ์๋ฌธ
โข
%m : ์ ์ซ์
โข
%D : ์ผ ์๋ฌธ(1st, 2nd, 3rd โฆ)
โข
%d, %e : ์ผ ์ซ์(01~31)
โข
%T : hh:mm:ss
โข
%r : hh:mm:ss AM/PM
โข
%H, %k : ์(~23)
โข
%h, %l : ์(~12)
โข
%i : ๋ถ
โข
%S, %s : ์ด
โข
%p : AM/PM
SELECT
DATEDIFF(
STR_TO_DATE('2021-06-04 07:48:52', '%Y-%m-%d %T'),
STR_TO_DATE('2021-06-01 12:30:05', '%Y-%m-%d %T')
),
TIMEDIFF(
STR_TO_DATE('2021-06-04 07:48:52', '%Y-%m-%d %T'),
STR_TO_DATE('2021-06-01 12:30:05', '%Y-%m-%d %T')
);
SQL
๋ณต์ฌ
โข
STR_TO_DATE(S, F) : S๋ฅผ Fํ์์ผ๋ก ํด์ํ์ฌ ์๊ฐ/๋ ์ง ์์ฑ
๊ธฐํ ํจ์
SELECT IF (1 > 2, '1๋ 2๋ณด๋ค ํฌ๋ค.', '1์ 2๋ณด๋ค ์๋ค.');
SQL
๋ณต์ฌ
โข
IF(์กฐ๊ฑด, T, F) : ์กฐ๊ฑด์ด ์ฐธ์ด๋ผ๋ฉด T, ๊ฑฐ์ง์ด๋ฉด F ๋ฐํ
SELECT
IFNULL('A', 'B'),
IFNULL(NULL, 'B');
SQL
๋ณต์ฌ
โข
IFNULL(A, B) : A๊ฐ NULL์ด ์๋๋ฉด A ๋ฐํ, NULL์ผ ์ B ๋ฐํ
SELECT
NULLIF('A', 'B');
SQL
๋ณต์ฌ
โข
NULLIF(A, B) : A์ B๊ฐ ๊ฐ์ผ๋ฉด NULL ๋ฐํ, ๊ฐ์ง ์์ผ๋ฉด A ๋ฐํ
SELECT
CASE
WHEN -1 > 0 THEN '-1์ ์์๋ค.'
WHEN -1 = 0 THEN '-1์ 0์ด๋ค.'
ELSE '-1์ ์์๋ค.'
END;
SQL
๋ณต์ฌ
โข
CASE
โฆ
WHEN [์กฐ๊ฑด] THEN [์ฐธ์ผ ๋ ๊ฒฐ๊ณผ]
โฆ
ELSE [๊ฑฐ์ง์ผ ๋ ๊ฒฐ๊ณผ]
โข
END