reference: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ๋ก 2ํ
01 SQL์ ์๊ฐ
01-1 ์๋ฏธ
- ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ํ ํ์ค ์ง์์ด
- ๋น์ ์ฐจ์ ๋ฐ์ดํฐ ์ธ์ด
01-2 ๋ฐ์ ์ญ์ฌ
- SEQUEL(Structured English QUEry Language)์์ ์ ๋
- SEQUEL : ์ฐ๊ตฌ์ฉ ๊ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ธ SYSTEM R์ ์ํ ์ธ์ด
- ๋ฏธ๊ตญ ํ์ค ์ฐ๊ตฌ์์ธ ANSI์ ๊ตญ์ ํ์คํ ๊ธฐ๊ตฌ์ธ ISO์์ ํ์คํ ์์ ์ ์งํ, ๊ณ์ ์์ ๋ฐ ๋ณด์๋๊ณ ์์
01-3 ์ฌ์ฉ ๋ฐฉ์
- ๋ํ์ SQL : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS - ์์ ์์๋ mssql)์ ์ง์ ์ ๊ทผํด ์ง์๋ฅผ ์์ฑํ์ฌ ์คํ
- ์ฝ์ SQL : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฝ์
01-4. ๋ถ๋ฅ

๋ฐ์ดํฐ ์ ์์ด(DDL): ํ ์ด๋ธ์ ์์ฑํ๊ณ ๋ณ๊ฒฝ, ์ ๊ฑฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
๋ฐ์ดํฐ ์กฐ์์ด(DML): ํ ์ด๋ธ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ฑฐ๋, ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์์ , ์ญ์ ,๊ฒ์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
๋ฐ์ดํฐ ์ ์ด์ด(DCL): ๋ณด์์ ์ํด ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ๋ฐ ์ฌ์ฉ ๊ถํ์ ์ฌ์ฉ์๋ณ๋ก ๋ถ์ฌํ๊ฑฐ๋ ์ทจ์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
02 SQL์ ์ด์ฉํ ๋ฐ์ดํฐ ์ ์
02-1. ํ ์ด๋ธ ์์ฑ
CREATE TABLE ํ
์ด๋ธ์ด๋ฆ (
โ ์์ฑ์ด๋ฆ ๋ฐ์ดํฐํ์
[NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ]
โก [PRIMARY KEY (์์ฑ๋ฆฌ์คํธ)]
โข [UNIQUE (์์ฑ๋ฆฌ์คํธ)]
โฃ [FOREIGN KEY (์์ฑ๋ฆฌ์คํธ) REFERENCES ํ
์ด๋ธ์ด๋ฆ(์์ฑ๋ฆฌ์คํธ)] [ON DELETE ์ต์
ฅ] [ON UPDATE ์ต์
]
โค [CONSTRAIN ์ด๋ฆ] [CHECK(์กฐ๊ฑด)]
)
CREATE TABLE ๋ฌธ
- [ ]์ ๋ด์ฉ์ ์๋ต์ด ๊ฐ๋ฅ
- SQL ์ง์๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก (;)์ผ๋ก ๋ฌธ์ฅ์ ๋์ ํ์
- SQL ์ง์๋ฌธ์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์
- โ : ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ๊ฐ ์์ฑ์ ์ด๋ฆ, ๋ฐ์ดํฐ ํ์ , ๊ธฐ๋ณธ ์ ์ฝ ์ฌํญ ์ ์
- โก : ๊ธฐ๋ณธํค ์ ์
- โข : ๋์ฒดํค ์ ์
- โฃ : ์ธ๋ํค ์ ์
- โค : ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ํ ์ ์ฝ์กฐ๊ฑด ์ ์
์์ฑ์ ์ ์
- ํ ์ด๋ธ์ ๊ตฌ์ฑํ๋ ๊ฐ ์์ฑ์ ๋ฐ์ดํฐ ํ์ ์ ์ ํํ ๋ค์ ๋ ๊ฐ ํ์ฉ ์ฌ๋ถ์ ๊ธฐ๋ณธ ๊ฐ ํ์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์
- NOT NULL
- ์์ฑ์ด ๋ ๊ฐ์ ํ์ฉํ์ง ์์์ ์๋ฏธํ๋ ํค์๋
- ์) ๊ณ ๊ฐ์์ด๋ VARCHAR(20) NOT NULL
- DEFAULT
- ์์ฑ์ ๊ธฐ๋ณธ ๊ฐ์ ์ง์ ํ๋ ํค์๋
- ์) ์ ๋ฆฝ๊ธ INT DEFAULT 0
- ์) ๋ด๋น์ VARCHAR(10) DEFAULT '๋ฐฉ๊ฒฝ์'
- ๋ฌธ์์ด์ด๋ ๋ ์ง ๋ฐ์ดํฐ๋ ์์ ๋ฐ์ดํ๋ก ๋ฌถ์ด์ ํํ (์์ ๋ฐ์ดํ๋ก ๋ฌถ์ฌ์ง ๋ฌธ์์ด์ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํจ)
์์ฑ์ ๋ฐ์ดํฐ ํ์
ํค์ ์ ์
- PRIMARY KEY
- ๊ธฐ๋ณธํค๋ฅผ ์ง์ ํ๋ ํค์๋
- ์) PRIMARY KEY(๊ณ ๊ฐ์์ด๋)
- ์) PRIMARY KEY(์ฃผ๋ฌธ๊ณ ๊ฐ, ์ฃผ๋ฌธ์ ํ)
- UNIQUE
- ๋์ฒดํค๋ฅผ ์ง์ ํ๋ ํค์๋
- ๋์ฒดํค๋ก ์ง์ ๋๋ ์์ฑ์ ๊ฐ์ ์ ์ผ์ฑ์ ๊ฐ์ง๋ฉฐ ๊ธฐ๋ณธํค์ ๋ฌ๋ฆฌ ๋ ๊ฐ์ด ํ์ฉ๋จ
- ์) UNIQUE(๊ณ ๊ฐ์ด๋ฆ)
- FOREIGN KEY
- ์ธ๋ํค๋ฅผ ์ง์ ํ๋ ํค์๋
- ์ธ๋ํค๊ฐ ์ด๋ค ํ ์ด๋ธ์ ๋ฌด์จ ์์ฑ์ ์ฐธ์กฐํ๋์ง REFERENCES ํค์๋ ๋ค์์ ์ ์
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ์ ์ง๋ฅผ ์ํด ์ฐธ์กฐ๋๋ ํ
์ด๋ธ์์ ํฌํ ์ญ์ ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ์ต์
- ON DELETE CASCADE: ๊ด๋ จ ํฌํ์ ํจ๊ป ์ญ์ ํจ
- ON DELETE SET DEFAULT: ๊ด๋ จ ํฌํ์ ์ธ๋ํค ๊ฐ์ ๋ฏธ๋ฆฌ ์ง์ ํ ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํจ
- ON DELETE SET NULL: ๊ด๋ จ ํฌํ์ ์ธ๋ํค ๊ฐ์ NULL๋ก ๋ณ๊ฒฝํจ
- ON DELETE NO ACTION: ํฌํ์ ์ญ์ ํ์ง ๋ชปํ๊ฒ ํจ
- ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ์ ์ง๋ฅผ ์ํด ์ฐธ์กฐ๋๋ ํ
์ด๋ธ์์ ํฌํ ๋ณ๊ฒฝ ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์ ํ๋ ์ต์
- ON UPDATE CASCADE : ๊ด๋ จ ํฌํ์์ ์ธ๋ํค ๊ฐ์ ํจ๊ป ๋ณ๊ฒฝํจ
- ON UPDATE SET DEFAULT : ๊ด๋ จ ํฌํ์ ์ธ๋ํค ๊ฐ์ ๋ฏธ๋ฆฌ ์ง์ ํ ๊ธฐ๋ณธ ๊ฐ์ผ๋ก ๋ณ๊ฒฝํจ
- ON UPDATE SET NULL : ๊ด๋ จ ํฌํ์ ์ธ๋ํค ๊ฐ์ NULL๋ก ๋ณ๊ฒฝํจ
- ON UPDATE NO ACTION: ํฌํ์ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ํจ
- ์) FOREIGN KEY(์์๋ถ์) REFERENCES ๋ถ์(๋ถ์๋ฒํธ) ON DELETE CASCADE ON UPDATE CASCADE
- ์) FOREIGN KEY(์์๋ถ์) REFERENCES ๋ถ์(๋ถ์๋ฒํธ)
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ ์
- CHECK
- ํ ์ด๋ธ์ ์ ํํ๊ณ ์ ํจํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํ๊ธฐ ์ํด ํน์ ์์ฑ์ ๋ํ ์ ์ฝ์กฐ๊ฑด์ ์ง์
- CONSTRAINT ํค์๋์ ํจ๊ป ๊ณ ์ ์ ์ด๋ฆ์ ๋ถ์ฌํ ์๋ ์์
- ์) CHECK(์ฌ๊ณ ๋ >= 0 AND ์ฌ๊ณ ๋ <= 10000)
- ์) CONSTRAINT CHK_CPY CHECK(์ ์กฐ์ ์ฒด = โํ๋น์ ๊ณผโ)
02-2. ํ ์ด๋ธ ๋ณ๊ฒฝ
์๋ก์ด ์์ฑ ์ถ๊ฐ
ALTER TABLE table_name
ADD ์์ฑ์ด๋ฆ ๋ฐ์ดํฐํ์
[NOT NULL] [DEFAULT ๊ธฐ๋ณธ๊ฐ];
์์ : 'customer' ํ
์ด๋ธ์ '๊ฐ์
๋ ์ง' ์์ฑ์ ์ถ๊ฐํด๋ณด์
ALTER TABLE customer
ADD ๊ฐ์
๋ ์ง DATE;
๊ธฐ์กด ์์ฑ ์ญ์
ALTER TABLE table_name
DROP COLUMN ์์ฑ์ด๋ฆ;
๋ง์ฝ ์ญ์ ํ ์์ฑ๊ณผ ๊ด๋ จ๋ ์ ์ฝ ์กฐ๊ฑด์ด ์กด์ฌํ๋ค๋ฉด?
- ์์ฑ ์ญ์ ๊ฐ ์ํ๋์ง ์์
- ๊ด๋ จ๋ ์ ์ฝ ์กฐ๊ฑด์ ๋จผ์ ์ญ์ ํด์ผ ํจ
์์ : 'customer' ํ
์ด๋ธ์ '๊ฐ์
๋ ์ง' ์์ฑ์ ์ญ์ ํด๋ณด์
ALTER TABLE customer
DROP COLUMN ๊ฐ์
๋ ์ง;
์๋ก์ด ์ ์ฝ ์กฐ๊ฑด์ ์ถ๊ฐ
ALTER TABLE table_name
ADD CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ ์ ์ฝ์กฐ๊ฑด๋ด์ฉ;
์์ : 'customer' ํ
์ด๋ธ์ `20์ธ ์ด์์ ๊ณ ๊ฐ๋ง ๊ฐ์
ํ ์ ์๋ค`๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํด๋ณด์
ALTER TABLE customer
ADD CONSTRAINT check_age CHECK(20<=age);
๊ธฐ์กด ์ ์ฝ ์กฐ๊ฑด์ ์ญ์
ALTER TABLE table_name
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ;
์์ : 'customer' ํ
์ด๋ธ์์ ์์์ ์ถ๊ฐํ๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ์ญ์ ํด๋ณด์
ALTER TABLE customer
DROP CONSTRAINT check_age;
02-3. ํ ์ด๋ธ ์ญ์
DROP TABLE ํ
์ด๋ธ์ด๋ฆ;
๋ง์ฝ ์ญ์ ํ ํ ์ด๋ธ์ ์ฐธ์กฐํ๋ ํ ์ด๋ธ์ด ์๋ค๋ฉด?
- ํ ์ด๋ธ ์ญ์ ๊ฐ ์ํ๋์ง ์์.
- ๊ด๋ จ๋ ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ ๋จผ์ ์ญ์ ํด์ผ ํจ.
์์ : 'customer' ํ ์ด๋ธ์ ์ญ์ ํด๋ณด์
DROP TABLE customer;
03 SQL์ ์ด์ฉํ ๋ฐ์ดํฐ ์กฐ์
03-1 ๋ฐ์ดํฐ ๊ฒ์
๊ฒ์ ๊ฒฐ๊ณผ๋ ํ ์ด๋ธ ํํ๋ก ๋ฐํ๋๋ค.
SELECT [ ALL | DISTINCT ] ์์ฑ๋ฆฌ์คํธ
FROM ํ
์ด๋ธ๋ฆฌ์คํธ
[ WHERE ์กฐ๊ฑด ]
[ GROUP BY ์์ฑ๋ฆฌ์คํธ [ HAVING ์กฐ๊ฑด ] ]
[ ORDER BY ์์ฑ๋ฆฌ์คํธ [ ASC | DESC ] ];
ALL | DISTINCT
- ALL: ๊ฒฐ๊ณผ ํ ์ด๋ธ์ด ํฌํ์ ์ค๋ณต์ ํ์ฉํ๋๋ก ์ง์ , ์๋ต ๊ฐ๋ฅ
- DISTINCT: ๊ฒฐ๊ณผ ํ
์ด๋ธ์ด ํฌํ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋๋ก ์ง์
-
SELECT DISTINCT ์ ์กฐ์ ์ฒด FROM ์ ํ
-
- ๋ชจ๋ ์์ฑ์ ๊ฒ์ํ ๋๋ ๋ชจ๋ ์์ฑ์ ์ด๋ฆ์ ๋์ดํ์ง ์๊ณ * ์ฌ์ฉ ๊ฐ๋ฅ
-
SELECT * FROM ์ ํ
-
AS
AS ํค์๋๋ ์๋ต ๊ฐ๋ฅ
- ์๋ก์ด ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ํฌํจ๋์ด ์์ผ๋ฉด ํฐ๋ฐ์ดํ๋ ์์๋ฐ์ดํ๋ก ๋ฌถ์ด์ฃผ์ด์ผ ํจ
- ์ค๋ผํด์์๋ ํฐ๋ฐ์ดํ, MS SQL ์๋ฒ์์๋ ์์๋ฐ์ดํ ์ฌ์ฉ
- AS ํค์๋๋ฅผ ์ด์ฉํด ๊ฒฐ๊ณผ ํ ์ด๋ธ์์ ์์ฑ์ ์ด๋ฆ์ ๋ฐ๊พธ์ด ์ถ๋ ฅ ๊ฐ๋ฅ
-
SELECT ์ ํ๋ช , ๋จ๊ฐ AS ๊ฐ๊ฒฉ FROM ์ ํ
์ฐ์ ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ฐ์ ์: ์์ฑ์ ์ด๋ฆ๊ณผ +, -, *, / ๋ฑ์ ์ฐ์ ์ฐ์ฐ์์ ์์๋ก ๊ตฌ์ฑ
- ์์ฑ์ ๊ฐ์ด ์ค์ ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ์๋๊ณ ๊ฒฐ๊ณผ ํ ์ด๋ธ์์๋ง ๊ณ์ฐ๋ ๊ฒฐ๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋จ
-
SELECT ์ ํ๋ช , ๋จ๊ฐ + 500 AS "์กฐ์ ๋จ๊ฐ" FROM ์ ํ
WHERE ์กฐ๊ฑด ๊ฒ์
- ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๋ง ๊ฒ์
- WHERE ํค์๋์ ํจ๊ป ๋น๊ต ์ฐ์ฐ์์ ๋
ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ด์ฉํ ๊ฒ์ ์กฐ๊ฑด ์ ์
- ์ซ์๋ฟ๋ง ์๋๋ผ ๋ฌธ์๋ ๋ ์ง ๊ฐ์ ๋น๊ตํ๋ ๊ฒ๋ ๊ฐ๋ฅ
- ์) 'A' < 'C'
- ์) '2019-12-01' < '2019-12-02'
- ์กฐ๊ฑด์์ ๋ฌธ์๋ ๋ ์ง ๊ฐ์ ์์๋ฐ์ดํ๋ก ๋ฌถ์ด์ ํํ
- ๋น๊ต ์ฐ์ฐ์
- ๋ ผ๋ฆฌ ์ฐ์ฐ์
- LIKE
- NULL
- IS NULL ํค์๋๋ฅผ ์ด์ฉํด ํน์ ์์ฑ์ ๊ฐ์ด ๋ ๊ฐ์ธ์ง๋ฅผ ๋น๊ต
- IS NOT NULL ํค์๋๋ฅผ ์ด์ฉํด ํน์ ์์ฑ์ ๊ฐ์ด ๋ ๊ฐ์ด ์๋์ง๋ฅผ ๋น๊ต
- ๊ฒ์ ์กฐ๊ฑด์์ ๋ ๊ฐ์ ๋ค๋ฅธ ๊ฐ๊ณผ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋ชจ๋ ๊ฑฐ์ง์ด ๋จ
- ์ซ์๋ฟ๋ง ์๋๋ผ ๋ฌธ์๋ ๋ ์ง ๊ฐ์ ๋น๊ตํ๋ ๊ฒ๋ ๊ฐ๋ฅ
-
SELECT ์ ํ๋ช , ์ฌ๊ณ ๋, ๋จ๊ฐ FROM ์ ํ WHERE ์ ์กฐ์ ์ฒด = 'ํ๋น์ ๊ณผ'; SELECT ์ฃผ๋ฌธ์ ํ, ์๋, ์ฃผ๋ฌธ์ผ์ FROM ์ฃผ๋ฌธ WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'apple' AND ์๋ >= 15; SELECT ๊ณ ๊ฐ์ด๋ฆ, ๋์ด, ๋ฑ๊ธ, ์ ๋ฆฝ๊ธ FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ์ด๋ฆ LIKE '๊น%'; WHERE ๊ณ ๊ฐ์ด๋ฆ LIKE '_____'; SELECT ๊ณ ๊ฐ์ด๋ฆ FROM ๊ณ ๊ฐ WHERE ๋์ด IS NULL; WHERE ๋์ด IS NOT NULL;
ORDER BY ์ ๋ ฌ ๊ฒ์
- ORDER BY ํค์๋๋ฅผ ์ด์ฉํด ๊ฒฐ๊ณผ ํ ์ด๋ธ ๋ด์ฉ์ ์ฌ์ฉ์๊ฐ ์ํ๋ ์์๋ก ์ถ๋ ฅ
- ORDER BY ํค์๋์ ํจ๊ป ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ์์ฑ๊ณผ ์ ๋ ฌ ๋ฐฉ์์ ์ง์
- ์ค๋ฆ์ฐจ์(๊ธฐ๋ณธ): ASC / ๋ด๋ฆผ์ฐจ์: DESC
- ๋ ๊ฐ์ ์ค๋ฆ์ฐจ์์์๋ ๋งจ ๋ง์ง๋ง์ ์ถ๋ ฅ๋๊ณ , ๋ด๋ฆผ์ฐจ์์์๋ ๋งจ ๋จผ์ ์ถ๋ ฅ๋จ
- ์ฌ๋ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ค๋ฉด ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ์์ฑ์ ์ฐจ๋ก๋๋ก ์ ์
-
SELECT ๊ณ ๊ฐ์ด๋ฆ, ๋ฑ๊ธ, ๋์ด FROM ๊ณ ๊ฐ ORDER BY ๋์ด DESC;
์ง๊ณ ํจ์ (aggregate function)
- ํน์ ์์ฑ ๊ฐ์ ํต๊ณ์ ์ผ๋ก ๊ณ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํ๊ธฐ ์ํด ์ง๊ณ ํจ์๋ฅผ ์ด์ฉ
- ์ง๊ณ ํจ์: ์ด ํจ์(column function)๋ผ๊ณ ๋ ํจ. ๊ฐ์, ํฉ๊ณ, ํ๊ท , ์ต๋๊ฐ, ์ต์๊ฐ์ ๊ณ์ฐ ๊ธฐ๋ฅ์ ์ ๊ณต
- ์ง๊ณ ํจ์ ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ
- ์ง๊ณ ํจ์๋ ๋์ธ ์์ฑ ๊ฐ์ ์ ์ธํ๊ณ ๊ณ์ฐํจ
- ์ง๊ณ ํจ์๋ WHERE ์ ์์๋ ์ฌ์ฉํ ์ ์๊ณ , SELECT ์ ์ด๋ HAVING ์ ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ

