student, department ํ ์ด๋ธ ํ์ฉ
ํ๊ณผ ์ด๋ฆ, ํ๊ณผ๋ณ ์ต๋ํค, ํ๊ณผ๋ณ ์ต๋ํค๋ฅผ ๊ฐ์ง ํ์๋ค์ ์ด๋ฆ๊ณผ ํค๋ฅผ ์ถ๋ ฅ ํ์ธ์.
๋ฐฉ์ 1) WHERE ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋
SELECT
d.dname ํ๊ณผ์ด๋ฆ, s.deptno1 ํ๊ณผ๋ฒํธ, s.height ํ๊ณผ๋ณ์ต๋ํค,
s.name ํ์์ด๋ฆ, s.height ํ์ํค
FROM student s, department d
WHERE (s.deptno1, s.height) IN (SELECT deptno1, MAX(height)
FROM student
GROUP BY deptno1)
AND s.deptno1 = d.deptno;
==> ํ๊ณผ๋ณ ์ต๋ํค ์ฟผ๋ฆฌ ๋จผ์ ๋ง๋ค๊ณ !
==> ํ๊ณผ์ด๋ฆ์ด ๋์์ผํ๋๊น department ํ
์ด๋ธ์ด๋ ์กฐ์ธํ๊ณ ๊ฒน์น๋ ๊ฒ๋ค๋ผ๋ฆฌ ์ฐ๊ฒฐ์์ผ์ฃผ๊ณ
==> ํ๊ณผ๋ณ๋ก ์ต๋ํค ๋์ค๋๊ฑฐ๋๊น ์ฌ๋ฌ๊ฐ์ง ํ์ด ๋์ค๊ฒ ์ง ๊ทธ๋์ IN ์ผ๋ก ๋ฌถ์ด์ฃผ๊ณ
==> ํ๊ณผ๋ณ ์ต๋ํค ์ฟผ๋ฆฌ๋๊น ํ๊ณผ๋ณ ์ต๋ํค = ์ ์ผํฐํค๋ฅผ ๊ฐ์ง ํ์ํค ๋๊น s.height ๋ณ์ ๋๊ฐ์๊ฑฐ๊ณ !
๋ฐฉ์ 2) WHERE ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋ + select ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋
SELECT
d.dname ํ๊ณผ์ด๋ฆ,
s.deptno1 ํ๊ณผ๋ฒํธ,
(SELECT MAX(height)
FROM student s2
WHERE s2.deptno1 = s.deptno1) ํ๊ณผ๋ณ์ต๋ํค,
s.name ํ์์ด๋ฆ,
s.height ํ์ํค
FROM student s, department d
WHERE (s.deptno1, s.height) IN (SELECT deptno1, MAX(height)
FROM student
GROUP BY deptno1)
AND s.deptno1 = d.deptno;
==> ์ฌ๊ธฐ์๋ s.height๋ผ๊ณ ํ์์ํ๊ณ ํ๊ณผ๋ณ ์ต๋ํค๋ฅผ ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค์ด์ ์ ํ์กฐ์ธ์ผ๋ก ํด์ ๋ง๋ค์ด์ ๋ฃ์!
๋ฐฉ์ 3) FROM ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋ name..์ ์ด์ผ ๋ถ๋ฅด์ง? -> ์ ํ์กฐ์ธ!!!!
SELECT
d.dname ํ๊ณผ์ด๋ฆ, s1.max_height ํ๊ณผ๋ณ์ต๋ํค,
s2.name ํ์์ด๋ฆ, s2.height ํ์ํค
FROM (SELECT deptno1, MAX(height) max_height
FROM student
GROUP BY deptno1) s1, student s2, department d
WHERE s1.deptno1 = d.deptno
AND s1.deptno1 = s2.deptno1
AND s1.max_height = s2.height;
==> ํ
์ด๋ธ ์์ฒด๋ฅผ ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค์ด์ ์๋ธ์ฟผ๋ฆฌ s1์ ์๋ ์ปฌ๋ผ์ ํ๊ณผ๋ณ ์ต๋ํค๊ฐ ๋์ค๊ฒ ํ๊ณ
==> ์
ํ์กฐ์ธ์ผ๋ก ํด์ s1.deptno1 = s2.deptno1, s1.max_height = s2.height๋ก s1๊ณผ s2๋ฅผ ๋์ผํ๊ฒ ๋ง๋ค์ด์ ๋ฃ์!
๋ฐฉ์ 3) FROM ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋ + select ์ ์๋ธ์ฟผ๋ฆฌ ๋ฃ์์๋
SELECT
(SELECT dname
FROM department d
WHERE d.deptno = s1.deptno1) ํ๊ณผ์ด๋ฆ,
s1.max_height ํ๊ณผ๋ณ์ต๋ํค,
s2.name ํ์์ด๋ฆ,
s2.height ํ์ํค
FROM (SELECT deptno1, MAX(height) max_height
FROM student
GROUP BY deptno1) s1, student s2
WHERE s1.deptno1 = s2.deptno1
AND s1.max_height = s2.height;
==> department ํ ์ด๋ธ์ ์กฐ์ธํ์ง ์๊ณ ๋ฐ๋ก select์ ์์ ์๋ธ์ฟผ๋ฆฌ๋ก ๋ง๋ค์ด์ student ํ ์ด๋ธ๊ณผ ๋์ผํ๊ฒ ๋ง๋ค์ด์ ๋ฃ์!
๐ป
: ํ
์ด๋ธ ๊ด๋ จ
CREATE, ALTER, TRUNCATE(ํ
์ด๋ธ์์ ๋ด์ฉ์ญ์ ), DROP(ํ
์ด๋ธ์์ฒด์ญ์ )
CREATE TABLE SAMPLE01
(
no NUMBER(4),
id VARCHAR2(12),
name VARCHAR2(30), --ํ๊ธ10๊ธ์
st_date DATE
);
==> SAMPLE01 ํ
์ด๋ธ ์์ฑ!
==> no, id, name, st_date ์ปฌ๋ผ
CREATE TABLE ํ
์ด๋ธ๋ช
AS
SELECT * FROM ๋ณต์ฌํ ํ
์ด๋ธ;
CREATE TABLE ํ
์ด๋ธ๋ช
AS
SELECT * FROM ๋ณต์ฌํ ํ
์ด๋ธ WHERE ์กฐ๊ฑด๋ชจ๋ ๊ฒ๊ฑฐ์ง(1=2);
--์๋ก์ด ์ปฌ๋ผ ์ถ๊ฐ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD (์ปฌ๋ผ๋ช
ํ์
์ฌ์ด์ฆ);
ALTER TABLE ํ
์ด๋ธ๋ช
ADD (์ปฌ๋ผ๋ช
ํ์
์ฌ์ด์ฆ DEFAULT ๊ฐ);
loc -> location
ALTER TABLE ํ
์ด๋ธ๋ช
RENAME COLUMN loc TO location;
RENAME ์๋ํ
์ด๋ธ๋ช
TO ๋ฐ๊ฟํ
์ด๋ธ๋ช
;
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY (name VARCHAR2(60));
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
;
--DROP TABLE SAMPLE01; --์ค๋ฌด์์ ์กฐ์ฌํด์ผํ๋ค!! ํจ๋ถ๋ก ์ง์ฐ๋ฉด ํฐ์ผ
: ํ
์ด๋ธ ๋ด๋ถ๋ฐ์ดํฐ ์กฐ์
INSERT, UPDATE, DELETE, SELECT, MERGE
INSERT INTO ํ
์ด๋ธ๋ช
(์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
)
VALUES (๊ฐ, ๊ฐ, ๊ฐ);
INSERT INTO ํ
์ด๋ธ๋ช
VALUES (๊ฐ, ๊ฐ, ๊ฐ);
INSERT INTO ํ
์ด๋ธ๋ช
SELECT ์ปฌ๋ผ๋ช
FROM ๊ฐ์ ธ์ฌํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด;
UPDATE ํ
์ด๋ธ๋ช
SET ์ปฌ๋ผ๋ช
= ๊ฐ
WHERE ์กฐ๊ฑด;
temp_professor ํ
์ด๋ธ์์
'Sharon Stone' ๊ต์์ ์ง๊ธ๊ณผ ๋์ผํ ์ง๊ธ์ ๊ฐ์ง ๊ต์๋ค ์ค ํ์ฌ ๊ธ์ฌ๊ฐ 250 ๋ง์์ด ์ ๋๋ ๊ต์๋ค์ ๊ธ์ฌ๋ฅผ 15% ์ธ์ํ์ธ์.
UPDATE temp_professor
SET pay = pay * 1.15
WHERE position = (SELECT position
FROM temp_professor
WHERE name = 'Sharon Stone')
AND pay < 250;
==> pay๊ฐ 253์ผ๋ก ๋ฐ๋๊ธฐ ์ ์๋ 220 ์ด์๋ค!
๐ป
DELETE FROM ํ
์ด๋ธ๋ช
WHERE ์กฐ๊ฑด;
: ์กฐ์ ๊ถํ
GRANT(๊ถํ๋ถ์ฌ), REVOKE(๊ถํํ์)
: ํธ๋์ญ์
์ ์ด
COMMIT, ROLLBACK