โจ๊ธฐ๋ณธ SQL ์์ฑํ๊ธฐ
๊ฐ. DDL(๋ฐ์ดํฐ ์ ์์ด)
: DDL(Data Definition Language)์ `๋ฐ์ดํฐ๋ฅผ ์ ์ํ๋ ์ธ์ด'๋ก์ BMS์์๋ ์ค๋ธ์ ํธ๋ผ๊ณ ํ๋ค.
(๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ทธ๋ฆ(ํ ์ด๋ธ)์ ์ ์ํ๋ ์ธ์ด)
โ
1) DDL ๊ด๋ จ ์ฉ์ด
๊ฐ) ์คํค๋ง(Schema) : DBMS ํน์ฑ๊ณผ ๊ตฌํ ํ๊ฒฝ์ ๊ฐ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
๋) ๋๋ฉ์ธ(Domain) : ์์ฑ์ด ๊ฐ์ง ์ ์๋ ๊ฐ์ ๋ฒ์
๋ค) ํ ์ด๋ธ(Table) : ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ
๋ผ) ๋ทฐ(View) : ํ๋ ์ด์์ ๋ฌผ๋ฆฌ ํ ์ด๋ธ์์ ์ ๋๋๋ ๊ฐ์์ ๋ ผ๋ฆฌ ํ ์ด๋ธ
๋ง) ์ธ๋ฑ์ค(Index) : ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ
โ
2) DDL ๋ช ๋ น์ด
๊ฐ) CREATE : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ธ์ ํธ ์์ฑ
๋) ALTER : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ธ์ ํธ ๋ณ๊ฒฝ
๋ค) DROP : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ธ์ ํธ ์ญ์
3) DDL ํ์ฉ ์์
CREATE TABLE ๊ณ ๊ฐ (
๊ณ ๊ฐID int NOT NULL,
๊ณ ๊ฐ๋ช
varchar(10),
์ ๋ฆฝ๊ธ varchar(10),
PRIMARY KEY (๊ณ ๊ฐID)
);
CREATE TABLE ๊ตฌ๋งค (
๊ณ ๊ฐID int NOT NULL,
๊ตฌ๋งค์ผ์ varchar(10),
๊ฒฐ์ฌ๋ฐฉ์ varchar(10),
ISBN varchar(10),
PRIMARY KEY (๊ณ ๊ฐID),
FOREIGN KEY (๊ณ ๊ฐID) REFERENCES ๊ณ ๊ฐ(๊ณ ๊ฐID) ON DELETE CASCADE
);
โป ๋ชจ๋ ํ
์ด๋ธ ๊ฒ์ : SELECT * FROM tab;
โป ํ
์ด๋ธ ํ๋/์์ฑ ํ์ธ(์ค๋ผํด) : DESC ํ
์ด๋ธ๋ช
;
โป ์๋ ์ฆ๊ฐ : AUTO_INCREMENT
โป ํ
์ด๋ธ ์์ฑ ํ์ธ : DESC ๊ณ ๊ฐ
โป ์ ์ฝ์กฐ๊ฑด ( CONSTRAINT ) : ๋ฌด๊ฒฐ์ฑ์ ์งํค๊ธฐ ์ํด ์ ํ๋ ์กฐ๊ฑด์ ์๋ฏธํจ.
ex) CONSTRAINT ๊ณ ๊ฐ_๊ตฌ๋งค_fk FOREIGN KEY (๊ณ ๊ฐID) REFERENCES ๊ณ ๊ฐ(๊ณ ๊ฐID)
- NOT NULL : NULL๊ฐ์ ํ์ฉํ์ง ์๋๋ค.
- UNIQUE : ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง์ ์๋ ์ ์ผํ ๊ฐ์ด๋ค.
- CHECK : ์กฐ๊ฑด์ ๋ง๋ data๋ง ํ์ฉํ๋ค.
- PRIMARY KEY : ๋ฐ๋์ ์กด์ฌํด์ผํ๋ฉฐ, ์ ์ผํ ๊ฐ์ด์ด์ผ ํ๋ค.
- FOREIGN KEY : ๋ค๋ฅธ ํ
์ด๋ธ์์ ํค๊ฐ์ ์ฐธ์กฐํ๋ค.
- DEFAULT : ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง๋ค.
ALTER TABLE ๊ณ ๊ฐ ADD ๋ฉ์ผ varchar(255);
ALTER TABLE ๊ณ ๊ฐ DROP COLUMN ๋ฉ์ผ;
DROP TABLE ๊ณ ๊ฐ;
๋. DML (๋ฐ์ดํฐ ์กฐ์์ด)
: ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๋ช ๋ น์ด๋ฅผ DML(Data Manipulation Language)์ด๋ผ๊ณ ํ๋ค. ์ฌ๊ธฐ์ ์กฐ์์ ๋ฐ์ดํฐ ๊ด์ ์์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ ์ดํ๋ ๊ฒ์ ์๋ฏธํ๋ค
โ
1) DML ๋ช ๋ น์ด
๊ฐ) INSERT : ํ ์ด๋ธ์ ๋ด์ฉ์ ์ฝ์
๋) SELECT : ํ ์ด๋ธ์ ๋ด์ฉ์ ์กฐํ
๋ค) UPDATE : ํ ์ด๋ธ์ ๋ด์ฉ์ ๋ณ๊ฒฝ
๋ผ) DELETE : ํ ์ด๋ธ์ ๋ด์ฉ์ ์ญ์
2) DML ํ์ฉ ์์
INSERT INTO ๊ณ ๊ฐ (๊ณ ๊ฐID, ๊ณ ๊ฐ๋ช
, ์ ๋ฆฝ๊ธ)
VALUES ('1', 'ํ๊ธธ๋', '100');
โป ์ํ์ค(custno_seq)๊ฐ ์ค์ ๋ ๊ฒฝ์ฐ
INSERT INTO ๊ณ ๊ฐ VALUES (custno_seq.nextval, 'ํ๊ธธ๋', '200');
SELECT * FROM ๊ณ ๊ฐ;
SELECT ๊ณ ๊ฐ๋ช
, ์ ๋ฆฝ๊ธ FROM ๊ณ ๊ฐ
WHERE ๊ณ ๊ฐID=1;
โป ๋ชจ๋ ํ
์ด๋ธ ๊ฒ์ : SELECT * FROM tab;
UPDATE ๊ณ ๊ฐ
SET ๊ณ ๊ฐ๋ช
= '์ฅ๋ฐ์ฅ', ์ ๋ฆฝ๊ธ= '1000'
WHERE ๊ณ ๊ฐID = 1;
โ
DELETE FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐID=1;
๋ค. DCL (๋ฐ์ดํฐ ์ ์ด์ด)
: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ ์ด์ธ์ ์ค๋ธ์ ํธ์ ๋ํด ์กฐ์ํ ํ์๊ฐ ์๋ค. ์ด๋ ์ฌ์ฉํ๋ SQL ๋ช ๋ น์ DCL(Data Control Language)์ด๋ผ๊ณ ํ๋ค.
โ
1) DCL ์ ์ด ๋์
๊ฐ) ์ฌ์ฉ์ ๊ถํ : ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํ๊ณ , ์ฌ์ฉ์์๊ฒ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ถ๋ฆฌ๋ฅผ ๋ถ์ฌํ๋ ์์
๋) ํธ๋์ญ์ : ์์ ํ ๊ฑฐ๋ ๋ณด์ฅ์ผ๋ก ๋์์ ๋ค์์ ์์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ํธ ์์ฉ ๋จ์
โ
2) DCL ๋ช ๋ น์ด
๊ฐ) GRANT : ์ฌ์ฉ์ ๊ถํ ๋ถ์ฌ
๋) REVOKE : ์ฌ์ฉ์ ๊ถํ ํ์
๋ค) COMMIT : ํธ๋์ญ์ ํ์
๋ผ) ROLLBACK : ํธ๋์ญ์ ์ทจ์
โ
3) DCL ํ์ฉ ์์
โป ํ
์คํธ๋ฅผ ์ํด ์๋ก์ด ๊ณ์ (์์ด๋)์ ๋ง๋ฌ : test
- CONNECT system/1234;
- CREATE USER test IDENTIFIED BY 1234;
- GRANT CREATE SESSION TO test;
- GRANT CREATE TABLE TO test;
- GRANT SELECT ANY TABLE TO test;
โ
โป ๋ชจ๋ ๊ถํ ๋ถ์ฌ : GRANT CONNECT, RESOURCE, DBA TO test;
- REVOKE CREATE SESSION FROM test;
- INSERT INTO ๊ณ ๊ฐ VALUE ('2', 'ํ๊ธธ๋', '100');
COMMIT;
- SELECT * FROM ๊ณ ๊ฐ;
- DELETE FROM ๊ณ ๊ฐ WHERE ๊ณ ๊ฐ๋ช
='ํ๊ธธ๋' ;
ROLLBACK;
- SELECT * FROM ๊ณ ๊ฐ;
โ
โ
๋ผ. ๋ฐ์ดํฐ ์ฌ์
: ๋ฐ์ดํฐ ์ฌ์ (Data Dictionary)์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ธํ ๋ชจ๋ ์ ๋ณด๊ฐ ์๋ค. ๋ฐ์ดํฐ ์ฌ์ ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ ๊ถํ์ ์์คํ ์ด ๊ฐ์ง๋ฉฐ, ์ฌ์ฉ์์๊ฒ๋ ์ฝ๊ธฐ ์ ์ฉ ํ ์ด๋ธ ํํ๋ก ์ ๊ณต๋๋ฏ๋ก ๋จ์ ์กฐํ๋ง ๊ฐ๋ฅํ๋ค.
โ
1) ๋ฐ์ดํฐ ์ฌ์ ๋ด์ฉ
๊ฐ) ์ฌ์ฉ์ ์ ๋ณด(์์ด๋, ํจ์ค์๋ ๋ฐ ๊ถํ ๋ฑ)
๋) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ ๋ณด(ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ)
๋ค) ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์ ๋ณด
๋ผ) ํจ์, ํ๋ก์์ ๋ฐ ํธ๋ฆฌ๊ฑฐ ๋ฑ
โ
2) ๋ฐ์ดํฐ ์ฌ์ ์์ญ
๊ฐ) DBA : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๊ฐ์ฒด ์กฐํ ๊ฐ๋ฅ (DBA_๋ ์์คํ ์ ๊ทผ ๊ถํ ์๋ฏธ)
๋) ALL : ์์ ์ ๊ณ์ ์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ๊ฐ์ฒด์ ํ ๊ณ์ ์ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง ๋ชจ๋ ๊ฐ์ฒด ์กฐํ ๊ฐ๋ฅ
๋ค) USER : ํ์ฌ ์์ ์ ๊ณ์ ์ด ์์ ํ ๊ฐ์ฒด ์กฐํ ๊ฐ๋ฅ
โ
3) ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ๋ฐ์ดํฐ ์ข ๋ฅ
๊ฐ) ์ ์ฅ ๋ฐ์ดํฐ : ์ปดํจํฐ๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ฅ ๋งค์ฒด์ ์ ์ฅ๋ ๋ฐ์ดํฐ
๋) ํตํฉ ๋ฐ์ดํฐ : ์ค๋ณต์ด ์ต์ํ๋ ๋ฐ์ดํฐ
๋ค) ๊ณต์ ๋ฐ์ดํฐ : ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ
๋ผ) ์ด์ ๋ฐ์ดํฐ : ์กฐ์ง์ ๋ชฉ์ ์ ์ํด ์กด์ฌ ๊ฐ์น๊ฐ ํ์คํ๊ณ ๋ฐ๋์ ํ์ํ ๋ฐ์ดํฐ
โ
โจ๊ณ ๊ธ SQL ์์ฑํ๊ธฐ
๊ฐ. ์ธ๋ฑ์ค
: ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ ์๋จ์ผ๋ก์, ํ ์ด๋ธ์ ๋ํ ์กฐํ ์๋๋ฅผ ๋์ฌ ์ฃผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ผ์ปซ๋๋ค. ์ธ๋ถ์ ์ผ๋ก ์ ๊ทํ๋์ง ์์ ํ ์ด๋ธ์์ ํ์ํ ์์ฑ(์ปฌ๋ผ)๋ถ๋ถ๋ง ๋จผ์ ์ถ์ถ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. SELECT๋ฌธ๊ณผ ๋น์ทํ์ง๋ง DDL๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์ค์ ๋ก ๋ง๋ค์ด, ์ญ์ ํ๋ค.
โ
1) ์ธํ ์ค ์์ฑ
CREATE INDEX <index_name> ON <table_name> (<column(s)>);
2) ์ธํ ์ค ์ญ์
DROP INDEX <index name>;
3) ์ธํ ์ค ๋ณ๊ฒฝ
ALTER INDEX <index name> ON <table name> (<column(s)>);
โ
๋. ๋ทฐ(View)
: ๋ทฐ๋ ์ฌ์ฉ์์ ๊ด์ ์์ ํ์ํ ๋ถ๋ถ๋ง ๊ณจ๋ผ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ง๋ ๊ฐ์ ํ ์ด๋ธ์ ์๋ฏธํ๋ค.
โ
1) ๋ทฐ์ ์ฅ์ ( ๊ผญ ์์๋๊ธฐ )
๊ฐ) ๋ ผ๋ฆฌ์ ๋ ๋ฆฝ์ฑ ์ ๊ณต
: ๋ ผ๋ฆฌ(๊ฐ์) ํ ์ด๋ธ๋ก ํ ์ด๋ธ์ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณ๊ฒฝํ์ง ์์๋ ๋จ.
๋) ์ฌ์ฉ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ ์ฉ์ด
: ๋ณต์ ํ ์ด๋ธ์ ์กด์ฌํ๋ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ฐ์ดํฐ์ ๋ํด ๋จ์ํ ์ง์์ด ์ฌ์ฉ์ด ๊ฐ๋ฅ
๋ค) ๋ฐ์ดํฐ ๋ณด์ ์ฉ์ด
: ์ค์ ๋ณด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ์ค์ธ ํ ์ด๋ธ์๋ ์ ๊ทผ ๋ถํํ๊ณ , ํด๋น ํ ์ด๋ธ์ ์ผ๋ถ ์ ๋ณด๋ง์ ๋ณผ ์ ์๋ ๋ทฐ์๋ ์ ๊ทผ์ ํ์ฉํ๋ ๋ฐฉ์์ผ๋ก ๋ณด์ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์ ์ด ๊ฐ๋ฅ
โ
2) ๋ทฐ์ ๋จ์
๊ฐ) ๋ทฐ ์์ฒด ์ธ๋ฑ์ค ๋ถ๊ฐ
: ์ธ๋ฑ์ค๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋์์ผ๋ก ํ๊ธฐ์ ๋ ผ๋ฆฌ์ ๊ตฌ์ฑ์ธ ๋ทฐ ์์ฒด๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง์ง ๋ชปํจ.
๋) ๋ทฐ ์ ์ ๋ณ๊ฒฝ ๋ถ๊ฐ
: ๋ทฐ์ ์ ์๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ทฐ๋ฅผ ์ญ์ ํ๊ณ ์ฌ์์ฑํ์ฌ์ผ ํจ.
๋ค) ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์ฝ ์กด์ฌ
: ๋ทฐ์ ๋ด์ฉ์ ๋ํ ์ฝ์ , ์ญ์ , ๋ณ๊ฒฝ ์ ์ฝ์ด ์์.
โ
3) ๋ทฐ ์ฌ์ฉ ์์
CREATE VIEW <๋ทฐ์ด๋ฆ> AS select * from <ํ
์ด๋ธ๋ช
>;
SELECT * FROM <๋ทฐ์ด๋ฆ>;
DROP VIEW <๋ทฐ์ด๋ฆ>;
โ
๋ค. ๋ค์ค ํ ์ด๋ธ ๊ฒ์
: ๋ฐ์ดํฐ๋ฅผ ๋ถํดํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทํ ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋๋ฉฐ, ํตํฉํ๋ ๊ธฐ๋ฒ์ผ๋ก ๋ค์ค ํ ์ด๋ธ์ ๋ํ ๊ฒ์์ด ์ฌ์ฉ๋๋ค.
โ
1) ๋ค์ค ํ ์ด๋ธ ์ฌ์ฉ ๊ธฐ๋ฒ
๊ฐ) ์กฐ์ธ : ๋ ๊ฐ์ ํ ์ด๋ธ์ ๊ฒฐํฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ธฐ๋ฒ
๋) ์๋ธ์ฟผ๋ฆฌ : SQL๋ฌธ ์์ ํฌํจ๋ SQL๋ฌธ ํํ์ ์ฌ์ฉ ๊ธฐ๋ฒ
๋ค) ์งํฉ์ฐ์ฐ : ํ ์ด๋ธ์ ์งํฉ ๊ฐ๋ ์ผ๋ก ์กฐ์ํ๋ ๊ธฐ๋ฒ
โ
2) ์กฐ์ธ
๊ฐ) ๋ด๋ถ์กฐ์ธ(INNER JOIN)
- ์ ์ : ๋ ํ ์ด๋ธ์ ๊ณตํต์ผ๋ก ์กด์ฌํ๋ ํ๋๊ฐ์ ์ด์ฉํ์ฌ ํ ์ด๋ธ์ ํฉํ๋ ๋ฐฉ๋ฒ
โ
(1) ๋ด๋ถ์กฐ์ธ(INNER JOIN) : ์กฐ๊ฑด(WHRER)๊ณผ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ฌ์ผ๋ก ํ ์ด๋ธ์ ํฉํ๋ค.
[ ๋ช
์์ ํํ๋ฒ ]
SELECT *
FROM ๊ณ ๊ฐ
INNER JOIN ๊ตฌ๋งค
ON ๊ณ ๊ฐ.๊ณ ๊ฐ์์ด๋ = ๊ตฌ๋งค.๊ณ ๊ฐ์์ด๋;
[ ์๋ฌต์ ํํ๋ฒ ] --->> ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
SELECT *
FROM ๊ณ ๊ฐ, ๊ตฌ๋งค
WHERE ๊ณ ๊ฐ.๊ณ ๊ฐ์์ด๋ = ๊ตฌ๋งค.๊ณ ๊ฐ์์ด๋;
โป ํน์ง : ๊ณตํต์ ๊ฐ์ ๊ฐ์ง ์์ฑ(ํ๋)์ด ๋๋ฒ ์ถ๋ ฅ๋จ. ex) ๊ณ ๊ฐ์์ด๋, ๊ณ ๊ฐ์์ด๋
(2) ์์ฐ์กฐ์ธ(NATURAL JOIN) : ๋ด๋ถ์กฐ์ธ์์ ์ค๋ณต๋ ์์ฑ์ ํ๋๋ก ์ถ๋ ฅ (์ค๋ณต์ ๊ฑฐ)
[ NATURAL JOIN ]
SELECT * FROM ๊ณ ๊ฐ NATURAL JOIN ๊ตฌ๋งค;
๋) ์ธ๋ถ์กฐ์ธ(OUTER JOIN)
- ์ ์ : ๊ณตํต์ ์กด์ฌํ๋ ํ๋๊ฐ์ด ์์ด๋ null ๊ฐ์ผ๋ก ๋ํ ์ด๋ธ์ ํ๋๋ก ํฉํ๋ ๋ฐฉ๋ฒ
โ
(1) ์ผ์ชฝ ์ธ๋ถ์กฐ์ธ(LEFT OUTER JOIN)
: ๋ด๋ถ์กฐ์ธ์์ ์ผ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ๊ณตํต์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ null๊ฐ์ผ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ค.โ
[ LEFT OUTER JOIN ]
SELECT * FROM ๊ณ ๊ฐ
LEFT OUTER JOIN ๊ตฌ๋งค
ON ๊ณ ๊ฐ.๊ณ ๊ฐ์์ด๋ = ๊ตฌ๋งค.๊ณ ๊ฐ์์ด๋;
(2) ์ค๋ฅธ์ชฝ ์ธ๋ถ์กฐ์ธ(RIGHT OUTER JOIN)
: ๋ด๋ถ์กฐ์ธ์์ ์ค๋ฅธ์ชฝ ํ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ๊ณตํต์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ๋ null๊ฐ์ผ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ค.โ
[ RIGHT OUTER JOIN ]
SELECT * FROM ๊ณ ๊ฐ
RIGHT OUTER JOIN ๊ตฌ๋งค
ON ๊ณ ๊ฐ.๊ณ ๊ฐ์์ด๋ = ๊ตฌ๋งค.๊ณ ๊ฐ์์ด๋;
3) ์๋ธ์ฟผ๋ฆฌ
๊ฐ) GROUP BY ๋ฅผ ์ด์ฉํ ๊ทธ๋ฃนํ
- ์ ์ : ํ ์ด๋ธ์ ํน์ ์์ฑ์ผ๋ก ๊ทธ๋ฃนํํ์ฌ ์ง๊ณํฉ์(sum, avg, count ๋ฑ)๋ฅผ ์ด์ฉํ์ฌ ํ ์ดํฐ๋ฅผ ๊ณ์ฐํจ.
[ ์ ๋ฆฝ๊ธ์ ๋ฐ๋ฅธ ๊ณ ๊ฐ์ ]
SELECT ์ ๋ฆฝ๊ธ, COUNT(*) AS ๊ณ ๊ฐ์
FROM ๊ณ ๊ฐ
GROUP BY ์ ๋ฆฝ๊ธ;
[ ์ ๋ฆฝ๊ธ์ ๋ฐ๋ฅธ ๊ณ ๊ฐ์๊ฐ 2๋ช
์ด์์ธ ๊ณ ๊ฐ์
SELECT ์ ๋ฆฝ๊ธ, COUNT(*) AS ๊ณ ๊ฐ์
FROM ๊ณ ๊ฐ
WHERE ๊ณ ๊ฐID > 10 // WHERE ์ ์ ํน๋ณํ ์กฐ๊ฑด์ด ์์ ๊ฒฝ์ฐ ์๋ต๊ฐ๋ฅ
GROUP BY ์ ๋ฆฝ๊ธ
HAVING COUNT(*) >= 2; // ๋ฐ๋์ GROUP BY์ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ๊ทธ๋ฃน์ ์กฐ๊ฑด์ ๋ช
์(๊ณ ๊ฐ์ ์กฐ๊ฑด)
๋) SQL ๋ค์ค์ฒ๋ฆฌ๋ฌธ(์๋ธ์ฟผ๋ฆฌ)์ ์ด์ฉํ ๊ทธ๋ฃนํ
- ์ ์ : ํ ์ด๋ธ์ ํน์ ์์ฑ์ผ๋ก ๊ทธ๋ฃนํํ์ฌ ์ง๊ณํฉ์(sum, avg, count ๋ฑ)๋ฅผ ์ด์ฉํ์ฌ ํ ์ดํฐ๋ฅผ ๊ณ์ฐํจ.
[ '20200405'์ผ์์ ๊ตฌ๋งคํ ๊ณ ๊ฐ๋ช
๊ฒ์ ]
SELECT ๊ณ ๊ฐ๋ช
FROM ๊ณ ๊ฐ
WHERE ๊ณ ๊ฐID = ( SELECT ๊ณ ๊ฐID
FROM ๊ตฌ๋งค
WHRER ๊ตฌ๋งค์ผ์ = '20200405');
[ ๊ตฌ๋งคํ๋์ ํ์ง ์์ ๊ณ ๊ฐ์ ๋ณด ๊ฒ์ ]
SELECT *
FROM ๊ณ ๊ฐ
WHERE ๊ณ ๊ฐID NOT IN ( SELECT ๊ณ ๊ฐID
FROM ๊ตฌ๋งค );
โ
โป ORDER BY ๋ฅผ ์ด์ฉํ ์ ๋ ฌ(๋ด๋ฆผ์ฐจ์, ์ค๋ฆ์ฐจ์)
- ์ ์ : ํ ์ด๋ธ์ ๊ฐ์ ๋ด๋ฆผ์ฐจ์( 4, 3, 2, 1) ๋๋ ์ค๋ฆ์ฐจ์(1, 2, 3, 4, 5)์ผ๋ก ์ ๋ ฌํ์ฌ ๊ฒ์
[๊ณ ๊ฐ ํ
์ด๋ธ์์ ๊ณ ๊ฐ๋ช
(์ค๋ฆ์ฐจ์), ์ ๋ฆฝ๊ธ(๋ด๋ฆผ์ฐจ์)์ผ๋ก ๊ฒ์]
SELECT ๊ณ ๊ฐ๋ช
, ์ ๋ฆฝ๊ธ
FROM ๊ณ ๊ฐ
ORDER BY ๊ณ ๊ฐ๋ช
ASC, ์ ๋ฆฝ๊ธ DESC;
โโ
4) ์งํฉ ์ฐ์ฐ์์ ์ข ๋ฅ
์งํฉ ์ฐ์ฐ์ | ์ฐ์ฐ์์ ์๋ฏธ |
UNION | (ํฉ์งํฉ)์ฌ๋ฌ ๊ฐ์ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ํ ํฉ์งํฉ์ผ๋ก ๊ฒฐ๊ณผ์์ ๋ชจ๋ ์ค๋ณต์ ๊ฑฐ |
UNION ALL | (ํฉ์งํฉ)์ฌ๋ฌ ๊ฐ์ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ํ ํฉ์งํฉ์ผ๋ก ์ค๋ณต๋ ํ๋ ๊ทธ๋๋ก ๊ฒฐ๊ณผ๋ก ํ์๋๋ค. ์ฆ, ๋จ์ํ ๊ฒฐ๊ณผ๋ง ํฉ์ณ๋์ ๊ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๋ฌ ์ง์ ๊ฒฐ๊ณผ๊ฐ ์ํธ ๋ฐฐํ์ ์ธ(Exclusive)์ผ๋ ๋ง์ด ์ฌ์ฉํ๋ค. ๊ฐ๋ณ SQL๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์๋ก ์ค๋ณต๋์ง ์๋ ๊ฒฝ์ฐ, UNION๊ณผ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๋ค. (๊ฒฐ๊ณผ์ ์ ๋ ฌ ์์์๋ ์ฐจ์ด๊ฐ ์์ ์ ์์) |
INTERSECT | (๊ต์งํฉ)์ฌ๋ฌ ๊ฐ์ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ํ ๊ต์งํฉ์ด๋ค. ์ค๋ณต์ ๊ฑฐ |
EXCEPT | (์ฐจ์งํฉ)์์ SQL๋ฌธ์ ๊ฒฐ๊ณผ์์ ๋ค์ SQL๋ฌธ์ ๊ฒฐ๊ณผ์ ๋ํ ์ฐจ์งํฉ์ด๋ค. ์ค๋ณต์ ๊ฑฐ (์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ MINUS๋ฅผ ์ฌ์ฉํจ) |
โป ์ถ์ ๊ธฐ์ค ( ์ ์ฉ๊ธฐ๊ฐ 2022๋ 1์ 1์ผ - 2024๋ 12์ 31์ผ )
โ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์ฉ
โ ์์ฉ SW ๊ธฐ์ด ๊ธฐ์ ํ์ฉ
โ ์ ํ๋ฆฌ์ผ์ด์ ํ ์คํธ ์ํ
์ถ๊ฐ +
โ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ฉ (2001020230_19v4)
โ ๊ฐ๋ฐ์ ํ๊ฒฝ ๊ตฌ์ถ (LM2001020233_19v4)