DDL์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ฒด์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค. ์ด๋ฅผ ํตํด ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ์์ฑ, ์์ , ์ญ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ๐ ๏ธ
CREATE
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์์ฑALTER
: ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์์ DROP
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด ์ญ์ RENAME
: ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด์ ์ด๋ฆ ๋ณ๊ฒฝTRUNCATE
: ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ญ์ ๋ฐ ์ด๊ธฐํ-- ํ
์ด๋ธ ์์ฑ
CREATE TABLE table_name (
column_name datatype constraints
);
-- ํ
์ด๋ธ ์์
ALTER TABLE table_name
ADD column_name datatype;
-- ํ
์ด๋ธ ์ญ์
DROP TABLE table_name;
-- ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
RENAME TABLE old_table_name TO new_table_name;
-- ํ
์ด๋ธ ๋ฐ์ดํฐ ์ด๊ธฐํ
TRUNCATE TABLE table_name;
CHAR(M)
: ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด. M
์ 1~255 ์ฌ์ด์ ๊ฐ์ด๋ฉฐ, ์งง์ ๋ฌธ์์ด๋ ์ง์ ํ ๊ธธ์ด๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํฉ๋๋ค.
CHAR(20)
์ 10์๋ฅผ ์ ์ฅํด๋ 20๋ฐ์ดํธ ์ฌ์ฉ ๐VARCHAR(M)
: ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด. M
์ 1~65535 ์ฌ์ด์ ๊ฐ์ด๋ฉฐ, ์ค์ ์ ์ฅํ ๊ธธ์ด๋งํผ๋ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ + ๊ธธ์ด ์ ๋ณด ์ ์ฅ์ฉ 1๋ฐ์ดํธ ์ถ๊ฐ.
VARCHAR(20)
์ 10์๋ฅผ ์ ์ฅํ๋ฉด 11๋ฐ์ดํธ ์ฌ์ฉ ๐TEXT ํ์ ๋ค:
TINYTEXT
: ์ต๋ 255๋ฐ์ดํธTEXT
: ์ต๋ 65535๋ฐ์ดํธMEDIUMTEXT
: ์ต๋ 16777215๋ฐ์ดํธLONGTEXT
: ์ต๋ 4294967295๋ฐ์ดํธENUM: ๋ฏธ๋ฆฌ ์ ์๋ ๊ฐ ์ค ํ๋๋ฅผ ์ ์ฅํ๋ฉฐ, ์ต๋ 65535๊ฐ์ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ์ซ์๋ก ์ ์ฅ๋ฉ๋๋ค.
SET: ๋ฏธ๋ฆฌ ์ ์๋ ๊ฐ๋ค ์ค ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ์ต๋ 64๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
BIT(M): ๋นํธ ๊ฐ์ ์ ์ฅํ๋ฉฐ, M
์ 1~64 ์ฌ์ด์ ๋นํธ ์์
๋๋ค.
BOOL/BOOLEAN: TINYINT(1)
์ ๋์์ด๋ก, 0
์ false, 1
์ true๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ ์ ํ์ :
๋ถ๋ ์์์ ํ์ :
๊ณ ์ ์์์ ํ์ :
YYYY-MM-DD
ํ์์ผ๋ก ์ ์ฅ (๋ฒ์: 1001-01-01 ~ 9999-12-31)HH:MM:SS
ํ์์ผ๋ก ์ ์ฅ (๋ฒ์: -838:59:59 ~ 838:59:59)YYYY-MM-DD HH:MM:SS
ํ์์ผ๋ก ์ ์ฅ (๋ฒ์: 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)MySQL์์ ํ ์ด๋ธ์ ์์ฑํ ๋ ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ์ต์ ์์ฑ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ๋ํด ์ค๋ช ํ๊ณ , ๊ฐ๊ฐ์ ์์๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
NOT NULL: ๊ฐ ํ์์ ํด๋น ์ด์ ๋ฐ๋์ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ, NULL
๊ฐ์ ํ์ฉ๋์ง ์์ต๋๋ค.
CREATE TABLE users (
id INT NOT NULL,
name VARCHAR(50) NOT NULL
);
DEFAULT: ๊ฐ์ด ๋ช ์๋์ง ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ค์ ๋๋ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํฉ๋๋ค.
CREATE TABLE products (
id INT AUTO_INCREMENT,
price DECIMAL(10, 2) DEFAULT 0.00
);
UNSIGNED: ์์ ๊ฐ์ ํ์ฉํ์ง ์๊ณ ์์๋ง ํ์ฉํ๋ ์ซ์ ํ์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
CREATE TABLE scores (
id INT UNSIGNED,
points INT UNSIGNED
);
AUTO INCREMENT: ์ ๋ ์ฝ๋๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ํ๋ ๊ฐ์ด ์๋์ผ๋ก 1์ฉ ์ฆ๊ฐํฉ๋๋ค.
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_number VARCHAR(20)
);
PRIMARY KEY: ํ
์ด๋ธ์ ๊ฐ ํ์ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํ ์ด๋ก ์ค์ ๋ฉ๋๋ค. AUTO INCREMENT
์ ์์ฃผ ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
CREATE TABLE employees (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
);
NOT NULL: ์ด์ NULL
๊ฐ์ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ๋ฐ๋์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค.
ALTER TABLE students
MODIFY COLUMN name VARCHAR(50) NOT NULL;
UNIQUE: ์ด์ ๊ฐ์ด ์ค๋ณต๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
CREATE TABLE accounts (
id INT AUTO_INCREMENT,
email VARCHAR(100) UNIQUE,
PRIMARY KEY (id)
);
PRIMARY KEY: ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋ ์ด๋ก ๊ฐ ํ์ ์๋ณํฉ๋๋ค.
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(50)
);
FOREIGN KEY: ๋ค๋ฅธ ํ
์ด๋ธ์ PRIMARY KEY
๋ฅผ ์ฐธ์กฐํ๋ ์ธ๋ํค์
๋๋ค.
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
DEFAULT: ๊ฐ์ด ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ค์ ๋๋ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํฉ๋๋ค.
CREATE TABLE payments (
payment_id INT AUTO_INCREMENT PRIMARY KEY,
amount DECIMAL(10, 2) DEFAULT 0.00
);
CHECK: ์ด์ ๊ฐ์ด ํน์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋๋ก ์ ์ฝ์ ์ค์ ํฉ๋๋ค. (MySQL 8.0 ์ด์์์ ์ฌ์ฉ ๊ฐ๋ฅ)
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
salary DECIMAL(10, 2),
CHECK (salary > 0)
);
์ ์ฝ ์กฐ๊ฑด์ ํตํด ์ปฌ๋ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๊ณ , ์๋ชป๋ ๊ฐ์ด ์ ์ฅ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์ ์ฝ ์กฐ๊ฑด์ ํ ์ด๋ธ์ ์์ฑํ ๋๋ ALTER ๋ช ๋ น์ด๋ก ๋์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์คํค๋ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ํ์์ ์ ์ํ๋ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์กฐ์ง๊ณผ ๊ด๊ณ๋ฅผ ๋ช ํํ ํ ์ ์์ต๋๋ค.
ER ๋ค์ด์ด๊ทธ๋จ์ ํ์ค ์ธ๊ณ์ ๊ฐ์ฒด์ ๊ทธ๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ๋ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ํ๋์ ํ์ ํ ์ ์์ต๋๋ค. ๐
์ด ์น์ ์์๋ MySQL์์ ํ ์ด๋ธ์ ์์ ํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๊ณ , ๊ฐ๊ฐ์ ๋ช ๋ น์ด์ ์์๋ฅผ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
ALTER TABLE ํ
์ด๋ธ๋ช
ADD COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
ALTER TABLE students ADD COLUMN age INT NOT NULL;
์ ์์๋ students
ํ
์ด๋ธ์ age
๋ผ๋ ์๋ก์ด ์ปฌ๋ผ์ ์ถ๊ฐํ๋ ์ฝ๋์
๋๋ค.ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(10, 2) NOT NULL;
์ ์ฝ๋๋ employees
ํ
์ด๋ธ์์ salary
์ปฌ๋ผ์ ๋ฐ์ดํฐ ํ์
์ DECIMAL(10, 2)
๋ก ๋ณ๊ฒฝํ๊ณ , NOT NULL
์ ์ฝ์ ์ถ๊ฐํ๋ ๋ช
๋ น์ด์
๋๋ค.ALTER TABLE ํ
์ด๋ธ๋ช
CHANGE COLUMN ์ด์ ์ปฌ๋ผ๋ช
๋ณ๊ฒฝ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
ALTER TABLE orders CHANGE COLUMN order_date order_created_at DATETIME NOT NULL;
์ ์์๋ orders
ํ
์ด๋ธ์ order_date
์ปฌ๋ผ์ order_created_at
์ผ๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๋์์, DATETIME
ํ์
๊ณผ NOT NULL
์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ๋ ์ฝ๋์
๋๋ค.ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
;
ALTER TABLE students DROP COLUMN address;
์ด ์ฝ๋๋ students
ํ
์ด๋ธ์์ address
์ปฌ๋ผ์ ์ญ์ ํ๋ ๋ช
๋ น์ด์
๋๋ค.ALTER TABLE ์ด์ ํ
์ด๋ธ๋ช
RENAME ๋ณ๊ฒฝํ
์ด๋ธ๋ช
;
ALTER TABLE customers RENAME TO clients;
์ ์ฝ๋๋ customers
ํ
์ด๋ธ์ ์ด๋ฆ์ clients
๋ก ๋ณ๊ฒฝํ๋ ์์์
๋๋ค.๊ฒ์ ์๋ ํฅ์: ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์ ์ ๋น ๋ฅด๊ฒ ํด์ฃผ๋ ๊ตฌ์กฐ๋ก, ์ฑ ์ ์ฐพ์๋ณด๊ธฐ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์์ค๋๋ค. ์ด๋ก ์ธํด ๋ฐ์ดํฐ ์กฐํ ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์์ ๋งค๊น: ์ธ๋ฑ์ค๋ ์ ๋ ฌ๋ ์ํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ฌ, ๋ ์ฝ๋ ์ ๊ทผ์ ํจ์จ์ ์ผ๋ก ํ ์ ์๋๋ก ๋์ต๋๋ค.
๋ฐ์ดํฐ์ ์์น ์ฐพ๊ธฐ: ์ธ๋ฑ์ค๋ ์ปฌ๋ผ์ ๊ฐ๊ณผ ํด๋น ๋ ์ฝ๋์ ์ ์ฅ ์์น๋ฅผ ํค-๊ฐ ์์ผ๋ก ์ ์ฅํ์ฌ, ๋ฐ์ดํฐ์ ์์น๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์๋ ๋๋ค. ๐
๊ณ ์ ์ฑ ๋ณด์ฅ: ๊ณ ์ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ์ค๋ณต๋ ๊ฐ์ด ๋ค์ด๊ฐ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค๋ณต ๋ฐ์ดํฐ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๐ ์ธ๋ฑ์ค ํฌ๊ธฐ ๋ฌธ์ :
โณ ์ฑ๋ฅ ์ ํ:
๐ฝ ์ถ๊ฐ์ ์ธ ๋์คํฌ ๊ณต๊ฐ ํ์:
โฑ๏ธ ์ธ๋ฑ์ค ์์ฑ ์๊ฐ ์์:
๐ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ ์์์ ์ฑ๋ฅ ์ ํ:
INSERT
, UPDATE
, DELETE
์ ๊ฐ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์
์ด ์์ฃผ ๋ฐ์ํ๋ฉด ์ธ๋ฑ์ค๊ฐ ๊ณ์ ๊ฐฑ์ ๋์ด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ์ถ๊ฐ์ ์ธ ์์
๋ถํ๊ฐ ๋ฐ์ํด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ๋ฅผ ํน์ ๊ธฐ์ค์ ๋ง์ถฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌํ์ฌ ์ ์ฅํ๋ ์ธ๋ฑ์ค์ ๋๋ค. ์ด ์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ๋ ์ฝ๋ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ฌ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์, ์ผ๋ฐ์ ์ธ ์ธ๋ฑ์ค์๋ ๋ค๋ฅธ ํน์ง์ ๊ฐ์ง๋๋ค.
๐ ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ ์ฅ:
ํ๋ฒ
์ปฌ๋ผ์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด, ํ
์ด๋ธ์ ๋ชจ๋ ๋ ์ฝ๋๊ฐ ํ๋ฒ ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.โ๏ธ ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ฑ๋ฅ ์ด์:
๐ ํ ์ด๋ธ๋น ํ๋์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ง ๊ฐ๋ฅ:
โฉ ๊ฒ์ ์๋:
๐ ๏ธ MySQL์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค:
๐ Tip: ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ์์ ์ด ์ ์ ํ ์ด๋ธ์ ์ ํฉํฉ๋๋ค.
๋ณด์กฐ ์ธ๋ฑ์ค๋ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ๋ฌ๋ฆฌ, ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌํ์ง ์๊ณ ๋ณ๋์ ์ธ๋ฑ์ค ํ์ด์ง์ ์ ๋ ฌ ์ ๋ณด๋ฅผ ์ ์ฅํด ๊ฒ์์ ๋น ๋ฅด๊ฒ ํ๋ ์ธ๋ฑ์ค์ ๋๋ค. ์ด๋ ํ๋ณดํค(Candidate Key)์ ๋ถ์ฌํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธํค ์ธ์ ์ ์ผ์ฑ์ ๊ฐ์ง๋ ํค๋ค์ ์ ์ฉํ ์ ์์ต๋๋ค.
๐ ๋ฐ์ดํฐ ํ์ด์ง์ ๋ณ๋์ ์ธ๋ฑ์ค ํ์ด์ง:
๐ ๋ฐ์ดํฐ ์์น์ ์ฃผ์๊ฐ (RID):
โก ์ฑ๋ฅ:
๐ ์ฌ๋ฌ ๊ฐ์ ๋ณด์กฐ ์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ:
-- ๊ธฐ๋ณธ ํ
์ด๋ธ ์์ฑ
CREATE TABLE employees (
employee_id INT PRIMARY KEY,
name VARCHAR(100),
department_id INT,
salary DECIMAL(10, 2)
);
-- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ Primary Key๋ก ์์ฑ๋จ (employee_id)
-- ๋ณด์กฐ ์ธ๋ฑ์ค ์์ฑ (์ด๋ฆ์ผ๋ก ๊ฒ์ํ ๋ ๋น ๋ฅด๊ฒ ๊ฒ์๋๋๋ก ์ธ๋ฑ์ค ์ถ๊ฐ)
CREATE INDEX idx_employee_name ON employees (name);
-- ๋ณด์กฐ ์ธ๋ฑ์ค ์์ฑ (๋ถ์ ID๋ก ๊ฒ์ํ ๋ ๋น ๋ฅด๊ฒ ๊ฒ์๋๋๋ก ์ธ๋ฑ์ค ์ถ๊ฐ)
CREATE INDEX idx_department ON employees (department_id);
์ด ์์์์๋ name
๊ณผ department_id
์ ๊ฐ๊ฐ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ์ฌ, ํด๋น ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํ ๋ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๐ ๏ธ
์ด ๋ด์ฉ์ ์ข ๋ ๋ค๋ฌ๊ณ ๊ฐ๋ ์ฑ์ ๋์ฌ์ ์ ๋ฆฌํด ๋๋ฆด๊ฒ์! ๐
Primary Key์ Unique Key๊ฐ ๋ชจ๋ ์๋ ํ ์ด๋ธ:
CREATE TABLE users (
user_id INT PRIMARY KEY, -- Primary Key๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค
email VARCHAR(100) UNIQUE, -- Unique Key๋ก ๋ณด์กฐ ์ธ๋ฑ์ค
username VARCHAR(50)
);
Primary Key๊ฐ ์๋ ํ ์ด๋ธ์์ UNIQUE + NOT NULL ์กฐ๊ฑด:
CREATE TABLE products (
product_code VARCHAR(100) UNIQUE NOT NULL, -- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค
product_name VARCHAR(255),
price DECIMAL(10, 2)
);
Primary Key๊ฐ ์๊ณ UNIQUE๋ง ์๋ ๊ฒฝ์ฐ:
CREATE TABLE departments (
department_code VARCHAR(50) UNIQUE, -- ๋ณด์กฐ ์ธ๋ฑ์ค (NOT NULL ์กฐ๊ฑด ์์)
department_name VARCHAR(100)
);
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค ์์ฑ๊ณผ ๊ด๋ฆฌ๋ ์ฑ๋ฅ์ ์ข์ฐํ๋ ์ค์ํ ์์์ ๋๋ค. ๋ค์์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ๊ผญ ๊ณ ๋ คํด์ผ ํ ์ฌํญ๋ค์ ๋๋ค.
1. ์ธ๋ฑ์ค๋ ํน์ ์ด(Column)์ ์์ฑ
ํ๋ฒ
์ด๋ ์ด๋ฆ
์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด, ์ด ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์ต๋๋ค.2. WHERE ์ ์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด์ ์ธ๋ฑ์ค ์์ฑ
SELECT * FROM students WHERE student_id = 123;
์ด ์ฟผ๋ฆฌ์์ student_id
์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ๊ฒ์ ์๋๊ฐ ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.3. WHERE ์ ์ ์ฌ์ฉ๋๋๋ผ๋ ์์ฃผ ์ฌ์ฉํด์ผ ์ธ๋ฑ์ค๊ฐ ์ ์ฉ
4. ๋ฐ์ดํฐ ์ค๋ณต๋๊ฐ ๋์ ์ด์ ์ธ๋ฑ์ค ์์ฑ์ ํจ๊ณผ๊ฐ ์ ์
5. ์ธ๋ํค(Foreign Key)์ ์๋์ผ๋ก ์ธ๋ฑ์ค ์์ฑ
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
์ด ์์์์ customer_id
์ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.6. ์กฐ์ธ์ ์์ฃผ ์ฌ์ฉ๋๋ ์ด์ ์ธ๋ฑ์ค ์์ฑ
SELECT * FROM students s
JOIN courses c ON s.student_id = c.student_id;
์ด ์ฟผ๋ฆฌ์์ student_id
์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ์กฐ์ธ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.7. ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์ (์ฝ์ , ์์ , ์ญ์ )์ด ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฃผ์
8. ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ ํ ์ด๋ธ๋น ํ๋๋ง ์์ฑ ๊ฐ๋ฅ
CREATE TABLE students (
student_id INT PRIMARY KEY, -- ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค
name VARCHAR(100)
);
์ด ๊ฒฝ์ฐ, ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ student_id
๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.9. ์ฌ์ฉํ์ง ์๋ ์ธ๋ฑ์ค๋ ์ ๊ฑฐ
MySQL์์๋ Primary Key๋ Unique Key์ ๊ฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์ํ ์ํฉ์์ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋๋ ์์๋ค์ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(30),
hire_date DATE
);
emp_id
๋ Primary Key๋ก ์ง์ ๋์ด ์์ผ๋ฉฐ, MySQL์์๋ Primary Key์ ๋ํด ์๋์ผ๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ emp_id
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.name
, department
, hire_date
๊ฐ์ ๋ค๋ฅธ ์ปฌ๋ผ๋ค์๋ ํ์ฌ ์ธ๋ฑ์ค๊ฐ ์์ง๋ง, ํ์์ ๋ฐ๋ผ ์ถ๊ฐ์ ์ธ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ฉด ๋ณด์กฐ ์ธ๋ฑ์ค๋ก ์์ฑ๋ฉ๋๋ค.CREATE TABLE products (
product_id INT PRIMARY KEY,
product_code VARCHAR(50) UNIQUE,
price DECIMAL(10, 2)
);
product_id
๊ฐ Primary Key์ด๊ธฐ ๋๋ฌธ์ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์๋ ์์ฑ๋ฉ๋๋ค. ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ product_id
๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.product_code
์ UNIQUE ์ ์ฝ ์กฐ๊ฑด์ด ๋ถ์ด ์์ด ์๋์ผ๋ก ๋ณด์กฐ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ์ด๋ ๊ณ ์ ์ฑ์ ๋ณด์ฅํ๋ฉฐ, ๊ฒ์ ์๋๋ฅผ ๋์ด๋ ์ญํ ์ ํฉ๋๋ค. ๋จ, ๋ณด์กฐ ์ธ๋ฑ์ค๋ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ ๋ ฌ์๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.CREATE TABLE users (
email VARCHAR(100) UNIQUE NOT NULL,
username VARCHAR(50),
join_date DATE
);
email
์ด UNIQUE์ NOT NULL ์กฐ๊ฑด์ด ์ค์ ๋์ด ์์ด, email
์ปฌ๋ผ์ ๋ํด ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ email
๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.username
์ด๋ join_date
์๋ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋์ง ์์ง๋ง, ํ์์ ๋ฐ๋ผ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
product_id INT,
order_date DATE,
UNIQUE (product_id)
);
order_id
๋ Primary Key๋ก ์ง์ ๋์ด ์์ด ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค. ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ order_id
๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.product_id
๋ UNIQUE ์ ์ฝ ์กฐ๊ฑด์ด ์ค์ ๋์ด ์์ด ๋ณด์กฐ ์ธ๋ฑ์ค๊ฐ ์๋ ์์ฑ๋ฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก customer_id
๋ order_date
์๋ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ์๋ ์์ฑ:
๋ณด์กฐ ์ธ๋ฑ์ค์ ์๋ ์์ฑ:
์ ๋ ฌ๊ณผ ์ฑ๋ฅ:
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธ๋ฑ์ค๋ ๊ฒ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํ ์ค์ํ ๋๊ตฌ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ธ๋ฑ์ค์ ์์ฑ, ํ์ฉ, ์ญ์ ๋ฐฉ๋ฒ์ ๊ตฌ์ฒด์ ์ธ ์์์ ํจ๊ป ์ค๋ช ํ๊ฒ ์ต๋๋ค.
CREATE [UNIQUE] INDEX ์ธ๋ฑ์ค์ด๋ฆ ON ํ
์ด๋ธ์ด๋ฆ (์ด์ด๋ฆ) [ASC|DESC];
UNIQUE
์ต์
: ์ด์ ๊ฐ์ด ๊ณ ์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ฉฐ, ์ค๋ณต๋ ๊ฐ์ด ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.ASC
/DESC
: ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์(ASC) ๋๋ ๋ด๋ฆผ์ฐจ์(DESC)์ผ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.๊ธฐ๋ณธ ๋ณด์กฐ ์ธ๋ฑ์ค ์์ฑ
CREATE INDEX idx_emp_name ON employees (name);
employees
ํ
์ด๋ธ์ name
์ด์ ๋ํด ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค. idx_emp_name
์ด๋ผ๋ ์ด๋ฆ์ ์ธ๋ฑ์ค๊ฐ ๋ง๋ค์ด์ง๋ฉฐ, name
์ ๊ธฐ์ค์ผ๋ก ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์๊ฒ ํด์ค๋๋ค.๊ณ ์ ์ธ๋ฑ์ค ์์ฑ
CREATE UNIQUE INDEX idx_emp_email ON employees (email);
email
์ด์ ๋ํด ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ์ค๋ณต๋ ์ด๋ฉ์ผ์ ๋ฐฉ์งํ๊ณ , ๊ฒ์ ์ฑ๋ฅ์ ๋์
๋๋ค.์ฌ๋ฌ ์ด์ ์กฐํฉํ ์ธ๋ฑ์ค ์์ฑ
CREATE INDEX idx_emp_name_dept ON employees (name, department);
name
๊ณผ department
๋ ์ด์ ์กฐํฉํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ๋ ์ด์ ๊ธฐ์ค์ผ๋ก ๊ฒ์ ์๋๋ฅผ ํฅ์์ํต๋๋ค.ALTER TABLE
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.ALTER TABLE employees MODIFY COLUMN emp_id INT PRIMARY KEY;
emp_id
๋ฅผ Primary Key๋ก ์ค์ ํ์ฌ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ก ์ธํด ํ
์ด๋ธ ๋ฐ์ดํฐ๋ emp_id
๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.์์ฑ๋ ์ธ๋ฑ์ค๋ SHOW INDEX
๋ช
๋ น์ด๋ฅผ ํตํด ์กฐํํ ์ ์์ต๋๋ค.
SHOW INDEX FROM employees;
employees
ํ
์ด๋ธ์ ์์ฑ๋ ๋ชจ๋ ์ธ๋ฑ์ค(ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค์ ๋ณด์กฐ ์ธ๋ฑ์ค ํฌํจ)๋ฅผ ๋ณด์ฌ์ค๋๋ค.์ธ๋ฑ์ค๋ WHERE ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ํฐ ์ฑ๋ฅ ํฅ์์ ์ ๊ณตํฉ๋๋ค.
ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ์ฐธ์กฐ
SELECT * FROM employees WHERE emp_id = 123;
emp_id
๋ Primary Key๋ก ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ๋น ๋ฅด๊ฒ ๊ฒ์ํ ์ ์์ต๋๋ค.๋ณด์กฐ ์ธ๋ฑ์ค ์ฐธ์กฐ
SELECT * FROM employees WHERE name = 'John' AND department = 'HR';
name
๊ณผ department
์ด์ ์ค์ ๋ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ํ์ฉํด ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํฉ๋๋ค.ํ์ํ์ง ์์ ์ธ๋ฑ์ค๋ ์ญ์ ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
๋ณด์กฐ ์ธ๋ฑ์ค ์ญ์
DROP INDEX idx_emp_name ON employees;
employees
ํ
์ด๋ธ์ name
์ด์ ๋ํด ์์ฑ๋ ๋ณด์กฐ ์ธ๋ฑ์ค idx_emp_name
์ ์ญ์ ํฉ๋๋ค.ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค ์ญ์ (Primary Key ์ญ์ )
ALTER TABLE employees DROP PRIMARY KEY;
employees
ํ
์ด๋ธ์ Primary Key๋ฅผ ์ญ์ ํ์ฌ ํด๋ฌ์คํฐํ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑฐํฉ๋๋ค.VIEW๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์์ ํ ์ด๋ธ์ ๋งํ๋ฉฐ, ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ง๋ง, ์ค์ ํ ์ด๋ธ์ฒ๋ผ ์ฌ์ฉํ ์ ์์ต๋๋ค. VIEW๋ ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ๊ฑฐ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์๋๋ VIEW์ ์ฃผ์ ํน์ง๊ณผ ์ฅ๋จ์ ์ ๋ํ ์ค๋ช ์ ๋๋ค.
๊ฐ์์ ํ ์ด๋ธ:
๋ฐ์ดํฐ ์ ์ฅ ์์:
๋ณต์กํ ์ฟผ๋ฆฌ์ ๋จ์ํ:
MySQL์์์ VIEW:
VIEW์ ํ ์ด๋ธ์ ์ฐจ์ด์ :
๋ณด์์ฑ ํฅ์:
์ด๋ฆ
๊ณผ ์ฃผ์
๋ง ๋ณด์ฌ์ฃผ๋ VIEW๋ฅผ ์์ฑํ์ฌ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์จ๊ธธ ์ ์์ต๋๋ค.๊ถํ ๊ด๋ฆฌ:
๋ณต์กํ ์ฟผ๋ฆฌ์ ๋จ์ํ:
์ฟผ๋ฆฌ ์ฌ์ฌ์ฉ์ฑ:
๋ฐ์ดํฐ ์กฐํ ๋ฐฉ์ ๋ค์ํ:
๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ํฅ ์์:
์ฝ์ , ์ญ์ , ๊ฐฑ์ ์ ์ ํ:
์ธ๋ฑ์ค ์ ํ:
VIEW๋ ๊ฐ์์ ํ ์ด๋ธ๋ก, ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํํ๊ณ ํน์ ์ฌ์ฉ์์๊ฒ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ VIEW์ ์์ฑ, ๋์ฒด, ์์ , ์ญ์ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํ๊ณ ์์๋ฅผ ์ ๊ณตํ๊ฒ ์ต๋๋ค.
VIEW๋ SELECT ๋ฌธ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์์ผ๋ก ์กฐํํ ์ ์์ต๋๋ค. VIEW๋ ์๋ณธ ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฐ์์ ํ ์ด๋ธ๋ก์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ ์ฅํ์ง ์์ต๋๋ค.
-- employees ํ
์ด๋ธ์์ HR ๋ถ์๋ง ์กฐํํ๋ VIEW ์์ฑ
CREATE VIEW employee_view AS
SELECT emp_id, name, department
FROM employees
WHERE department = 'HR';
employees
ํ
์ด๋ธ์์ HR ๋ถ์์ ์ง์ ์ ๋ณด๋ง์ ์กฐํํ๋ employee_view๋ผ๋ VIEW๋ฅผ ์์ฑํ๋ ๊ฒ์
๋๋ค.๊ธฐ์กด์ VIEW๋ฅผ ์์ ํ ํ์๊ฐ ์์ ๋, CREATE OR REPLACE
๋ฌธ์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด VIEW๋ฅผ ๋ฎ์ด์ฐ๊ณ ์๋กญ๊ฒ ๋์ฒดํ ์ ์์ต๋๋ค. ์ด๋ ๊ธฐ์กด VIEW๋ฅผ ์ญ์ ํ์ง ์๊ณ , ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ๋ฐฉ์์
๋๋ค.
-- employee_view์ hire_date ํ๋๋ฅผ ์ถ๊ฐํ์ฌ VIEW ๋์ฒด
CREATE OR REPLACE VIEW employee_view AS
SELECT emp_id, name, department, hire_date
FROM employees
WHERE department = 'HR';
employee_view
์์ hire_date ํ๋๋ฅผ ์ถ๊ฐํ์ฌ, ์๋ก์ด VIEW๋ก ๋์ฒดํ์์ต๋๋ค.VIEW์ SELECT ๋ฌธ์ ๋ณ๊ฒฝํ๊ณ ์ถ๋ค๋ฉด, ALTER
๋ฌธ์ ์ฌ์ฉํ์ฌ ์์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง, SELECT ๋ฌธ์ ๋ณ๊ฒฝ์๋ ์ฃผ๋ก CREATE OR REPLACE
๋ฐฉ์์ด ์ฌ์ฉ๋ฉ๋๋ค.
-- employee_view๋ฅผ ์์ ํ์ฌ hire_date๊ฐ 2020๋
์ดํ์ธ ๋ฐ์ดํฐ๋ง ์กฐํ
ALTER VIEW employee_view AS
SELECT emp_id, name, department, hire_date
FROM employees
WHERE hire_date > '2020-01-01';
employee_view
๋ฅผ ์์ ํ์ฌ 2020๋
1์ 1์ผ ์ดํ์ ์
์ฌํ ์ง์๋ค๋ง ์กฐํํ๋๋ก ๋ณ๊ฒฝํ ์์์
๋๋ค.CREATE OR REPLACE
๋ฐฉ์์ผ๋ก VIEW๋ฅผ ์์ ํ๋ ๊ฒ์ด ๋ ์ผ๋ฐ์ ์
๋๋ค.VIEW๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ ๋๋ DROP
๋ฌธ์ ์ฌ์ฉํด ์ญ์ ํ ์ ์์ต๋๋ค. VIEW๋ฅผ ์ญ์ ํด๋ ๊ธฐ๋ณธ ํ
์ด๋ธ์ด๋ ๋ฐ์ดํฐ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
-- employee_view๋ผ๋ VIEW ์ญ์
DROP VIEW employee_view;
employees
์ ๊ทธ ๋ฐ์ดํฐ์๋ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค.VIEW๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฐ์์ ํ ์ด๋ธ๋ก, ์ฌ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ๋จ์ ๋ทฐ, ๋ณตํฉ ๋ทฐ, ์ธ๋ผ์ธ ๋ทฐ๋ก ๋๋ฉ๋๋ค. ๊ฐ VIEW๋ ๋ฐ์ดํฐ ์กฐํ ๋ฐฉ์๊ณผ ํ์ฉ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค์ํ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋๋ ๊ฐ ๋ทฐ์ ์ค๋ช ๊ณผ ์์์ ๋๋ค.
๋จ์ ๋ทฐ๋ ํ๋์ ํ ์ด๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑ๋๋ฉฐ, ์ฃผ๋ก ๋จ์ผ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
SUM
, COUNT
๋ฑ)์ DISTINCT๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.INSERT
, UPDATE
, DELETE
).-- ๋จ์ ๋ทฐ ์์ฑ
CREATE VIEW emp_view AS
SELECT emp_id, name, department
FROM employees;
employees
ํ
์ด๋ธ์์ emp_id
, name
, department
์ปฌ๋ผ๋ง์ ์กฐํํ๋ ๋จ์ ๋ทฐ์
๋๋ค.๋ณตํฉ ๋ทฐ๋ ์ฌ๋ฌ ํ ์ด๋ธ์ ์กฐ์ธํ๊ฑฐ๋ ๊ทธ๋ฃน ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ VIEW์ ๋๋ค. ๋ณต์กํ ๋ฐ์ดํฐ ์กฐํ๊ฐ ํ์ํ ์ํฉ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
SUM
, AVG
, MAX
๋ฑ)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.-- ๋ณตํฉ ๋ทฐ ์์ฑ
CREATE VIEW emp_dept_view AS
SELECT e.emp_id, e.name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;
employees
์ departments
๋ ํ
์ด๋ธ์ ์กฐ์ธํ์ฌ emp_id
, name
, department_name
์ ์กฐํํ๋ ๋ณตํฉ ๋ทฐ์
๋๋ค.์ธ๋ผ์ธ ๋ทฐ๋ ์๋ธ์ฟผ๋ฆฌ๊ฐ FROM
์ ์ ํฌํจ๋ ํํ๋ก, ์ฟผ๋ฆฌ ๋ด์์ ์์๋ก ์ฌ์ฉ๋๋ ๊ฐ์์ ํ
์ด๋ธ์
๋๋ค. ๋ณต์กํ ์ฟผ๋ฆฌ ์์ฑ ์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์กฐํํ ์ ์์ต๋๋ค.
FROM
์ ์ ํฌํจ๋ฉ๋๋ค.-- ์ธ๋ผ์ธ ๋ทฐ ์ฌ์ฉ
SELECT emp_id, name, department
FROM (
SELECT emp_id, name, department_id
FROM employees
WHERE salary > 5000
) AS emp_subquery
JOIN departments d ON emp_subquery.department_id = d.department_id;
employees
ํ
์ด๋ธ์์ ๊ธ์ฌ๊ฐ 5000 ์ด์์ธ ์ง์์ ์กฐํํ๋ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ธ๋ผ์ธ ๋ทฐ๋ก ์ฌ์ฉํ์ฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ departments
ํ
์ด๋ธ๊ณผ ์กฐ์ธํ๋ ์์์
๋๋ค.