-
SELECT COUNT(๋์ด) AS ๊ณ ๊ฐ์ FROM ๊ณ ๊ฐ; SELECT COUNT(*) AS ๊ณ ๊ฐ์ FROM ๊ณ ๊ฐ; -- ์ ํํ ๊ฐ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ๋ณดํต ๊ธฐ๋ณธํค ์์ฑ์ด๋ *๋ฅผ ์ฃผ๋ก ์ด์ฉ SELECT COUNT(DISTINCT ์ ์กฐ์ ์ฒด) AS "์ ์กฐ์ ์ฒด ์" FROM ์ ํ; -- DISTINCT ํค์๋๋ฅผ ์ด์ฉํด ์ค๋ณต์ ์์ ๊ณ ์๋ก ๋ค๋ฅธ ์ ์กฐ์ ์ฒด์ ๊ฐ์๋ง ๊ณ์ฐ
GROUP BY ๊ทธ๋ฃน๋ณ ๊ฒ์
- GROUP BY ํค์๋๋ฅผ ์ด์ฉํด ํน์ ์์ฑ์ ๊ฐ์ด ๊ฐ์ ํฌํ์ ๋ชจ์ ๊ทธ๋ฃน์ ๋ง๋ค๊ณ , ๊ทธ๋ฃน๋ณ๋ก ๊ฒ์
- GROUP BY ํค์๋์ ํจ๊ป ๊ทธ๋ฃน์ ๋๋๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ์ ์ง์
- HAVING ํค์๋๋ฅผ ํจ๊ป ์ด์ฉํด ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด์ ์์ฑ
- ๊ทธ๋ฃน์ ๋๋๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ์ SELECT ์ ์๋ ์์ฑํ๋ ๊ฒ์ด ์ข์
- ์ง๊ณ ํจ์๋ GROUP BY ์ ์ ๋ช ์๋ ์์ฑ ์ธ์ ์์ฑ์ SELECT ์ ์ ์์ฑ ๋ถ๊ฐ
-
Q. ์ ํ ํ ์ด๋ธ์์ ์ ํ์ 3๊ฐ ์ด์ ์ ์กฐํ ์ ์กฐ์ ์ฒด๋ณ๋ก ์ ํ์ ๊ฐ์์, ์ ํ ์ค ๊ฐ์ฅ ๋น์ผ ๋จ๊ฐ๋ฅผ ๊ฒ์ SELECT ์ ์กฐ์ ์ฒด, COUNT(*) AS ์ ํ์, MAX(๋จ๊ฐ) AS ์ต๊ณ ๊ฐ FROM ์ ํ GROUP BY ์ ์กฐ์ ์ฒด HAVING COUNT(*) >= 3; -- ์ง๊ณ ํจ์๋ฅผ ์ด์ฉํ ์กฐ๊ฑด์ WHERE ์ ์๋ ์์ฑํ ์ ์๊ณ HAVING ์ ์์ ์์ฑ
์ฌ๋ฌ ํ ์ด๋ธ์ ๋ํ ์กฐ์ธ ๊ฒ์
- ์กฐ์ธ ๊ฒ์: ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ๊ฒ
- ์กฐ์ธ ์์ฑ: ์กฐ์ธ ๊ฒ์์ ์ํด ํ
์ด๋ธ์ ์ฐ๊ฒฐํด์ฃผ๋ ์์ฑ
- ์ฐ๊ฒฐํ๋ ค๋ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ ์์ฑ์ ์ด๋ฆ์ ๋ฌ๋ผ๋ ๋์ง๋ง ๋๋ฉ์ธ์ ๊ฐ์์ผ ํจ
- ์ผ๋ฐ์ ์ผ๋ก ์ธ๋ํค๋ฅผ ์กฐ์ธ ์์ฑ์ผ๋ก ์ด์ฉํจ
- FROM ์ ์ ๊ฒ์์ ํ์ํ ๋ชจ๋ ํ ์ด๋ธ์ ๋์ด
- WHERE ์ ์ ์กฐ์ธ ์์ฑ์ ๊ฐ์ด ๊ฐ์์ผ ํจ์ ์๋ฏธํ๋ ์กฐ์ธ ์กฐ๊ฑด์ ์ ์
- ๊ฐ์ ์ด๋ฆ์ ์์ฑ์ด ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ ์กด์ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฑ ์ด๋ฆ ์์ ํด๋น ์์ฑ์ด ์์๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ํ์ ์) ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ
SELECT ์ฃผ๋ฌธ์ ํ, ์ฃผ๋ฌธ์ผ์ -- ์ด๋ฆ์ด ๊ฐ์ ์์ฑ์ด ์๋ค๋ฉด ํ
์ด๋ธ ์ด๋ฆ ์์ด ์์ฑ ์ด๋ฆ์ผ๋ก๋ง ์์ฑํด๋ ๋จ
FROM ์ ํ p , ์ฃผ๋ฌธ o
WHERE o.์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana' AND o.์ ํ๋ฒํธ = p.์ฃผ๋ฌธ์ ํ;
-- ํ
์ด๋ธ์ ์ด๋ฆ์ ๋์ ํ๋ ๋จ์ํ ๋ณ๋ช
์ ์ ์ํ์ฌ ์ง์๋ฌธ์ ์์ฑํ๋ ๊ฒ๋ ์ข๋ค.
-- ์ฌ๋ฌ ํ
์ด๋ธ์ ๋ํ ์กฐ์ธ ๊ฒ์
SELECT ์ ํ, ์ ํ๋ช
FROM ๊ณ ๊ฐ, ์ ํ , ์ฃผ๋ฌธ
WHERE ๊ณ ๊ฐ.๊ณ ๊ฐ์ด๋ฆ = '๊ณ ๋ช
์' AND ๊ณ ๊ฐ.๊ณ ๊ฐ์์ด๋ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ AND ์ ํ.์ ํ๋ฒํธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ ํ;
๋ถ์ ์ง์๋ฌธ์ ์ด์ฉํ ๊ฒ์
- SELECT ๋ฌธ ์์ ๋ ๋ค๋ฅธ SELECT ๋ฌธ์ ํฌํจํ๋ ์ง์
- ์์ ์ง์๋ฌธ(์ฃผ ์ง์๋ฌธ): ๋ค๋ฅธ SELECT ๋ฌธ์ ํฌํจํ๋ SELECT ๋ฌธ
- ๋ถ์ ์ง์๋ฌธ(์๋ธ ์ง์๋ฌธ): ๋ค๋ฅธ SELECT ๋ฌธ ์์ ๋ค์ด ์๋ SELECT ๋ฌธ
- ๊ดํธ๋ก ๋ฌถ์ด์ ์์ฑ, ORDER BY ์ ์ ์ฌ์ฉํ ์ ์์
- ๋จ์ผ ํ ๋ถ์ ์ง์๋ฌธ: ํ๋์ ํ์ ๊ฒฐ๊ณผ๋ก ๋ฐํ
- ๋ค์ค ํ ๋ถ์ ์ง์๋ฌธ: ํ๋ ์ด์์ ํ์ ๊ฒฐ๊ณผ๋ก ๋ฐํ
- ๋ถ์ ์ง์๋ฌธ์ ๋จผ์ ์ํํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ด์ฉํด ์์ ์ง์๋ฌธ์ ์ํ
- ๋ถ์ ์ง์๋ฌธ๊ณผ ์์ ์ง์๋ฌธ์ ์ฐ๊ฒฐํ๋ ์ฐ์ฐ์๊ฐ ํ์
- ๋จ์ผ ํ ๋ถ์ ์ง์๋ฌธ์ ๋น๊ต ์ฐ์ฐ์(=, <>, >, >=, <, <=) ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ค์ค ํ ๋ถ์ ์ง์๋ฌธ์ ๋น๊ต ์ฐ์ฐ์ ์ฌ์ฉ ๋ถ๊ฐ, ๋ค์ค ํ ๋ถ์ ์ง์๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ฐ์ฐ์
-
-- ์ต๋ ์ ๋ฆฝ๊ธ์ ๋จ์ผ ๊ฐ์ด๋ฏ๋ก ๋จ์ผ ํ ๋ถ์ ์ง์๋ฌธ (๋น๊ต ์ฐ์ฐ์ = ๋ฅผ ์ด์ฉ) SELECT ๊ณ ๊ฐ์ด๋ฆ, ์ ๋ฆฝ๊ธ FROM ๊ณ ๊ฐ WHERE ์ ๋ฆฝ๊ธ = (SELECT MAX(์ ๋ฆฝ๊ธ) FROM ๊ณ ๊ฐ); -- 'banana' ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ ์ ํ์ ์ฌ๋ฌ ๊ฐ์ด๋ฏ๋ก ๋ค์ค ํ ๋ถ์ ์ง์๋ฌธ (IN ์ฐ์ฐ์๋ฅผ ์ด์ฉ) SELECT ์ ํ๋ช , ์ ์กฐ์ ์ฒด FROM ์ ํ WHERE ์ ํ๋ฒํธ IN (SELECT ์ฃผ๋ฌธ๋ฒํธ FROM ์ฃผ๋ฌธ WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana');
-
1. ์กฐ์ธ ์ง์๋ฅผ ์ด์ฉํ select ๋ฌธ SELECT ์ ํ.์ ํ๋ช , ์ ํ.์ ์กฐ์ ์ฒด FROM ์ ํ, ์ฃผ๋ฌธ WHERE ์ ํ.์ ํ๋ฒํธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ ํ AND ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana'; 2. EXISTS ์ฐ์ฐ์๋ฅผ ์ด์ฉํ SELECT ๋ฌธ -- ์ฌ๊ธฐ์ exists๋ ๋ถ์ ์ง์๋ฌธ์์ table์ ํ๋๋ง ์. SELECT ์ ํ๋ช , ์ ์กฐ์ ์ฒด FROM ์ ํ WHERE EXISTS (SELECT * FROM ์ฃผ๋ฌธ WHERE ์ ํ.์ ํ๋ฒํธ = ์ฃผ๋ฌธ.์ฃผ๋ฌธ์ ํ AND ์ฃผ๋ฌธ.์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana'); 3. IN ์ฐ์ฐ์๋ฅผ ์ด์ฉํ SELECT ๋ฌธ SELECT ์ ํ๋ช , ์ ์กฐ์ ์ฒด FROM ์ ํ WHERE ์ ํ๋ฒํธ IN (SELECT ์ฃผ๋ฌธ์ ํ FROM ์ฃผ๋ฌธ WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ = 'banana');

