SQL ๋ฌธ์ฅ๋ค์ ์ข
๋ฅ
๋ฐ์ดํฐ ์กฐ์์ด(DML) : SELECT , INSERT , UPDATE , DELETE
๋น์ ์ฐจ์ : ๋ฌด์จ(what) ๋ฐ์ดํฐ๋ฅผ ์ํ๋์ง๋ง ๋ช
์ธ
์ ์ฐจ์ : ์ด๋ป๊ฒ(how) ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํด์ผ ํ๋์ง ๋ช
์ธ
๋ฐ์ดํฐ ์ ์์ด(DDL) : CREATE , ALTER , DROP , RENAME
๋ฐ์ดํฐ ์ ์ด์ด(DCL) : GRANT , REVOKE
ํธ๋์ญ์
์ ์ด์ด(TCL) : COMMIT , ROLLBACK
PRIMARY KEY ์ค์
CREATE ๋ฌธ
ALTER ๋ฌธ
ํ ์ด๋ธ ์ปฌ๋ผ์ ๋ํ ์ ์ ๋ณ๊ฒฝ (ALTER)
[Oracle]
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ( ์นผ๋ผ๋ช
๋ฐ์ดํฐ์ ํ NOT NULL )
[SQL Server]
ALTER TABLE ํ
์ด๋ธ๋ช
ALTER COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐ์ ํ NOT NULL;
SQLServer ์์๋ ์ฌ๋ฌ๊ฐ์ ์ปฌ๋ผ์ ๋์์ ์์ ํ๋ ๊ตฌ๋ฌธ ์ง์ X
๊ดํธ ์ฌ์ฉ X
NOT NULL ์ง์ ํด์ค์ผํจ
ํ ์ด๋ธ ์ปฌ๋ผ ์ญ์ (ALTER DROP)
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
ALTER TABLE EMP DROP COLIMN COMM;
ํ ์ด๋ธ ๋ด์ ๋ ์ฝ๋๋ฅผ ์ญ์ (DELETE)
DELETE : ํ
์ด๋ธ ๋ด์ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ ๋ช
๋ น์ด
foreign key ๋ก ๋ฌถ์ฌ ์์ ๊ฒฝ์ฐ ์๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ง์ฐ๋ฉด ์ ๋ณด๊ฐ ๊ผฌ์ด๋ ์ํฉ ๋ฐ์
์ฐ๊ฒฐ๋ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ถ ์ง์ฐ๊ณ ๋๋ฉด ๋ถ๋ชจ ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๋ ๊ฒ์ด ๊ฐ๋ฅ
ON DELETE CASCADE
foreign key ๋ก ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ค์ด ์ผ๊ด์ฑ์ ์ ์งํ ์ ์๋๋ก ํ๊ธฐ ์ํจ
๋ถ๋ชจ ํ
์ด๋ธ์์ row๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ ์ฐ๊ฒฐ๋ ์์ํ
์ด๋ธ์ row ๊ฐ ํจ๊ป ์ญ์
์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์ง์ธ ์ ์์
ON DELETE SET NULL
๋ถ๋ชจ ํ
์ด๋ธ์์ ์ญ์ ๊ฐ ์ผ์ด๋๋ฉด , ์ฐธ์กฐ๋ฅผ ํ๋ ํ
์ด๋ธ์ ์ธ๋ํค ๊ฐ์ด null ๋ก ์ธํ
REFERENCES ๊ณ ๊ฐ (๊ณ ๊ฐID) ON DELETE SET NULL;
๊ณ ๊ฐ ํ
์ด๋ธ์ ๊ณ ๊ฐID ‘0002’๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ ๋
SQL ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ณ ๊ฐ ID๋ฅผ NULL ๋ก ์
๋ฐ์ดํธํ๋ ค๊ณ ํ์ง๋ง ,
์ฃผ๋ฌธ ํ
์ด๋ธ ๊ณ ๊ฐ ID ์ปฌ๋ผ์ NOT NULL ์ ์ฝ์กฐ๊ฑด์ ์ํด ์คํจํ๋ค.
ON DELETE RESTRICT
์์ ํ
์ด๋ธ์ด ์ฐธ์กฐํ๊ณ ์์ ๊ฒฝ์ฐ , ๋ฐ์ดํฐ ์ญ์ ๊ฐ ๋ถ๊ฐํ๋ค.
๋ถ๋ชจ ํ
์ด๋ธ์ PK๊ฐ ์๋ ๊ฒฝ์ฐ , ์์ ํ
์ด๋ธ ๋ฐ์ดํฐ ์
๋ ฅ์ ํ์ฉํ์ง ์์
์ ์ฝ์กฐ๊ฑด์ ์ข ๋ฅ(CONSTRAINT)
NOT NULL : null ๊ฐ ์
๋ ฅ ๊ธ์ง
UNIQUE : ์ค๋ณต๊ฐ ์
๋ ฅ ๊ธ์ง , null ๊ฐ๋ฅ
PRIMARY KEY : not null + unique
FOREIGN KEY : ๋ค๋ฅธ ํ
์ด๋ธ์ ์ปฌ๋ผ ์กฐํ
CHECK : ์กฐ๊ฑด์ผ๋ก ์ค์ ๋ ๊ฐ๋ง ์
๋ ฅ ํ์ฉ
์ธ๋ฑ์ค ์์ฑ (CREATE INDEX)
CREATE INDEX ์ธ๋ฑ์ค๋ช
ON ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
)
CREATE INDEX IDX_EMP_01 ON EMP (JOIN_DATE);
๋ฐ์ดํฐ ๊ฐฏ์ ๊ฐ์ ธ์ค๊ธฐ (COUNT)
COUNT : ํ
์ด๋ธ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ๊ฐฏ์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ
NULL ์ธ ๋ฐ์ดํฐ๋ ์ ์ธํ๊ณ ๊ณ์ฐํ๋ค.
์ ์ฒด ํ ๊ฐฏ์ ๊ฐ์ ธ์ค๊ธฐ
SELECT COUNT(*) FROM ํ
์ด๋ธ;
์ปฌ๋ผ ๋ฐ์ดํฐ ๊ฐฏ์ ๊ฐ์ ธ์ค๊ธฐ
SLECET COUNT(์ปฌ๋ผ) FROM ํ
์ด๋ธ;
ํ ์ด๋ธ๋ช ๋ณ๊ฒฝ (RENAME)
RENAME old_name TO new_name ;
ALTER TABLE old_name RENAME new_name;
RENAME ์ ๋ค์์ ํ
์ด๋ธ ์ด๋ฆ์ ๋ณ๊ฒฝ ํ ์ ์์
ํ
์ด๋ธ์ ๋ ์ฝ๋ ์ถ๊ฐ (INSERT)
ํ
์ด๋ธ์ ์๋ก์ด ๋ ์ฝ๋๋ฅผ ์ถ๊ฐ
INSERT INTO ํ
์ด๋ธ์ด๋ฆ(ํ๋1,ํ๋2,ํ๋3) VALUES(๋ฐ์ดํฐ๊ฐ1,๋ฐ์ดํฐ๊ฐ2,๋ฐ์ดํฐ๊ฐ3)
ํ๋ ์ด๋ฆ ์๋ต ๊ฐ๋ฅ - ์คํค๋ง์ ๊ฐ์ ์์๋๋ก ์๋ ๋์
์ ๋ ฅ๋ ๋ฐ์ดํฐ์ ์์ ( UPDATE SET)
UPDATE ํ
์ด๋ธ๋ช
SET ์ด = ๋ณ๊ฒฝํ ๊ฐ WHERE ์กฐ๊ฑด
UPDATE BOARD SET USE_YN = ‘N’ WHERE BOARD_ID = ‘1’;
์กฐ๊ฑด์ด ์๋ ๊ฒฝ์ฐ ํ
์ด๋ธ์ ์๋ ์ด ์ ์ฒด๊ฐ ๋ณ๊ฒฝํ ๊ฐ์ผ๋ก UPDATE ๋๋ค.
WHERE ์ ์ IN ์ฌ์ฉ๋ฒ
WHERE ์ผ์นํ๊ธธ ์ํ๋ ์ปฌ๋ผ๋ช
IN ( ์กฐ๊ฑด1, ์กฐ๊ฑด2, ์กฐ๊ฑด3 .. )
OR์กฐ๊ฑด์ผ๋ก ๊ฒ์ํ๋ค.
์กฐ๊ฑด์ ์ผ์นํ๋ ๋ชจ๋ ๋ด์ฉ์ ๊ฐ์ ธ์จ๋ค.
ํ ์ด๋ธ ์กฐํ(SELECT)
SELECT ์ปฌ๋ผ๋ช
1 , ์ปฌ๋ผ๋ช
2 FROM ํ
์ด๋ธ๋ช
as๋ฅผ ์ด์ฉํด์ ๋ณ์นญ ์ฌ์ฉํ๊ธฐ
SELECT empName as ์ฌ์์ด๋ฆ , job as ์ง๊ธ , salary as ์๊ธ FROM emplyee;
as๋ ์๋ต๊ฐ๋ฅ
* ์ ์คํฐ๋ฆฌ์คํฌ(*)
SELECT * FROM ํ
์ด๋ธ๋ช
๋ชจ๋ ๊ฐ์ ์๋ฏธํ๋ค.
SELECT * FROM employee;
employee ํ
์ด๋ธ์ ๋ชจ๋ ์นผ๋ผ์ ๋ํ ๊ฐ์ ์ถ๋ ฅํ๋ค.
DISTINCT
์ค๋ณต๋ ๊ฒฝ์ฐ 1๊ฑด๋ง ์ถ๋ ฅ
ํ ์ด๋ธ ์ญ์ (DROP TABLE)
ํ
์ด๋ธ ์์ฒด ์ญ์ ๋ช
๋ น์ด
ํ
์ด๋ธ ์์ฒด๊ฐ ๋ชจ๋ ์ง์์ง๋ฉฐ , ์ธ๋ฑ์ค๋ ์ญ์ ๋จ
DROP TABLE ํ
์ด๋ธ๋ช
;
ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ ๋ถ ์ญ์ (TRUNCATE)
ํด๋น ํ
์ด๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ญ์ ๋์ง๋ง ํ
์ด๋ธ ์์ฒด๊ฐ ์ง์์ง๋ ๊ฒ์ ์๋๋ค.
์ธ๋ฑ์ค๋ ํจ๊ป TRUNCATE ๋๋ค.
TRUNCATE TABLE ํ
์ด๋ธ๋ช
;
TRUNCATE ๋ช
๋ น์ด๋ UNDO๋ฅผ ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ผ ๋ฐ์ดํฐ๋ ์ญ์ ์ DELETE ๋ณด๋ค ๋น ๋ฅด๋ค.
DROP , TRUNCATE - Auto Commit
DELETE - ์ฌ์ฉ์ Commit / Commit ์ด์ ์ Rollback ๊ฐ๋ฅ
TRUNCATE ๊ณผ DROP ์ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ์ง ์๋๋ค .
'์๊ฒฉ์ฆ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] 5. SQL ํ์ฉ - 1 (0) | 2023.03.16 |
---|---|
[SQLD] 4. SQL ๊ธฐ๋ณธ - 2 (0) | 2023.03.15 |
[SQLD] 2. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ (0) | 2023.03.13 |
[SQLD] 1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (0) | 2023.03.06 |
[SQLD] 2023.03.19 ์ํ (0) | 2023.03.04 |