SQL ํจ์๋?(์ค์ต) SQL ํจ์(์ค์ต) SUBSTR(์ปฌ๋ผ, START, LENTH) : ์ฌ๋ผ์ด์ฑ(์ค์ต) ๋ฌธ์ (์ค์ต) ๋ ์ง(์ค์ต) ํต๊ณ(์ค์ต ์ํจ) ๋ฌธ์์ด ๋ณํ(์ค์ต) ๋ฌธ์ ํ์ด
SQL ํจ์๋?
๋ฏธ๋ฆฌ ์ ์๋ ๊ธฐ๋ฅ ๋ชจ์, ๋จ์ผ ํ ํจ์์ ๊ทธ๋ฃน ํจ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ํจ์๋ฅผ ๋์ดํ ๊ฒ์ ์๋์ง๋ง, ์ ์ฒด์ ์ผ๋ก ์ด๋ค ๊ธฐ๋ฅ๋ค์ด ๊ตฌํ๋์ด ์๋์ง ๋ณด๊ธฐ์๋ ์์ํ ๊ฒ์
๋๋ค.
๋ฐ์ดํฐ ํ์
ํจ์
- ๋ฌธ์ : CHAR(๊ฐ) : ๋ฌธ์ ํ์ ์ง์ 2000๋ฐ์ดํธ
- ๋ฌธ์ : VARCHAR2(๊ฐ) : ๋ฌธ์ ํ์ ์ง์ 4000๋ฐ์ดํธ
- ์ซ์ : Oracle์์๋ NUMBER(์ ์ ์๋ฆฟ์, ์์ ์๋ฆฟ์), MySQL์ INT์ฌ์ฉ
- ๋ ์ง : DATE()
- ์๊ฐ : TIME()
๋ฌธ์์ด ์ฒ๋ฆฌ
- CONCAT('abc', 'def') โ 'abcdef' : ๋ฌธ์์ด์ ์ฐ๊ฒฐํฉ๋๋ค.
- LOWER('ABC') โ 'abc'
- UPPER('abc') โ 'ABC'
- INITCAP('abc') โ 'Abc' : ์๋ฌธ์๋ง ๋๋ฌธ์
- SUBSTR('hello world', 1, 5) โ 'hello' : ๋ฌธ์์ด์ ์๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. ์ซ์๋ ์์์์น, ์๋ฅผ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ํ๋ ๋๋ค.
- REPLACE('hello world', 'world', 'SQL') โ 'hello SQL' : ๋ฐ๊พธ๊ณ ์ถ์ ๊ฐ์ผ๋ก ๋์ ๊ฐ์ ๊ต์ฒดํฉ๋๋ค.
- LENGTH('hello') โ 5 : ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํฉ๋๋ค. COUNT์ ๋น๊ตํด์ ๊ธฐ์ตํด์ฃผ์ธ์.
- COUNT : ํ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
- INSTR('ABCDEF', 'B') โ 2 : ๋ฌธ์์ด์ ์์น๋ฅผ ๊ตฌํฉ๋๋ค. ์ฌ๊ธฐ์ INDEX๋ 1๋ถํฐ ์์ํฉ๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ 0๋ถํฐ ์์ํ๋, ์ด ์ฐจ์ด๋ฅผ ๊ผญ ๊ธฐ์ตํด๋์ธ์.
- ROUND(๋ฐ์ฌ๋ฆผํ ์ซ์, ์๋ฆฟ์) : ์ซ์๋ฅผ ๋ฐ์ฌ๋ฆผ, 0์ด ์์ซ์ ์ฒซ์งธ์๋ฆฌ
- TRUNC(์ ์ญํ ์ซ์, ์๋ฆฟ์) : ์ซ์๋ฅผ ์ ์ญ, 0์ด ์์ซ์ ์ฒซ์งธ์๋ฆฌ
- MOD(์, ๋๋๋ ๊ฐ) : ๋๋จธ์ง
- POWER(์, ์น์) : ์ ๊ณฑ ์ถ๋ ฅ
- SQRT : ์ ๊ณฑ๊ทผ ์ถ๋ ฅ
(์ค์ต) SQL ํจ์
AS๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋์ผํ๊ฒ ์ถ๋ ฅํฉ๋๋ค. ๋๋ฌธ์์ ์๋ฌธ์๋ก ๋ฐ๊พธ์ด ๋ณด์์ด์.
(์ค์ต) SUBSTR(์ปฌ๋ผ, START, LENTH) : ์ฌ๋ผ์ด์ฑ
SELECT SUBSTR('hello world', 1, 5);
(์ค์ต) ๋ฌธ์
- ์ด๋ฆ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํด์ฃผ์ธ์.
- ์ด๋ฆ์ ์ 5์๋ฆฌ๋ฅผ *๋ก ์ฒ๋ฆฌํด์ฃผ์ธ์.
SELECT CustomerID, CustomerName, LENGTH(CustomerName) AS ์ด๋ฆ๊ธธ์ด, SUBSTR(CustomerName, 6) AS ์๋ฅธ์ด๋ฆ, REPLACE(CustomerName, SUBSTR(CustomerName, 0, 6), '******') AS ๋ณํ์ฑ์ด์ด๋ฆ FROM Customers;
์ฌ๊ธฐ์ ์ฌ์ฉํ SUBSTR ๊ฐ์ ๊ฒฝ์ฐ
- Oracle์ SUBSTR, SUBSTRB
- MsSQL์ SUBSTRING
- MySQL์ SUBSTRING, SUBSTR, MID
์ ์ฌ์ฉํฉ๋๋ค.
(์ค์ต) ๋ ์ง
๋ ์ง์ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ํด์ง๋์ง ํ์ธํด๋ณด์ธ์.
SELECT DATE();
SELECT DATE() + 10;
SELECT TIME() + 10;
(์ค์ต) ํต๊ณ
ํต๊ณ๊ด๋ จ๋ ํจ์๋ฅผ ์ค์ตํด๋ด
๋๋ค. ํ๋์ฉ ์ฌ์ฉํด๋ณด์ธ์. ๋ณดํต์ ๋ถ์ฐ๊ณผ ํ์คํธ์ฐจ ํจ์๋ ์ ๊ณตํฉ๋๋ค. W3School์์๋ ๋ถ์ฐ๊ณผ ํ์คํธ์ฐจ๊ฐ ์๋ํ์ง ์์ต๋๋ค.
SELECT MAX(CustomerID) AS ์ต๋๊ฐ FROM Customers; SELECT SUM(CustomerID) AS ์ ์ฒดํฉ FROM Customers; SELECT MIN(CustomerID) AS ์ต์๊ฐ FROM Customers; SELECT COUNT(CustomerID) AS ์ ์ฒดํ์์ FROM Customers; SELECT AVG(CustomerID) AS ํ๊ท FROM Customers;
(์ค์ต ์ํจ) ๋ฌธ์์ด ๋ณํ
์ค์ต์ ์ํ์ง๋ง ํด๋นํจ์๋ ๊ฐํน SQL Injection ๊ณต๊ฒฉ์ ์ฌ์ฉ๋๊ณคํ๋, ํน์ ์ ๋ณด๋ณด์์ ๊ณต๋ถํ๋ ํ์์ด๋ผ๋ฉด ๊ธฐ์ตํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
SELECT CHAR(65) || CHAR(65)); SELECT CONCAT(CHAR(65), CHAR(65)); SELECT ASCII('A');
ย
(์ค์ต) ๋ฌธ์ ํ์ด
SELECT * FROM Products;
- ์ ์ฒด ์ ํ์ ๊ฐ์๋ฅผ ๊ตฌํด์ฃผ์ธ์.
/* SELECT COUNT(ProductID) FROM Products; */ SELECT COUNT(*) FROM Products;
์๋ 1๋ฒ ์ฟผ๋ฆฌ์ฒ๋ผ ๊ตฌ๋ฌธ์ ์์ฑํ์๋ฉด ์๋ฉ๋๋ค. ์ด์ ๋ ์๋ ์ฝ๋๋ฅผ ์คํํด๋ณด์๋ฉด ์ ์ ์์ต๋๋ค.
INSERT INTO Products (Price) VALUES ('500');
SELECT COUNT(ProductName) FROM Products;
- ๊ฐ์ ํ๊ท ์ ๊ตฌํด์ฃผ์ธ์.(ํจ์๋ฅผ ์ฌ์ฉํด์ฃผ์ธ์.)
SELECT AVG(Price) FROM Products;
- ์ ํ ์ด๋ฆ์ด 'A'๋ก ์์ํ๋ฉด์ ๊ฐ๊ฒฉ์ด ํ๊ท ์ด์์ธ ์ ํ์ ๊ตฌํด์ฃผ์ธ์. ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด ์ ๋ฌ๊ฐ ๋ฐ์๋ฉ๋๋ค. ์ด์ ๋ฅผ ์ค๋ช ํ๊ณ , ์ฝ๋๋ฅผ ์์ฑํ์ธ์.
/* SELECT * FROM Products WHERE ProductName LIKE 'A%' AND Price > AVG(Price); */
ย
ย