๐ป
[SQLD] Chapter 3. SQL ๊ธฐ๋ณธ ๋ณธ๋ฌธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
: ํน์ ๊ธฐ์ ์ด๋ ์กฐ์ง ๋๋ ๊ฐ์ธ์ด ํ์์ ์ํด(์: ๋ถ๊ฐ๊ฐ์น๊ฐ ๋ฐ์ํ๋) ๋ฐ์ดํฐ๋ฅผ ์ผ์ ํ ํํ๋ก ์ ์ฅํด๋์ ๊ฒ.
- DBMS?
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์ํํธ์จ์ด
- SQL?
: RDBMS ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
: ๋ฐ์ดํฐ๋ฅผ ํ ์ด๋ธ ํํ๋ก ์ ์ฅํด๋์ ๊ฒ.
- ์ฅ์
- ์ ๊ทํ๋ฅผ ํตํด ์ด์ํ์์ ์ ๊ฑฐํ๊ณ ๋ฐ์ดํฐ ์ค๋ณต์ ํผํ ์ ์๋ค.
- ๋์์ฑ ๊ด๋ฆฌ, ๋ณํ ์ ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ค.
- ๋ฐ์ดํฐ์ ํํ ๋ฐฉ๋ฒ ๋ฑ์ ์ฒด๊ณํํ ์ ์๊ณ , ๋ฐ์ดํฐ ํ์คํํ ์ ์๋ค.
- ๋ณด์ ๊ธฐ๋ฅ
- ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ํ๋ณต/๋ณต๊ตฌํ๋ ๊ธฐ๋ฅ
- SQL
- ๋ฐ์ดํฐ ์กฐ์์ด(DML)
- SELECT, INSERT, UPDATE, DELETE
- ๋ฐ์ดํฐ ์ ์์ด(DDL)
- CREATE, ALTER, DROP, RENAME
- ๋ฐ์ดํฐ ์ ์ด์ด(DCL)
- GRANT, REVOLKE
- ํธ๋์ญ์
์ ์ด์ด(TCL)
- COMMIT, ROLLBACK
- ํ ์ด๋ธ(Table)
: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ฒด(Object)๋ก์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๋จ์
- ํ ์ด๋ธ์ ๊ตฌ์กฐ
- ์นผ๋ผ/์ด : 2์ฐจ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์์ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ง ํ๋ํ๋์ ํน์ ์์ฑ
- ํ : 2์ฐจ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์์ ๊ฐ๋ก ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ง ์ฐ๊ฒฐ๋ ๋ฐ์ดํฐ
- ํ ์ด๋ธ ๊ด๊ณ ์ฉ์ด
- ์ ๊ทํ(Normalization) : ํ ์ด๋ธ์ ๋ถํ ํ์ฌ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ํ๋ณดํ๊ณ , ๋ถํ์ํ ์ค๋ณต์ ์ค์ด๋ ํ๋ก์ธ์ค
- ๊ธฐ๋ณธํค(Primary Key) : ํ ์ด๋ธ์ ์กด์ฌํ๋ ๊ฐ ํ์ ํ ๊ฐ์ง ์๋ฏธ๋ก ํน์ ํ ์ ์๋ ํ ๊ฐ ์ด์์ ์นผ๋ผ
- ์ธ๋ถํค(Foreign Key) : ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ก ์ฌ์ฉ๋๊ณ ์๋ ๊ด๊ณ๋ฅผ ์ฐ๊ฒฐํ๋ ์นผ๋ผ
- ERD(Entity Relationship Diagram)
: ERD์ ๊ตฌ์ฑ์์๋ ์ํฐํฐ(Entity), ๊ด๊ณ(Relationship), ์์ฑ(Attiribute) 3๊ฐ์ง
- ๋ฐ์ดํฐ ์ ํ
- ์ซ์ ํ์
- NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT, FLOAT, REAL, DOUBLE...
- ๋ฌธ์ ํ์
- CHAR : ๊ฐ๋ณ ๊ธธ์ด
- VARCHAR : ๊ณ ์ ๊ธธ์ด
- CHAR ์์๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋ ๊ณต๋ฐฑ์ ์ฑ์์ ๋น๊ตํ๊ณ VARCHAR ์ ํ์์๋ ๋งจ ์ฒ์๋ถํฐ ํ ๋ฌธ์์ฉ ๋น๊ตํ๊ณ ๊ณต๋ฐฑ๋ ํ๋์ ๋ฌธ์๋ก ์ทจ๊ธํ๋ค. ์) CHAR ์ ํ 'AA' = 'AA ' vs VARCHAR ์ ํ 'AA' ≠ 'AA '
- ์ ์ฝ์กฐ๊ฑด(CONSTRAINT)
: ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณดํธ์ ์ธ ๋ฐฉ๋ฒ
๋๋ฉ์ธ ์ ์ฝ์กฐ๊ฑด, ํค ์ ์ฝ์กฐ๊ฑด, ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด
- ์ข
๋ฅ
- PRIMARY KEY(๊ธฐ๋ณธํค)
- UNIQUE KEY(๊ณ ์ ํค) : ํ ์ด๋ธ์ ์ ์ฅ๋ ํ ๋ฐ์ดํฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํ ๊ณ ์ ํค๋ฅผ ์ ์ํ๋ค. NULL ๊ฐ ํ์ฉ
- NOT NULL
- CHECK : ์ ๋ ฅํ ์ ์๋ ๊ฐ์ ๋ฒ์ ๋ฑ์ ์ ํํ๋ค.
- FOREIGN KEY(์ธ๋ํค)
- NULL ์ ์๋ฏธ : ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋์ ๊ณต์งํฉ๊ณผ๋ ๋ค๋ฅด๋ค. ์์ง ์ ์๋์ง ์์ ๋ฏธ์ง์ ๊ฐ, ๋๋ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํ๋ค.
- DEFAULT ์ ์๋ฏธ : ๋ฐ์ดํฐ ์ ๋ ฅ ์์ ์นผ๋ผ์ ๊ฐ์ด ์ง์ ๋์ด ์์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ
- DDL
: ์์ฑ, ๋ณ๊ฒฝ, ์์
- CREATE TABLE : CREATE TABLE copy_student AS SELECT * FROM student;
- ALTER TABLE
- ADD COLUMN : ALTER TABLE copy_student ADD (address VARCHAR2(80));
- DROP COLUMN : ALTER TABLE copy_student DROP COLUMN address;
- MODIFY COLUMN : ALTER TABLE copy_student MODIFY (univ_name VARCHAR2(20) DEFAULT '์๋ช ์ฌ์๋ํ๊ต' NOT NULL);
- RENAME COLUMN : ALTER TABLE copy_student RENAME COLUMN univ_name TO university);
- DROP CONSTRAINT : ALTER TABLE copy_student DROP CONSTRAINT sub_fk;
- ADD CONSTRAINT : ALTER TABLE copy_student ADD CONSTRAINT sub_fk FOREIGN KEY (sub_no) REFERENCES subject(sub_no);
- RENAME TABLE : RENAME copy_student TO cp_student;
- DROP TABLE : DROP TABLE copy_student CASCADE CONSTRAINT; (* cascade ์ต์ ์ ํด๋น ํ ์ด๋ธ๊ณผ ๊ด๊ณ๊ฐ ์์๋ ์ฐธ์กฐ๋๋ ์ ์ฝ์กฐ๊ฑด์ ๋ํด์๋ ์ญ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.)
- TRUNCATE TABLE : TRUNCATE TABLE copy_student; (* ํ ์ด๋ธ ์์ฒด๊ฐ ์ญ์ ๋๋ ๊ฒ์ด ์๋๊ณ , ํด๋น ํ ์ด๋ธ์ ๋ค์ด์๋ ๋ชจ๋ ํ๋ค์ด ์ ๊ฑฐ๋๊ณ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋๋ก ํด์ ํ๋ค. ํ ์ด๋ธ ๊ตฌ์กฐ๊น์ง ์์ ํ ์ญ์ ํ๊ธฐ ์ํด์๋ DROP TABLE ์ ์คํ)
ํ ์ด๋ธ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์์คํ ํ์ฉ ์ธก๋ฉด์์๋ DELETE TABLE ๋ณด๋ค๋ ์์คํ ๋ถํ๊ฐ ์ ์ TRUNCATE TABLE ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ซ๋ค. ๋จ, TRUNCATE TABLE ์ ๊ฒฝ์ฐ ์ ์์ ์ธ ๋ณต๊ตฌ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ฃผ์ํด์ผํ๋ค.
- DML
: ์ ๋ ฅ, ์์ , ์ญ์ , ์กฐํ ๋ช ๋ น์ด
- INSERT : INSERT INTO student VALUES (1510599, '๊น๋ก๋ก', '์ปดํจํฐ๊ณผํ', 1);
- UPDATE : UPDATE student SET stu_grade = 4 WHERE stu_no = 1510599;
- DELETE : DELETE FROM student; (*student ํ ์ด๋ธ ์ญ์ )
- SELECT : SELECT * FROM student;
- DROP vs TRUNCATE vs DELETE
DROP | TRUNCATE | DELETE |
DDL | DDL(์ผ๋ถ DML ์ฑ๊ฒฉ ๊ฐ์ง) | DML |
Rollback ๋ถ๊ฐ๋ฅ | Rollback ๋ถ๊ฐ๋ฅ | Commit ์ด์ Rollback ๊ฐ๋ฅ |
Auto Commit | Auto Commit | ์ฌ์ฉ์ Commit |
ํ ์ด๋ธ์ด ์ฌ์ฉํ๋ Storage๋ฅผ ๋ชจ๋ Release | ํ ์ด๋ธ์ด ์ฌ์ฉํ๋ Storage ์ค ์ต์ด ํ ์ด๋ธ ์์ฑ์ ํ ๋น๋ Storage๋ง ๋จ๊ธฐ๊ณ Release | ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ Deleteํด๋ ์ฌ์ฉํ๋ Storage๋ Release๋์ง ์์ |
ํ ์ด๋ธ์ ์ ์ ์์ฒด๋ฅผ ์์ ํ ์ญ์ ํจ | ํ ์ด๋ธ์ ์ต์ด ์์ฑ๋ ์ด๊ธฐ์ํ๋ก ๋ง๋ฌ | ํ ์ดํฐ๋ง ์ญ์ |
* ์ํ์ค๊ฐ ์์ ๋ truncate๋ ์ํ์ค๋ฒํธ๊ฐ ์ด๊ธฐํ๋์ง๋ง delete๋ ๊ทธ๋ ์ง ์๋ค.
- ํธ๋์ญ์ ์ด๋?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ฐ์ฐ๋จ์
- ํธ๋์ญ์ ์ ๋ถํ ํ ์ ์๋ ์ต์์ ๋จ์์ด๋ค. (์ ๋ถ ์ ์ฉํ๊ฑฐ๋ ์ ๋ถ ์ทจ์/ ALL OR NOTHING)
- ๋ถ๋ฆฌ๋ ์ ์๋ ํ ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐ์์ ์๋ฏธํ๋ค.
- ํ๋์ ํธ๋์ญ์ ์๋ ํ๋ ์ด์์ SQL๋ฌธ์ฅ์ด ํฌํจ๋๋ค.
- ํธ๋์ญ์ ์ ํน์ง
- ์์์ฑ(Atomicity) : ํธ๋์ญ์ ์์ ์ ์๋ ์ฐ์ฐ์ ๋ชจ๋ ์ฑ๊ณตํ๋์ง ์๋๋ฉด ์ ํ ์คํ๋์ง ์์์ผํ๋ค.
- ์ผ๊ด์ฑ(Consistency) : ํธ๋์ญ์ ์ด ์คํ๋๊ธฐ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด์์ด ์๋ค๋ฉด ์คํ ํ์๋ ์ด์์ด ์์ด์ผํ๋ค.
- ๊ณ ๋ฆฝ์ฑ(Isolation) : ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ค์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์๋ ์๋๋ค.
- ์ง์์ฑ(Durability) : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด ๊ทธ ํธ๋์ญ์ ์ด ๊ฐฑ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ค.
- ํธ๋์ญ์ ์ ๋ํ ๊ฒฉ๋ฆฌ์ฑ์ด ๋ฎ์ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์
- Dirty Read : ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํด ์์ ๋์์ง๋ง ์์ง ์ปค๋ฐ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ๋งํ๋ค.
- Non-Repeatable Read : ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ๋๋ฐ, ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ฐ์ ์์ ๋๋ ์ญ์ ํ๋ ๋ฐ๋์ ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋ํ๋๋ ํ์์ ๋งํ๋ค.
- Phantom Read : ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ๋๋ฐ, ์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ์์ ์๋ ์ ๋ น ๋ ์ฝ๋๊ฐ ๋๋ฒ์งธ ์ฟผ๋ฆฌ์์ ๋ํ๋๋ ํ์์ ๋งํ๋ค.
- TCL
: ํธ๋์ญ์ ์ ์ปจํธ๋กคํ๋ TCL
- COMMIT : ์ ๋ ฅ, ์์ , ์ญ์ ํ ์๋ฃ์ ๋ํด์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ ์๋ฃํ๋ค.
- ROLLBACK : ์ ๋ ฅ, ์์ , ์ญ์ ํ ๋ฐ์ดํฐ์ ๋ํด์ ์ปค๋ฐ ์ด์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์ํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.
- SAVEPOINT : ์ ์ฅ์ . ์ ์ฅ์ ์ ์ ์ํจ์ผ๋ก์จ ๋กค๋ฐฑํ ๋ ์ ์ฒด ๋กค๋ฐฑ์ด ์๋ ์ผ๋ถ๋ง ๋กค๋ฐฑํ ์ ์๋ค.
COMMIT ๊ณผ ROLLBACK ์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ , ์๊ตฌ์ ์ธ ๋ณ๊ฒฝ์ ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ ์ ์์ผ๋ฉฐ, ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐ๊ด๋ ์์ ์ ๊ทธ๋ฃนํํ์ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
- WHERE ์
- ROWNUM , TOP
: where ์ ์์ ํ์ ๊ฐ์๋ฅผ ์ ํํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
์) SELECT student_name FROM student where ROWNUM = 1; SELECT TOP(1) FROM student;
๋ ๊ฑด ์ด์์ N๊ฐ์ ํ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๊ฒฝ์ฐ SELECT student_name FROM student WHERE ROWNUM <= 2; (X) ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
SELECT TOP(N) WITH TIES ~ : WITH TIES ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ๊ฐ๋ ํฌํจํ์ฌ ์ถ๋ ฅํ๋ค.
- ๋ด์ฅํจ์
- ๋ฌธ์ํ ํจ์
dual ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ์ ํจ๊ป ์ค๋ผํด์์ ์๋์ผ๋ก ์์ฑ๋๋ ํ ์ด๋ธ์ ๋๋ค. ์ฌ์ฉ์ sys๊ฐ ์์ ํ๋ฉฐ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์ค ๊ฐ๋ฅํ ํ ์ด๋ธ์ ๋๋ค.
- ๋ ์งํ ํจ์
- ๋ณํํ ํจ์
- CASE ํํ
: IF-THEN-ELSE ๋ ผ๋ฆฌ์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ํํ์์ ์์ฑํด์ SQL์ ๋น๊ต ์ฐ์ฐ ๊ธฐ๋ฅ์ ๋ณด์ํ๋ ์ญํ ์ ํ๋ค.
IF SAL > 2000
THEN revised_salary = sal
ELSE revised_salary = 2000
END-IF.
SELECT ename,
CASE
WHEN sal > 2000
THEN sal
ELSE 2000
END resvised_salary
- NVL/ ISNULL ํจ์
SELECT NVL(mgr, -1) mgr
FROM employees
SELECT * FROM employees WHERE mgr IS NULL;
- NULLIF
: NULLIF ํจ์๋ ํํ์1์ด ํํ์2์ ๊ฐ์ผ๋ฉด NULL์, ๊ฐ์ง ์์ผ๋ฉด ํํ์1์ ๋ฆฌํดํ๋ค. ํน์ ๊ฐ์ NULL๋ก ๋์ฒดํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
NULLIF(ํํ์1, ํํ์2)
- COALESCE
: ์ธ์์ ์ซ์๊ฐ ํ์ ๋์ด ์์ง ์์ผ๋ฉฐ, ์์์ ๊ฐ์ ํํ์์์ NULL์ด ์๋ ์ต์ด์ ํํ์์ ๋ํ๋ธ๋ค. ๋ชจ๋ ํํ์์ด NULL์ด๋ผ๋ฉด NULL์ ๋ฆฌํดํ๋ค.
COALESCE (ํํ์1, ํํ์2, ... )
์ผ๋ฐํ ํจ์ | ํจ์ ์ค๋ช |
NVL(ํํ์1, ํํ์2)-Oracleํจ์/ ISNULL(ํํ์1, ํํ์2)-SQL Serverํจ์ | ํํ์1์ ๊ฒฐ๊ณผ๊ฐ์ด NULL์ด๋ฉด ํํ์2์ ๊ฐ์ ์ถ๋ ฅํ๋ค. ๋จ, ํํ์1๊ณผ ํํ์2์ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ํ์ ์ด ๊ฐ์์ผํ๋ค. NULL๊ด๋ จ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํจ์์ด๋ฏ๋ก ์๋นํ ์ค์ํ๋ค. |
NULLIF(ํํ์1, ํํ์2) | ํํ์1์ด ํํ์2์ ๊ฐ์ผ๋ฉด NULL์, ๊ฐ์ง ์์ผ๋ฉด ํํ์1์ ๋ฆฌํดํ๋ค. |
COALESCE(ํํ์1, ํํ์2, ....) | ์์์ ๊ฐ์ ํํ์์์ NULL์ด ์๋ ์ต์ด์ ํํ์์ ๋ํ๋ธ๋ค. ๋ชจ๋ ํํ์์ด NULL์ด๋ผ๋ฉด NULL์ ๋ฆฌํดํ๋ค. |
- ์ง๊ณํจ์
: select ์ , having ์ , order by ์ ์ ์ฌ์ฉ๊ฐ๋ฅํ๋ค.
โญ๏ธโญ๏ธโญ๏ธNULL๊ฐ์ ํฌํจํ๋ ์ง ์ํ๋ ์ง
- GROUP BY ์
: FROM ์ ๊ณผ WHERE ์ ๋ค์ ์ค๋ฉฐ, ๋ฐ์ดํฐ๋ค์ ์์ ๊ทธ๋ฃน์ผ๋ก ๋ถ๋ฅํ์ฌ ์๊ทธ๋ฃน์ ๋ํ ํญ๋ชฉ๋ณ ํต๊ณ ์ ๋ณด๋ฅผ ์ป์ ๋ ์ฌ์ฉํ๋ค.
- GROUP BY ์ ๊ณผ HAVING ์ ์ ํน์ฑ
- ์ง๊ณ ํจ์์ ํต๊ณ ์ ๋ณด๋ NULL๊ฐ์ ๊ฐ์ง ํ์ ์ ์ธํ๊ณ ์ํํ๋ค.
- GROUP BY ์ ์์๋ SELECT ์ ๊ณผ๋ ๋ค๋ฅด๊ฒ ALIAS ๋ช ์ ์ฌ์ฉํ ์ ์๋ค.
- WHERE ์ ์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ GROUP ์ผ๋ก ๋๋๊ธฐ ์ ์ ํ๋ค์ ๋ฏธ๋ฆฌ ์ ๊ฑฐํ๋ค.
- HAVING ์
: ์ง๊ณํจ์๋ฅผ ์กฐ๊ฑด์ผ๋ก ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- ORDER BY ์ ๋ ฌ
: ์นผ๋ผ๋ช ๋์ SELECT ์ ์์ ์ฌ์ฉํ ALIAS ๋ช ์ด๋ ์นผ๋ผ ์์๋ฅผ ๋ํ๋ด๋ ์ ์๋ ์ฌ์ฉ ๊ฐ๋ฅ. ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ(ASC)
- JOIN
'TIL > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] Chapter 2. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ (0) | 2020.04.26 |
---|---|
[SQLD] Chapter 1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (0) | 2020.04.18 |