03-2 ๋ฐ์ดํฐ ์ฝ์
1. ๋ฐ์ดํฐ ์ง์ ์ฝ์
INSERT
INTO ํ
์ด๋ธ์ด๋ฆ [(์์ฑ๋ฆฌ์คํธ)]
VALUES (์์ฑ๊ฐ๋ฆฌ์คํธ);
- INTO ํค์๋์ ํจ๊ป ํฌํ์ ์ฝ์
ํ ํ
์ด๋ธ์ ์ด๋ฆ๊ณผ ์์ฑ์ ์ด๋ฆ์ ๋์ด
- ์์ฑ ๋ฆฌ์คํธ๋ฅผ ์๋ตํ๋ฉด ํ ์ด๋ธ์ ์ ์ํ ๋ ์ง์ ํ ์์ฑ์ ์์๋๋ก ๊ฐ์ด ์ฝ์ ๋จ
- VALUES ํค์๋์ ํจ๊ป ์ฝ์ ํ ์์ฑ ๊ฐ๋ค์ ๋์ด
- INTO ์ ์ ์์ฑ ์ด๋ฆ๊ณผ VALUES ์ ์ ์์ฑ ๊ฐ์ ์์๋๋ก ์ผ๋์ผ ๋์๋์ด์ผ ํจ
INSERT
INTO ๊ณ ๊ฐ(๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด, ๋ฑ๊ธ, ์ง์
, ์ ๋ฆฝ๊ธ)
VALUES ('strawberry', '์ต์ ๊ฒฝ', 30, 'vip', '๊ณต๋ฌด์', 100)
INSERT -- ์์ ์ฟผ๋ฆฌ์ ๋์ผํจ.
INTO ๊ณ ๊ฐ
VALUES ('strawberry', '์ต์ ๊ฒฝ', 30, 'vip', '๊ณต๋ฌด์', 100)
INSERT -- ๋ฑ๊ธ์๋ null ์ ์ฅ๋จ
INTO ๊ณ ๊ฐ(๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด, ์ง์
, ์ ๋ฆฝ๊ธ)
VALUES ('strawberry', '์ต์ ๊ฒฝ', 30, '๊ณต๋ฌด์', 100)
INSERT -- ๋ฑ๊ธ์๋ null ์ ์ฅ๋จ
INTO ๊ณ ๊ฐ
VALUES ('strawberry', '์ต์ ๊ฒฝ', 30, NULL, '๊ณต๋ฌด์', 100)
2. ๋ถ์ ์ง์๋ฌธ์ ์ด์ฉํ ๋ฐ์ดํฐ ์ฝ์
SELECT ๋ฌธ์ ์ด์ฉํด ๋ค๋ฅธ ํ ์ด๋ธ์์ ๊ฒ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
INSERT
INTO ํ
์ด๋ธ์ด๋ฆ[(์์ฑ๋ฆฌ์คํธ)]
SELECT ๋ฌธ;
Q. ํ๋น์ ๊ณผ์์ ์ ์กฐํ ์ ํ์ ์ ํ๋ช
, ์ฌ๊ณ ๋, ๋จ๊ฐ๋ฅผ ์ ํ ํ
์ด๋ธ์์ ๊ฒ์ํ์ฌ ํ๋น์ ํ ํ
์ด๋ธ์ ์ฝ์
A.
INSERT
INTO ํ๋น์ ํ(์ ํ๋ช
, ์ฌ๊ณ ๋, ๋จ๊ฐ)
SELECT ์ ํ๋ช
, ์ฌ๊ณ ๋, ๋จ๊ฐ FROM ์ ํ WHERE ์ ์กฐ์
์ฒด='ํ๋น์ ๊ณผ'
03-3 ๋ฐ์ดํฐ ์์
ํ ์ด๋ธ์ ์ ์ฅ๋ ํฌํ์์ ํน์ ์์ฑ์ ๊ฐ์ ์์
UPDATE ํ
์ด๋ธ์ด๋ฆ
SET ์์ฑ์ด๋ฆ1=๊ฐ1, ์์ฑ์ด๋ฆ2=๊ฐ2, ...
[ WHERE ์กฐ๊ฑด ]
- SET ํค์๋ ๋ค์์ ์์ฑ ๊ฐ์ ์ด๋ป๊ฒ ์์ ํ ๊ฒ์ธ์ง๋ฅผ ์ง์
- WHERE ์ ์ ์ ์๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํฌํ์ ๋ํด์๋ง ์์ฑ ๊ฐ์ ์์
- WHERE ์ ์ ์๋ตํ๋ฉด ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ชจ๋ ํฌํ์ ๋์์ผ๋ก ์์
-- Q. ์ ํ ํ
์ด๋ธ์ ์๋ ๋ชจ๋ ์ ํ์ ๋จ๊ฐ๋ฅผ 10% ์ธ์
UPDATE ์ ํ
SET ๋จ๊ฐ = ๋จ๊ฐ * 1.1
-- Q. ์ ์ํ ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ ์ ํ์ ์ฃผ๋ฌธ์๋์ 5๊ฐ๋ก ์์ (๋ถ์ ์ง์๋ฌธ ์ฌ์ฉ)
UPDATE ์ ํ
SET ์๋ = 5
WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ IN (SLECT ๊ณ ๊ฐ์์ด๋ FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ์ด๋ฆ='์ ์ํ');
03-4 ๋ฐ์ดํฐ ์ญ์
ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์
DELETE
FROM ํ
์ด๋ธ์ด๋ฆ
[ WHERE ์กฐ๊ฑด ]
- WHERE ์ ์ ์ ์ํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํฌํ๋ง ์ญ์
- WHERE ์ ์ ์๋ตํ๋ฉด ํ ์ด๋ธ์ ์กด์ฌํ๋ ๋ชจ๋ ํฌํ์ ์ญ์ ํด ๋น ํ ์ด๋ธ์ด ๋จ ๋น ํ ์ด๋ธ์ด ๋จ์, DROP TABLE๊ณผ๋ ๋ค๋ฆ
-- ๋ถ์ ์ง์๋ฌธ์ ์ด์ฉํ DELETE ๋ฌธ
DELETE
FROM ์ฃผ๋ฌธ
WHERE ์ฃผ๋ฌธ๊ณ ๊ฐ IN (SELECT ๊ณ ๊ฐ์์ด๋ FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ์ด๋ฆ='์ ์ํ');
04 ๋ทฐ
04-1 ๋ทฐ๋?
- ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ฐ์ ํ ์ด๋ธ
- ๋ทฐ๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ค์ฌ๋ค ๋ณผ ์ ์๋ ์ฐฝ์ ์ญํ ์ ๋ด๋น
- ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ ์ฅํ์ง ์๊ณ ๋
ผ๋ฆฌ์ ์ผ๋ก๋ง ์กด์ฌํ๋ ํ
์ด๋ธ์ด์ง๋ง, ์ผ๋ฐ ํ
์ด๋ธ๊ณผ ๋์ผํ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ
- ๋ค๋ฅธ ๋ทฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ก์ด ๋ทฐ๋ฅผ ๋ง๋๋ ๊ฒ๋ ๊ฐ๋ฅํจ
- ๋ทฐ๋ฅผ ํตํด ๊ธฐ๋ณธ ํ
์ด๋ธ์ ๋ด์ฉ์ ์ฝ๊ฒ ๊ฒ์ํ ์๋ ์์ง๋ง, ๊ธฐ๋ณธ ํ
์ด๋ธ์ ๋ด์ฉ์ ๋ณํ์ํค๋ ์์
์ ์ ํ์ ์ผ๋ก ์ด๋ฃจ์ด์ง
- ๊ธฐ๋ณธ ํ ์ด๋ธ: ๋ทฐ๋ฅผ ๋ง๋๋๋ฐ ๊ธฐ๋ฐ์ด ๋๋ ๋ฌผ๋ฆฌ์ ์ธ ํ ์ด๋ธ
04-2 ๋ทฐ ๊ฒ์: CREATE VIEW ๋ฌธ
CREATE VIEW ๋ทฐ์ด๋ฆ[(์์ฑ๋ฆฌ์คํธ)]
AS SELECT ๋ฌธ
[ WITH CEHCK OPTION ]
- CREATE VIEW ํค์๋์ ํจ๊ป ์์ฑํ ๋ทฐ์ ์ด๋ฆ๊ณผ ๋ทฐ๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ ์ด๋ฆ์ ๋์ด
- ์์ฑ ๋ฆฌ์คํธ๋ฅผ ์๋ตํ๋ฉด SELECT ์ ์ ๋์ด๋ ์์ฑ์ ์ด๋ฆ์ ๊ทธ๋๋ก ์ฌ์ฉ
- AS ํค์๋์ ํจ๊ป ๊ธฐ๋ณธ ํ
์ด๋ธ์ ๋ํ SELECT ๋ฌธ ์์ฑ
- SELECT ๋ฌธ์ ์์ฑํ๋ ค๋ ๋ทฐ์ ์ ์๋ฅผ ํํํ๋ฉฐ ORDER BY๋ ์ฌ์ฉ ๋ถ๊ฐ
- WITH CHECK OPTION
- ๋ทฐ์ ์ฝ์ ์ด๋ ์์ ์ฐ์ฐ์ ํ ๋ SELECT ๋ฌธ์์ ์ ์ํ ๋ทฐ์ ์ ์ ์กฐ๊ฑด์ ์๋ฐํ๋ฉด ์ํ๋์ง ์๋๋ก ํ๋ ์ ์ฝ์กฐ๊ฑด์ ์ง์
Q. ๊ณ ๊ฐ ํ ์ด๋ธ์์ ๋ฑ๊ธ์ด vip์ธ ๊ณ ๊ฐ์ ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด๋ก ๊ตฌ์ฑ๋ ๋ทฐ๋ฅผ ์ฐ์๊ณ ๊ฐ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑํด๋ณด์. ๊ทธ๋ฐ ๋ค์ ์ฐ์๊ณ ๊ฐ ๋ทฐ์ ๋ชจ๋ ๋ด์ฉ์ ๊ฒ์ํด๋ณด์. CREATE VIEW ์ฐ์๊ณ ๊ฐ(๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด) AS SELECT ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด FROM ๊ณ ๊ฐ WHERE ๋ฑ๊ธ = 'vip' WITH CHECK OPTION; -- ์ญํ : ๋ฑ๊ธ์ด ์์. ์ฝ์ ์ ๋ฑ๊ธ์ด null๋ก ๋ค์ด๊ฐ์ ์๋๊ฒ ๋ง์. select * from ์ฐ์๊ณ ๊ฐ; -- ๋ง์ฝ ์ด๋ ๊ฒ ์์ฑ์ด ๋์์ ์, CREATE VIEW ์ฐ์๊ณ ๊ฐ(๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด, ๋ฑ๊ธ) AS SELECT ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์ด๋ฆ, ๋์ด, ๋ฑ๊ธ FROM ๊ณ ๊ฐ WHERE ๋ฑ๊ธ = 'vip' WITH CHECK OPTION; -- ์ญํ : ๋ฑ๊ธ์ด vip๊ฐ ์๋๋ฉด ์ฝ์ ์ด ์๋๋๋ก ๋ง์. Q. ์ ํ ํ ์ด๋ธ์์ ์ ์กฐ์ ์ฒด๋ณ ์ ํ์๋ก ๊ตฌ์ฑ๋ ๋ทฐ๋ฅผ ์ ์ฒด๋ณ์ ํ์๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ฑํด๋ณด์ CREATE VIEW ์ ์ฒด๋ณ์ ํ์(์ ์กฐ์ ์ฒด, ์ ํ์) AS SELECT ์ ์กฐ์ ์ฒด, COUNT(*) FROM ์ ํ GROUP BY ์ ์กฐ์ ์ฒด WITH CHECK OPTION;โ
04-3 ๋ทฐ ํ์ฉ: SELECT ๋ฌธ
- ๋ทฐ๋ ์ผ๋ฐ ํ
์ด๋ธ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์
- ๋ทฐ์ ๋ํ SELECT ๋ฌธ์ด ๋ด๋ถ์ ์ผ๋ก๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ํ SELECT ๋ฌธ์ผ๋ก ๋ณํ๋์ด ์ํ
- ๊ฒ์ ์ฐ์ฐ์ ๋ชจ๋ ๋ทฐ์ ์ํ ๊ฐ๋ฅ
04-4 ๋ทฐ ํ์ฉ : INSERT, UPDATE, DELETE ๋ฌธ
- ๋ทฐ์ ๋ํ ์ฝ์ , ์์ , ์ญ์ ์ฐ์ฐ์ ์ค์ ๋ก ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ํ๋๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ด ๋ณ๊ฒฝ๋จ
- ๋ทฐ์ ๋ํ ์ฝ์
, ์์ , ์ญ์ ์ฐ์ฐ์ ์ ํ์ ์ผ๋ก ์ํ๋จ
- ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ทฐ vs ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ทฐ
- ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๋ทฐ์ ํน์ง
- ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ๊ตฌ์ฑํ๋ ์์ฑ์ด ํฌํจ๋์ด ์์ง ์์ ๋ทฐ
- ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์๋ ๋ด์ฉ์ด ์๋ ์ง๊ณ ํจ์๋ก ์๋ก ๊ณ์ฐ๋ ๋ด์ฉ์ ํฌํจํ๋ ๋ทฐ
- DISTINCT ํค์๋๋ฅผ ํฌํจํ์ฌ ์ ์ํ ๋ทฐ
- GROUP BY ์ ์ ํฌํจํ์ฌ ์ ์ํ ๋ทฐ
- ์ฌ๋ฌ ๊ฐ์ ํ ์ด๋ธ์ ์กฐ์ธํ์ฌ ์ ์ํ ๋ทฐ๋ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ๋ง์
- โ ์ ํ 1๋ทฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ทฐ์ธ๊ฐ? O
- โ ์ ํ 2๋ทฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๋ทฐ์ธ๊ฐ? X ๊ธฐ๋ณธํค๊ฐ ํฌํจ๋์ด ์์ง ์์.
04-5 ๋ทฐ์ ์ฅ์
- ์ง์๋ฌธ์ ์ข ๋ ์ฝ๊ฒ ์์ฑํ ์ ์๋ค.
- GROUP BY, ์ง๊ณ ํจ์, ์กฐ์ธ ๋ฑ์ ์ด์ฉํด ๋ทฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ผ๋ฉด, ๋ณต์กํ SQL ๋ฌธ์ ์์ฑํ์ง ์์๋ SELECT ์ ๊ณผ FROM ์ ๋ง์ผ๋ก๋ ์ํ๋ ๋ฐ์ดํฐ์ ๊ฒ์์ด ๊ฐ๋ฅ
- ๋ฐ์ดํฐ์ ๋ณด์ ์ ์ง์ ๋์์ด ๋๋ค.
- ์์ ์๊ฒ ์ ๊ณต๋ ๋ทฐ๋ฅผ ํตํด์๋ง ๋ฐ์ดํฐ์ ์ ๊ทผํ๋๋ก ๊ถํ ์ค์ ์ด ๊ฐ๋ฅ
- ๋ฐ์ดํฐ๋ฅผ ์ข ๋ ํธ๋ฆฌํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ค.
- ์ ๊ณต๋ ๋ทฐ์ ๊ด๋ จ์ด ์๋ ๋ค๋ฅธ ๋ด์ฉ์ ๋ํด ์ฌ์ฉ์๊ฐ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์
04-6 ๋ทฐ ์ญ์ : DROP VIEW ๋ฌธ
DROP VIEW ๋ทฐ์ด๋ฆ;
- ๋ทฐ๋ฅผ ์ญ์ ํด๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ์ํฅ์ ๋ฐ์ง ์์
- ๋ง์ฝ, ์ญ์ ํ ๋ทฐ๋ฅผ ์ฐธ์กฐํ๋ ์ ์ฝ์กฐ๊ฑด์ด ์กด์ฌํ๋ค๋ฉด?
- ์) ์ญ์ ํ ๋ทฐ๋ฅผ ์ด์ฉํด ๋ง๋ค์ด์ง ๋ค๋ฅธ ๋ทฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ
- ๋ทฐ ์ญ์ ๊ฐ ์ํ๋์ง ์์
- ๊ด๋ จ๋ ์ ์ฝ์กฐ๊ฑด์ ๋จผ์ ์ญ์ ํด์ผ ํจ
'DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
9์ฅ ์ ๊ทํ (0) | 2021.06.20 |
---|---|
IE ํ๊ธฐ๋ฒ (0) | 2021.06.20 |
8์ฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ (0) | 2021.06.20 |
6์ฅ ๊ด๊ณ ๋ฐ์ดํฐ ์ฐ์ฐ (0) | 2021.04.17 |
5์ฅ ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ (0) | 2021.03.17 |
4์ฅ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (0) | 2021.03.17 |