๊น์ ์
ํ์ธ๋ํ๊ต 22ํ๋ฒ ์ปดํจํฐ๊ณตํ๊ณผ
ํ์ธ๋ํ๊ต 22ํ๋ฒ ์ปดํจํฐ๊ณตํ๊ณผ
์ถ์ ๋น๋: ์
๋น์ถ ํ๊ทธ: CASCADE, RESTRICT, ์ญ์ /์กฐํ/๊ถํ ๋ถ์ฌ ๋ฌธ๋ฒ
CREATE <๊ฐ์ฒด์ ํ> <๊ฐ์ฒด๋ช
> <์ต์
>;
< >: ์
๋ ฅ์์ (์๋ต๊ฐ๋ฅ)[ ]: ์ ํ์์[, ...]: ๋ฐ๋ณต๊ฐ๋ฅ|: ์ ํ๊ฐ๋ฅCREATE TABLE <ํ
์ด๋ธ๋ช
> (
<์ปฌ๋ผ๋ช
> <๋ฐ์ดํฐ์ ํ> [<์ ์ฝ์กฐ๊ฑด>] [, ...],
[ํ
์ด๋ธ ์ ์ฝ์กฐ๊ฑด]
);
INT, DOUBLECHAR - ๊ณ ์ ํฌ๊ธฐ ๋ฌธ์์ดVARCHAR(N) - ๊ฐ๋ณํฌ๊ธฐ ๋ฌธ์์ดDATEUNIQUE - ์ ์ผํค ์๋ณ์NOT NULL - ๊ณต๋ฐฑ ๋ถํCHECK - ์กฐ๊ฑด์ ๋ง์กฑ๊ฐ๋ง ํ์ฉPRIMARY KEY (<์ปฌ๋ผ๋ช
>[, ...]) - ๊ธฐ๋ณธํคFOREIGN KEY (<์ปฌ๋ผ๋ช
>[, ...]) REFERENCES (<์ปฌ๋ผ๋ช
>[, ...])ON UPDATE <์ฒ๋ฆฌ์ต์
>ON DELETE <์ฒ๋ฆฌ์ต์
>NO ACTION: ์๋ฌด ์์
์ํจSET DEFAULT: ๊ธฐ๋ณธ๊ฐ ์ง์ SET NULL: ๊ณต๋ฐฑ ์ฒ๋ฆฌNULLIFY: NULL ๊ฐ์ผ๋ก ๋น์CREATE TABLE <ํ
์ด๋ธ๋ช
> AS <SELECT๋ฌธ>;
CREATE TABLE ํ์(
ํ๋ฒ INT PRIMARY KEY,
์ด๋ฆ CHAR(10) NOT NULL,
์ฐ๋ฝ์ฒ CHAR(15) DEFAULT '๋น๊ณต๊ฐ'
);
CREATE TABLE ๋์๋์ฌ(
๋์ฌ์ผ DATE NOT NULL,
ํ๋ฒ INT,
๋์๋ช
CHAR(20) NOT NULL,
FOREIGN KEY(ํ๋ฒ) REFERENCES ํ์(ํ๋ฒ)
ON UPDATE CASCADE
ON DELETE RESTRICT
);
ALTER TABLE <ํ
์ด๋ธ๋ช
> ADD <ํ๋๋ช
> <๋ฐ์ดํฐํ์
> [<์์น์ต์
>];
ALTER TABLE <ํ
์ด๋ธ๋ช
> MODIFY <์ปฌ๋ผ๋ช
> <๋ฐ์ดํฐ์ ํ>;
ALTER TABLE <ํ
์ด๋ธ๋ช
> RENAME COLUMN <์๋ณธ์ปฌ๋ผ๋ช
> TO <๋ณ๊ฒฝ์ปฌ๋ผ๋ช
>;
ALTER TABLE <ํ
์ด๋ธ๋ช
> DROP <์ปฌ๋ผ๋ช
>;
ALTER TABLE <ํ
์ด๋ธ๋ช
> ADD CONSTRAINT <์ ์ฝ์กฐ๊ฑด๋ช
> <์ ์ฝ์กฐ๊ฑด>;
ALTER TABLE <ํ
์ด๋ธ๋ช
> ENABLE|DISABLE|DROP CONSTRAINT <์ ์ฝ์กฐ๊ฑด๋ช
>;
DROP <๊ฐ์ฒด์ ํ> <๊ฐ์ฒด๋ช
> [<์ญ์ ์ต์
>];
TRUNCATE TABLE <ํ
์ด๋ธ๋ช
>;
-- ๋ชจ๋ ๊ฐ ์ฝ์
INSERT INTO <ํ
์ด๋ธ๋ช
> VALUES (<๊ฐ>[, ...]);
-- ํน์ ์ปฌ๋ผ ๊ฐ ์ฝ์
INSERT INTO <ํ
์ด๋ธ๋ช
> (<์ปฌ๋ผ๋ช
>[, ...]) VALUES (<๊ฐ>[, ...]);
-- ๋ค๋ฅธ ํ
์ด๋ธ์์ ๋ณต์ฌ
INSERT INTO <ํ
์ด๋ธ๋ช
> (<ํ๋>[, ...]) <SELECT๋ฌธ>
UPDATE <ํ
์ด๋ธ๋ช
> SET <์ปฌ๋ผ๋ช
>=<๊ฐ>[, ...] WHERE <์กฐ๊ฑด์>;
DELETE FROM <ํ
์ด๋ธ๋ช
> WHERE <์กฐ๊ฑด์>;
DELETE * FROM <ํ
์ด๋ธ๋ช
> WHERE <์กฐ๊ฑด์>;
SELECT [ALL|DISTINCT] <์ปฌ๋ผ๋ช
>[,...] FROM <ํ
์ด๋ธ๋ช
>
[WHERE <์กฐ๊ฑด์>
[GROUP BY <์ปฌ๋ผ๋ช
> [HAVING <์กฐ๊ฑด์>]]
[ORDER BY <์ปฌ๋ผ๋ช
> [ASC | DESC]]];
COUNT(): ๋ ์ฝ๋ ๊ฐ์SUM()/AVG(): ํฉ๊ณ/ํ๊ท MAX()/MIN(): ์ต๋๊ฐ/์ต์๊ฐSTDDEV(): ํ์คํธ์ฐจVARIAN(): ๋ถ์ฐSELECT SUM(์ ์) AS ํฉ๊ณ FROM ํ์์ ๋ณด;
SELECT ์ด๋ฆ AS ํ์๋ช
, ์ ์-5 AS ์ฑ์ FROM ํ์์ ๋ณด;
RANK: ๋์ผ ์์๋งํผ ๋ค์ ์์ ๊ฑด๋๋DENSE_RANK: ๋์ผ ์์๋ฅผ ํ๋๋ก ์ฒ๋ฆฌROW_NUMBER: ์์ฐจ์ ์์ ๋ถ์ฌFIRST_VALUE: ์ต์๊ฐLAST_VALUE: ์ต๋๊ฐLAG: ์ด์ N๋ฒ์งธ ํ์ ๊ฐLEAD: ์ดํ N๋ฒ์งธ ํ์ ๊ฐSELECT * FROM ์ฑ์ WHERE ๊ตญ์ด>=80 AND ์์ด>=80;
-- BETWEEN ํ์ฉ
SELECT * FROM ์ฑ์ WHERE ์ํ BETWEEN 80 AND 89;
SELECT * FROM ์ฑ์ WHERE ๋ฐ="1๋ฐ" OR ๋ฐ="3๋ฐ" OR ๋ฐ="5๋ฐ";
-- IN ํ์ฉ
SELECT * FROM ์ฑ์ WHERE ๋ฐ IN("1๋ฐ", "3๋ฐ", "5๋ฐ");
SELECT * FROM ์ฑ์ WHERE ๋ฒ์ IS NULL;
SELECT * FROM ์ฑ์ WHERE ์ด๋ฆ LIKE <ํจํด>;
LIKE %๋: ๋์ผ๋ก ๋๋๋ ๋ฌธ์์ดLIKE ํ%: ํ์ผ๋ก ์์ํ๋ ๋ฌธ์์ดLIKE %๊ธธ%: ๊ธธ์ ํฌํจํ๋ ๋ฌธ์์ดLIKE ๊ฐ_: ๊ฐ์ผ๋ก ์์ํ๋ 2๊ธ์LIKE _๊ฐ_: ๊ฐ์ด ๊ฐ์ด๋ฐ์ธ 3๊ธ์LIKE ๊ฐ__: ๊ฐ์ผ๋ก ์์ํ๋ 3๊ธ์์ ์์ฌํญ:
=, <>, >, >=, <, <=SELECT * FROM ์ฑ์
WHERE ํ๊ณผ=(SELECT ํ๊ณผ FROM ์ฑ์ WHERE ์ด๋ฆ="๊ถ์์");
IN, ANY, SOME, ALL, EXISTS-- IN ์ฐ์ฐ์ ์์
SELECT ์ฑ๋ช
, ํ๋
FROM ๋ฐ์ดํฐ๋ฒ ์ด์ค
WHERE ํ๋ฒ IN (SELECT ์ธ๊ณต์ง๋ฅ.ํ๋ฒ FROM ์ธ๊ณต์ง๋ฅ);
-- EXISTS ์ฐ์ฐ์ ์์
SELECT ์ฑ๋ช
, ํ๋
FROM ๋ฐ์ดํฐ๋ฒ ์ด์ค
WHERE EXISTS (SELECT * FROM ์ธ๊ณต์ง๋ฅ
WHERE ๋ฐ์ดํฐ๋ฒ ์ด์ค.ํ๋ฒ = ์ธ๊ณต์ง๋ฅ.ํ๋ฒ);
-- ๋จ์ผ ์ ๋ ฌ
SELECT * FROM ์ฑ์ ORDER BY ์ ์ DESC;
-- ๋ค์ค ์ ๋ ฌ
SELECT * FROM ์ฑ์ ORDER BY ์ฑ๋ณ ASC, ์ฑ์ DESC;
-- ๊ธฐ๋ณธ ๊ทธ๋ฃนํ
SELECT ์ฑ๋ณ, COUNT(*) FROM ์ฑ์ GROUP BY ์ฑ๋ณ;
-- HAVING ์ ์ฌ์ฉ
SELECT ์ฑ๋ณ, COUNT(*) FROM ์ฑ์
GROUP BY ์ฑ๋ณ HAVING COUNT(*)<3;
ROLLUP(): ์ฒซ ์นผ๋ผ์ ๊ฐ ๊ทธ๋ฃน ํฉ๊ณ์ ์ ์ฒด ํฉ๊ณCUBE(): ๋ชจ๋ ์นผ๋ผ์ ๊ฐ ๊ทธ๋ฃน ํฉ๊ณ์ ์ ์ฒด ํฉ๊ณGROUPING SETS(): ๊ฐ ๊ทธ๋ฃน๋ณ ์ด ํฉ๊ณ๋ง ํ์GROUPING(): ์ง๊ณ ํจ์ ์ง์SELECT * FROM <์ผ์ชฝ ํ
์ด๋ธ>
JOIN <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>
ON <์ผ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
> = <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
>;
SELECT * FROM <์ผ์ชฝ ํ
์ด๋ธ>
OUTER JOIN <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>
ON <์ผ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
> = <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
>;
-- LEFT JOIN
SELECT * FROM <์ผ์ชฝ ํ
์ด๋ธ>
LEFT JOIN <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>
ON <์ผ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
> = <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
>;
-- RIGHT JOIN
SELECT * FROM <์ผ์ชฝ ํ
์ด๋ธ>
RIGHT JOIN <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>
ON <์ผ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
> = <์ค๋ฅธ์ชฝ ํ
์ด๋ธ>.<์ปฌ๋ผ๋ช
>;
GRANT <๊ถํ ์ ํ> TO <๋์>
[WITH GRANT OPTION | WITH ADMIN OPTION];
WITH GRANT OPTION: ๊ถํ ๋ถ์ฌ/ํ์ ๊ฐ๋ฅWITH ADMIN OPTION: ๊ถํ ๋ถ์ฌ๋ง ๊ฐ๋ฅREVOKE <๊ถํ ์ ํ> FROM <๋์>;
COMMIT: ๋ณ๊ฒฝ์ฌํญ ์ต์ข
๋ฐ์ROLLBACK: ์ด์ ์ํฉ์ผ๋ก ๋ณต๊ตฌSAVEPOINT: ROLLBACK ์ง์ ์ง์ DECLARE: ์ ์ ์์ญBEGIN~END: ์ค์ ๊ตฌํ ์์ญOR REPLACE: ๊ธฐ์กด ์ฝ๋ ๋ฎ์ด์ฐ๊ธฐAFTER: ํ
์ด๋ธ ๋ณ๊ฒฝ ํ ์คํBEFORE: ํ
์ด๋ธ ๋ณ๊ฒฝ ์ ์คํFOR EACH NOW: ๋ ์ฝ๋๋ง๋ค ํธ๋ฆฌ๊ฑฐ ์ํNEW: ์๋ก์ด ๋ฐ์ดํฐOLD: ๊ธฐ์กด ๋ฐ์ดํฐ-- ์์ฑ
CREATE [UNIQUE] INDEX <์ธ๋ฑ์ค๋ช
>
ON <ํ
์ด๋ธ๋ช
>(<์ปฌ๋ผ๋ช
>[, ...]);
-- ๋ณ๊ฒฝ
ALTER [UNIQUE] INDEX <์ธ๋ฑ์ค๋ช
>
ON <ํ
์ด๋ธ๋ช
>(<์ปฌ๋ผ๋ช
>[, ...]);
-- ์กฐํ
SHOW INDEX FROM <ํ
์ด๋ธ๋ช
>;
-- ์์ฑ
CREATE VIEW <๋ทฐ ์ด๋ฆ>(<์ปฌ๋ผ ๋ชฉ๋ก>)
AS SELECT๋ฌธ [์ต์
];
-- ์ญ์
DROP VIEW <๋ทฐ ์ด๋ฆ>;
-- ์กฐํ
SELECT * FROM <๋ทฐ ์ด๋ฆ>;
REPLACE: ์ฌ์์ฑFORCE: ๋ฌด์กฐ๊ฑด ์์ฑNOFORCE: ์๋ณธ ํ
์ด๋ธ ์กด์ฌ ์์๋ง ์์ฑWITH CHECK OPTION: ์กฐ๊ฑด ์ปฌ๋ผ ์์ ๋ถ๊ฐWITH READ ONLY: ์ ์ฒด ์์ ๋ถ๊ฐPL/SQL: ํ์ฅ SQL๋๊ตฌSQL*Plus: Oracle ์ ๊ณต ๋๊ตฌAPM: ์ฑ๋ฅ ๋ชจ๋ํฐ๋งTKPROF: SQL ์ถ์ /๋ถ์EXPLAIN PLAN: SQL ์คํ๊ฒฝ๋ก ๋ถ์