RDB๐๏ธ (16) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ SQL : ์ธ๋ฑ์ค ์ถ์ฒ : ๋ด์ผ๋ฐฐ์์บ ํ ์ธ๋ฑ์ค๋ฅผ ๋ถ์ด๋ฉด, ๊ท ํ ํธ๋ฆฌ ๋ ธ๋๊ฐ ์์ฑ๋์ด ๋น ๋ฅธ ํ์์ด ๊ฐ๋ฅํ๋ค ์ธ๋ฑ์ค๋ ๊ฐ ์ด์ ๋ถ์ผ ์ ์๋ค. ์ธ๋ฑ์ค์ ์ฅ๋จ์ - Select ๋ฌธ์ผ๋ก ๊ฒ์ํ๋ ์๋๊ฐ ๋งค์ฐ ๋นจ๋ผ์ง๋ค - ์ธ๋ฑ์ค๋ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฏ๋ก DB ์ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํ๋ค. - ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ (INSERT, UPDATE, DELETE)๊ฐ ์์ฃผ ์ผ์ด๋๋ฉด ์คํ๋ ค ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ธ๋ฑ์ค์ ์ข ๋ฅ - ์๋ ์์ฑ ์ธ๋ฑ์ค ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค : ์ด๋ค ์ด์ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํ ๊ฒฝ์ฐ ์๋์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์์ฑ(๋ฐ์ดํฐ ์ ๋ ฌ O) ๋ณด์กฐ ์ธ๋ฑ์ค : ์ด๋ค ์ด์ ๊ณ ์ ํค๋ก ์ค์ ํ๋ฉด ์๋์ผ๋ก ๋ณด์กฐ ์ธ๋ฑ์ค๊ฐ ์์ฑ(๋ฐ์ดํฐ ์ ๋ ฌ X) - ์๋ ์์ฑ ์ธ๋ฑ์ค : ๋ณด์กฐ ์ธ๋ฑ์ค ์ธ๋ฑ์ค ์์ฑ CREATE [UNIQUE] INDEX ์ธ๋ฑ์ค_์ด๋ฆ O.. SQL : JOIN ์ถ์ฒ : ๋ด์ผ๋ฐฐ์์บ ํ ๋ ๊ฐ์ ํ ์ด๋ธ์ ์๋ก ๋ฌถ์ด ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ผ ๋ ์ฌ์ฉ ์ฐ๊ด๊ด๊ณ * ์ผ๋๋ค : ํ ๋ช ์ ๋ฉค๋ฒ๊ฐ ๊ตฌ๋งค๋ฅผ ์ฌ๋ฌ ๋ฒ ํ ์ ์๋ค. -> ๋ฉค๋ฒ ํ ์ด๋ธ์ PK๊ฐ ๊ตฌ๋งค ํ ์ด๋ธ์ FK๋ก ๋ค์ด๊ฐ ์๋ค. ๋ด๋ถ ์กฐ์ธ : ๋ ํ ์ด๋ธ์ด ์๋ก ๊ด๋ จ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ ~ ๊ต์งํฉ ๋ด๋ถ ์กฐ์ธ์ ํ์ SELECT FROM INNER JOIN -- INNER JOIN์ 'INNER' ์๋ต๊ฐ๋ฅ ON [WHERE ๊ฒ์ ์กฐ๊ฑด] ex) ํ ์ด๋ธ ์ด๋ฆ์ ๋ณ์นญ์ ๋ถ์ธ ๋ด๋ถ ์กฐ์ธ SELECT buy.mem_id, member.mem_name, buy.prod_name, member.addr FROM buy JOIN member ON buy.mem_id = member.mem_id; -- ํ ์ด๋ธ ์ด๋ฆ์ ๋ณ์นญ์ ๋ถ์ด๋ฉด S.. SQL : ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ถ์ฒ : ๋ด์ผ๋ฐฐ์์บ ํ CREATE : ํ ์ด๋ธ ์์ฑ SQL CREATE TABLE users (id INT, name CHAR(4), age INT); + DESC : ํ ์ด๋ธ์ ๋ํ ์ค๋ช ์ ์กฐํ DESC users; INSERT : ํ ์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์ INSERT INTO ํ ์ด๋ธ [(์ด1, ์ด2, ...)] VALUES (๊ฐ1, ๊ฐ2, ...) - ์ด์ ์๋ตํ ์ ์๋ค : VALUES์์ ์์์ ๊ฐ์๋ฅผ ๋ง์ถฐ์ผ ํ๋ค. - ์ผ๋ถ ์ด๋ง ๋ช ์ํ๊ณ ๊ทธ ์ด์๋ง ๊ฐ์ ์ฝ์ ํ ์ ์๋ค.(๋ค๋ง, ๋ช ์ํ์ง ์์ ์ด์๋ Null๊ฐ ์ฝ์ ) - ์ด์ ์์๋ฅผ ๋ฐ๊ฟ์ ๋ช ์ํ ๊ฒฝ์ฐ์๋ ์ด์ ์์์ ๊ฐ์ ์์๊ฐ ๋ฐ๋์ด๋ ์๊ด์๋ค AUTO_INCREMENT ์๋์ผ๋ก ๊ฐ์ด ์ฆ๊ฐํด์ผํ๋ ์ด์ ์ฌ์ฉํ๋ค, ์ฃผ๋ก id, ๋ฐ๋์ PRIMARY K.. SQL : ๋ฐ์ดํฐ ์กฐํ ์ถ์ฒ : ๋ด์ผ๋ฐฐ์์บ ํ SELECT ~ FROM USE USE ๋ฐ์ดํฐ๋ฒ ์ด์ค_์ด๋ฆ; Select ๋ฌธ์ ๊ธฐ๋ณธ ํ์ SELECT select_expr [FROM table_references] [WHERE where_condision] [GROUP BY {col_name | expr | position}] [HAVING where_condition] [ORDER BY {col_name | expr | position}] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [] ๋ถ๋ถ์ ์๋ต์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์์๋ ์ง์ผ์ผ ํ๋ค. SELECT ~ FROM SELECT ์ด_์ด๋ฆ FROM ํ ์ด๋ธ_์ด๋ฆ from ๋ค ํ ์ด๋ธ๊ณผ ๊ทธ ์ค ์ด_์ด๋ฆ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ฟผ๋ฆฌ๋ฌธ, ๋ชจ.. ๊ฒ์ํ์ ๋๊ธ์ ํฌํจํ๊ณ ์๋ ๊ฒ์๋ฌผ์ ๋๊ธ ์ญ์ ์์ด ๊ฒ์๋ฌผ๋ง ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์์ธ Referential integrity constraint violation : 2) SQL ๋ถ๋ชจ(๊ฒ์๋ฌผ) -> ์์(๋๊ธ) ๊ด๊ณ๋ก DB๊ฐ ์ค์ ๋์ด์์ ๋, ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์ง์ธ ๋ ๋จ๊ฒจ์ง๋ ์์ ์ํฐํฐ๊ฐ ์๋ค๋ฉด ๊ทธ ์์ ์ํฐํฐ๋ฅผ ๊ณ ์ ๊ฐ์ฒด๋ก ๋ณธ๋ค. ์ด๋ฅผ ๊ทธ๋๋ก ๋ ๊ฒฝ์ฐ Referential integrity constraint violation SQL ์์ธ๊ฐ ๋ฐ์ํ๋ค. DB ๊ด์ ์์ Cascade ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด ์์ธ์ ๋์ํ ์ ์๋ค. 1. ํ ์ด๋ธ ์์ฑ ์ CREATE TABLE ์ฐธ์กฐ ํ ์ด๋ธ ( ... CONSTRAINT ์ฐธ์กฐํค FOREIGN KEY(๊ธฐ๋ณธํค) REFERENCES ๊ธฐ๋ณธ ํ ์ด๋ธ(ํค๋ณธํค) ON DELETE CASCADE ... ) 2. ALTER TABLE AlTER TABLE ์ฐธ์กฐ ํ ์ด๋ธ์ด๋ฆ ADD CONSTRAINT ์ฐธ์กฐํค FOREIGN KEY(๊ธฐ๋ณธํค) REFERENCES ๊ธฐ.. SQL ์ ์ฝ์กฐ๊ฑด AUTO_INCREMENT : ์ปฌ๋ผ์ ๊ณ ์ ๋ฒํธ๋ฅผ 1์ฉ ์ฆ๊ฐ์์ผ ๋ถ์ฌํ์ฌ ์์ฑํด์ค๋๋ค. (์ด์ฉํ๋ ค๋ฉด ํด๋น ์ปฌ๋ผ์ value๋ฅผ ์ฃผ์ง ์์ผ๋ฉด ๋๋ค) CREATE TABLE ํ ์ด๋ธ์ด๋ฆ ( ํ๋์ด๋ฆ ํ๋ํ์ AUTO_INCREMENT, // id bigint AUTO_INCREMENT, ... ); NOT NULL : NULL ๊ฐ์ ์ ์ฅํ ์ ์๋ค. UNIQUE : ํด๋น ํ๋๋ ์๋ก ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ ธ์ผํ๋ค. PRIMARY KEY(๊ธฐ๋ณธ ํค) : ๋ฐ์ดํฐ์ ์ค๋ณต์ ๋ฐฉ์งํ๊ธฐ ์ํด / ๊ธฐ๋ณธ ํค ~ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค์ด ๋ฐ์ดํฐ ๋ฐํ ์๋๋ฅผ ํฅ์ํ๊ธฐ ์ํด ๊ธฐ๋ณธ ํค ํ๋๊ฐ NOT NULL๊ณผ UNIQUE ์ ์ฝ์กฐ๊ฑด์ ํน์ง์ ๋ชจ๋ ๊ฐ์ง๊ฒ ๋๋ค. ex) create table member ( mem_id char(8) not null pri.. SQL ๊ด๋ จ ๋จ์ด ์ ๋ฆฌ DDL : Data Definition Language, ํ ์ด๋ธ์ด๋ ๊ด๊ณ์ ๊ตฌ์กฐ ์์ฑ 1) CREATE - ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ํ ์ด๋ธ ์์ฑ (ํ๋? ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ก ๋ฐฉํฅ์ผ๋ก ํ์ํ ์ปฌ๋ผ(์ด)) CREATE DATABASE ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฆ; CREATE TABLE ํ ์ด๋ธ์ด๋ฆ ( ํ๋์ด๋ฆ1 ํ๋ํ์ 1, ํ๋์ด๋ฆ2 ํ๋ํ์ 2, ... ); 2) ALTER - ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ด์ฉ์ ์์ ALTER TABLE ํ ์ด๋ธ์ด๋ฆ ADD ํ๋์ด๋ฆ ํ๋ํ์ ; ALTER TABLE ํ ์ด๋ธ์ด๋ฆ DROP ํ๋์ด๋ฆ; ALTER TABLE ํ ์ด๋ธ์ด๋ฆ MODIFY COLUMN ํ๋์ด๋ฆ ํ๋ํ์ ๋ณ๊ฒฝ์ฌํญ; ALTER TABLE ํ ์ด๋ธ์ด๋ฆ ALTER COLUMN ํ๋์ด๋ฆ ํ๋ํ์ ๋ณ๊ฒฝ์ฌํญ; 3) DROP - ๋ฐ์ดํฐ๋ฒ ์ด์ค์.. [ํ]์ถ์ฒ: haddoddo MySQL ์ํฌ๋ฒค์น๋ฅผ ์ด์ฉํ ์คํค๋ง, ํ ์ด๋ธ ์์ฑ ์ถ์ฒ: https://haddoddo.tistory.com/entry/MySQL-MySQL-Workbench-์ฌ์ฉ๋ฒ-์คํค๋ง-์์ฑ-ํ ์ด๋ธ-์์ฑ-CRUDselect-insert-delete-update [haddoddo:ํฐ์คํ ๋ฆฌ] ์ด์ 1 2 ๋ค์