๐พ[Database] SQL ์ฟผ๋ฆฌ - ์คํค๋ง ์ญ์ , ํ ์ด๋ธ ์์ฑ.์กฐํ.์์
1๏ธโฃ ์คํค๋ง ์ญ์ .
- MySQL์์ ์คํค๋ง(schema) ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(database) ๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
-
์คํค๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ์ค์ ๊ฐ์ ๊ฐ๋ ์ผ๋ก ์ทจ๊ธ๋๋ฉฐ, MySQL์์๋ ์ฃผ๋ก โ๋ฐ์ดํฐ๋ฒ ์ด์คโ ๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์คํค๋ง๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์๋
DROP DATABASE
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. - ์ด ๋ช ๋ น์ด๋ ์ง์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ ํ ์ญ์ ํ๋ฉฐ, ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ชจ๋ ํ ์ด๋ธ๊ณผ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ ๋ฉ๋๋ค.
์คํค๋ง(๋ฐ์ดํฐ๋ฒ ์ด์ค) ์ญ์ ํ๋ ๋ช ๋ น์ด
DROP DATABASE database_name;
- ์ฌ๊ธฐ์
database_name
์ ์ญ์ ํ๋ ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง)์ ์ด๋ฆ์ ๋๋ค.
์์.
DROP DATABASE mydatabase;
- ์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด
mydatabase
๋ผ๋ ์ด๋ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ญ์ ๋ฉ๋๋ค.
์ญ์ ์ ์ ์ฃผ์ํ ์ .
-
1. ๋ฐฑ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ญ์ ๋๋ฉด ๊ทธ ์์ ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์๊ตฌ์ ์ผ๋ก ์ฌ๋ผ์ง๋๋ค.
- ํ์ํ ๋ฐ์ดํฐ๊ฐ ์๋ค๋ฉด ๋จผ์ ๋ฐฑ์ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
-
2. ์กด์ฌ ์ฌ๋ถ ํ์ธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ์๋ง ์ญ์ ํ๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
DROP DATABASE IF EXISTS mydatabase;
- ์ด ๋ช
๋ น์ด๋
mydatabase
๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ์๋ง ์ญ์ ํ๊ณ , ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ์๋ ์๋ฌด ์์ ๋ ํ์ง ์์ผ๋ฉฐ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ์ง ์์ต๋๋ค.
MySQL์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ธ ๋ฐ ์ญ์ ๊ณผ์ .
-
1. ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก ํ์ธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SHOW DATABASES;
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
-
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ญ์
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ด๋ฆ์ ํ์ธํ ํ,
DROP DATABASE
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ญ์ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ด๋ฆ์ ํ์ธํ ํ,
-
3. ์ญ์ ํ์ธ
- ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ํ์ธํ์ฌ ์ญ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ชฉ๋ก์ ์๋์ง ํ์ธํฉ๋๋ค.
SHOW DATABASES;
- ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชฉ๋ก์ ํ์ธํ์ฌ ์ญ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ชฉ๋ก์ ์๋์ง ํ์ธํฉ๋๋ค.
- ์ ๊ณผ์ ์ผ๋ก MySQL์์ ์์ ํ๊ฒ ์คํค๋ง(๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
2๏ธโฃ ํ ์ด๋ธ ์์ฑ.
- MySQL์์
shopdb
๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์memberTBL
์ด๋ผ๋ ํ ์ด๋ธ์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. MySQL์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ.
- ๋จผ์
shopdb
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. - MySQL์์ ์์
ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ค๋ฉด
USE
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
USE shopdb;
- ์ด ๋ช
๋ น์ ์คํํ๋ฉด MySQL์
shopdb
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ดํ์ ๋ชจ๋ ์์ ์ ์ํํฉ๋๋ค.
2. memberTBL
ํ
์ด๋ธ ์์ฑ.
-
memberTBL
ํ ์ด๋ธ์ ๋ง๋ค๊ธฐ ์ํดCREATE TABLE
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. - ํ ์ด๋ธ์ ๋ค์ํ ์ปฌ๋ผ(ํ๋)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ์ปฌ๋ผ์ ์ด๋ฆ๊ณผ ์๋ฃํ์ ๊ฐ์ง๋๋ค.
- ์์๋ก, ํ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ
์ด๋ธ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
- ์ด ํ ์ด๋ธ์ ํ์์ ID, ์ด๋ฆ, ์ด๋ฉ์ผ, ๊ฐ์ ์ผ ๋ฑ์ ์ ์ฅํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
CREATE TABLE memberTBL (
memberID INT AUTO_INCREMENT PRIMARY KEY, -- ํ์ ID(์๋ ์ฆ๊ฐ)
memberName VARCHAR(50) NOT NULL, -- ํ์ ์ด๋ฆ
memberEmail VARCHAR(100), -- ํ์ ์ด๋ฉ์ผ
joinDate DATE -- ๊ฐ์
๋ ์ง
);
ํ ์ด๋ธ ์์ฑ ์ฝ๋ ์ค๋ช
-
memberID INT AUTO_INCREMENT PRIMARY KEY
- ํ์ ID๋ ์ ์ํ(
INT
)์ด๊ณ , ์๋์ผ๋ก ์ฆ๊ฐํ๋ ๊ฐ(AUTO_INCREMENT
)์ ๋๋ค. - ๋ํ, ๊ธฐ๋ณธ ํค(
PRIMARY KEY
)๋ก ์ค์ ๋์ด ๊ฐ ํ์์ด ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ง๋๋ค.
- ํ์ ID๋ ์ ์ํ(
-
memberName VARCHAR(50) NOT NULL
- ํ์ ์ด๋ฆ์ ์ต๋ 50์ ๋ฌธ์์ด(
VARCHAR
)๋ก ์ ์ฅ๋๋ฉฐ, ๋น์ด์์ ์ ์์ต๋๋ค(NOT NULL
).
- ํ์ ์ด๋ฆ์ ์ต๋ 50์ ๋ฌธ์์ด(
-
memberEmail VARCHAR(100)
- ํ์ ์ด๋ฉ์ผ์ ์ต๋ 100์์ ๋ฌธ์์ด๋ก ์ ์ฅ๋ฉ๋๋ค.
- ํ์ ์ ๋ ฅ์ ์๋๋๋ค.
-
joinDate DATE
- ๊ฐ์
๋ ์ง๋
DATE
ํ์์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
- ๊ฐ์
๋ ์ง๋
3. ํ ์ด๋ธ ํ์ธ.
- ํ
์ด๋ธ์ด ์ ์์ ์ผ๋ก ์์ฑ๋์๋์ง ํ์ธํ๋ ค๋ฉด
SHOW TABLES
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
SHOW TABLES;
-
memberTBL
์ด ๋ชฉ๋ก์ ๋ํ๋๋ฉด ํ ์ด๋ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋ ๊ฒ์ ๋๋ค.
4. ํ ์ด๋ธ ๊ตฌ์กฐ ํ์ธ.
- ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๋ ค๋ฉด
DESCRIBE
๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
DESCRIBE memberTBL;
- ์ด ๋ช ๋ น์ด๋ ํ ์ด๋ธ์ ๊ฐ ์ปฌ๋ผ ์ด๋ฆ, ๋ฐ์ดํฐ ํ์ , ๊ธฐ๋ณธ๊ฐ, ์ธ๋ฑ์ค ๋ฑ์ ๋ณด์ฌ์ค๋๋ค.
5. ๊ฒฐ๋ก .
- ์ ๊ณผ์ ์ ํตํด MySQL์์
shopdb
๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์memberTBL
์ด๋ผ๋ ํ ์ด๋ธ์ ์์ฑํ ์ ์์ต๋๋ค. - ํ ์ด๋ธ ๊ตฌ์กฐ๋ ํ์์ ๋ฐ๋ผ ์์ ํ ์ ์์ผ๋ฉฐ, ๊ฐ ํ๋๋ ์ํ๋ ๋ฐ์ดํฐ ํ์ ๊ณผ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ ์ ์์ต๋๋ค.
3๏ธโฃ ํ ์ด๋ธ ์กฐํ.
- MySQL์์ ํ
์ด๋ธ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด
SELECT
๋ฌธ์ ์ฌ์ฉํฉ๋๋ค. -
SELECT
๋ฌธ์ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ฌ ์ถ๋ ฅํ๋ ์ญํ ์ ํฉ๋๋ค.
1. ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ.
-
memberTBL
ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
SELECT * FROM memberTBL;
- ์ด ๋ช
๋ น์ด๋
memberTBL
ํ ์ด๋ธ์ ์๋ ๋ชจ๋ ํ(Row)๊ณผ ์ด(Column)์ ๊ฐ์ ธ์ต๋๋ค.
2. ํน์ ์ปฌ๋ผ(Column,์ด)๋ง ์กฐํํ๋ ๋ฐฉ๋ฒ.
- ํน์ ์ปฌ๋ผ(Column, ์ด)๋ง ์กฐํํ๊ณ ์ถ๋ค๋ฉด ์ด ์ด๋ฆ์ ์ง์ ํ์ฌ
SELECT
๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค.
SELECT memberID, memberName FROM memberTBL;
- ์ ๋ช
๋ น์ด๋
memberID
์memberName
์ปฌ๋ผ์ ํด๋นํ๋ ๊ฐ๋ค๋ง ์ถ๋ ฅํฉ๋๋ค.
3. ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐฉ๋ฒ.
- ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ง ์กฐํํ๊ณ ์ถ์ ๋๋
WHERE
์ ์ ์ฌ์ฉํฉ๋๋ค. - ์๋ฅผ ๋ค์ด,
memberID
๊ฐ โuser01โ์ธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
SELECT * FROM memberTBL WHERE memberID = 'user01';
4. ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ.
- ํ
์ด๋ธ์ ๊ตฌ์กฐ(์ด ์ด๋ฆ, ๋ฐ์ดํฐ ํ์
๋ฑ)๋ฅผ ํ์ธํ๋ ค๋ฉด
DESCRIBE
๋๋SHOW COLUMNS
๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
DESCRIBE memberTBL;
๋๋
SHOW COLUMNS FROM memberTBL;
- ์ด ๋ช ๋ น์ด๋ค์ ํ ์ด๋ธ์ ๊ฐ ์ด์ ๋ํ ์ ๋ณด(์ด ์ด๋ฆ, ๋ฐ์ดํฐ ํ์ , NULL ํ์ฉ ์ฌ๋ถ ๋ฑ)๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- ์ด ๋ช
๋ น์ด๋ค์ ํตํด
memberTBL
ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
4๏ธโฃ ํ ์ด๋ธ ์์ .
- ์ด๋ฏธ ์์ฑ๋ ํ
์ด๋ธ์์
memberID
๋ฅผ ๊ธฐ๋ณธ ํค(Primary Key)๋ก ์ค์ ํ๋ ค๋ฉดALTER TABLE
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ์์ ํ ์ ์์ต๋๋ค. - ์๋์ SQL ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ
memberID
๋ฅผ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํ ์ ์์ต๋๋ค.
1. ALTER TABLE
์ ์ฌ์ฉํ์ฌ Primary Key ์ถ๊ฐ.
ALTER TABLE memberTBL
ADD PRIMARY KEY (memberID);
- ์ด ๋ช
๋ น์ด๋ ๊ธฐ์กด์
memberTBL
ํ ์ด๋ธ์์memberID
์ปฌ๋ผ์ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํฉ๋๋ค.
2. ํ ์ด๋ธ ๊ตฌ์กฐ ํ์ธ
-
DESCRIBE
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๊ณmemberID
๊ฐ ๊ธฐ๋ณธ ํค๋ก ์ค์ ๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.DESCRIBE memberTBL;
3. ์ฃผ์ ์ฌํญ.
-
memberID
์ปฌ๋ผ์ ์ค๋ณต๋ ๊ฐ์ด ์์ด์ผ ํ๋ฉฐ, NULL ๊ฐ๋ ์์ด์ผ ํฉ๋๋ค. - ๊ธฐ๋ณธ ํค๋ ๊ณ ์ ํด์ผ ํ๋ฏ๋ก ์ค๋ณต๋ ๊ฐ์ด๋ NULL ๊ฐ์ด ์กด์ฌํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ง์ฝ ํ ์ด๋ธ์ ์ด๋ฏธ ์ค๋ณต๋ ๊ฐ์ด ์๊ฑฐ๋ NULL์ด ํฌํจ๋ ๊ฒฝ์ฐ, ๊ธฐ๋ณธ ํค๋ฅผ ์ถ๊ฐํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํด์ผ ํฉ๋๋ค.
4. ์ถ๊ฐ ์์ : ์๋ก์ด ํ ์ด๋ธ์์ Primary Key ์ง์
- ๋ง์ฝ ํ
์ด๋ธ์ ์ฒ์๋ถํฐ ์์ฑํ๋ฉด์
memberID
๋ฅผ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค.
CREATE TABLE memberTBL (
memberID CHAR(8) NOT NULL PRIMARY KEY, -- 8๊ธ์, ๊ธฐ๋ณธํค
memberName CHAR(5) NOT NULL, -- 5๊ธ์, NULL ํ์ฉ ์ ํจ
memberAddress CHAR(20) NULL -- 20๊ธ์, NULL ํ์ฉ
);
- ์ด๋ ๊ฒ ํ๋ฉด ํ
์ด๋ธ์ ์์ฑํ ๋
memberID
๊ฐ ๊ธฐ๋ณธ ํค๋ก ์ค์ ๋ฉ๋๋ค.