
- DBMS : Database Management System(๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ )์ ์ฝ
์๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๋ ์์คํ ๋๋ ํ๋ก๊ทธ๋จ. DBMS์ ์ข ๋ฅ๋ก Oracle, MySQL, SQL Server, MariaDB ๋ฑ์ด ์์.- ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB) : ์กฐ์งํ๋ ์ ๋ณด๋ค์ ๋ชจ์ ๋๋ ๋ฐ์ดํฐ ์งํฉ. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ณ ์ ํ ์ด๋ฆ์ ๊ฐ์ ธ์ผ ํจ
- ๊ฐ์ฒด(Object) : ์ฌ๋, ์ฌ๋ฌผ, ์ฅ์, ๊ฐ๋ , ์ฌ๊ฑด๊ณผ ๊ฐ์ ์ ๋ฌดํ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์
๋ ๋ ๋ฆฝ์ ์ธ ์ค์ฒด. ๊ฐ์ฒด ์ข ๋ฅ๋ ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค ๋ฑ์ด ์์. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ ํ ์ด๋ธ์.- ํ ์ด๋ธ(Table) : ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๊ฐ
์ฒด ์ ํ. ์ด(column)๊ณผ ํ(row)๋ก ์ด๋ฃจ์ด์ ธ ์์.- ๋ฐ์ดํฐ(data) : ํ ์ด๋ธ๊ณผ ๊ฐ์ ๊ฐ์ฒด์ ์ ์ฅ๋ ์ค์ ์ ๋ณด๋ฅผ ์๋ฏธํจ.
- ์ด(column) : ์ปฌ๋ผ ๋๋ ์์ฑ(Attribute)์ด๋ผ๊ณ ๋ ํจ. ํ ์ด๋ธ์์ ์ธ๋ก ๋ถ๋ถ์ ์๋ฏธํ๋ฉฐ, ํ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ์ด
(column)์ผ๋ก ๊ตฌ์ฑ๋์ด ์์.- ์ด ์ด๋ฆ(column name) : ๊ฐ ์ด(column)์ ๊ตฌ๋ถํ๊ธฐ ์ํ ์ด๋ฆ. ์ด์ด๋ฆ ๋๋ ์ปฌ๋ผ๋ช ์ ํ ์ด๋ธ ๋ด์์ ๊ณ ์ ํด์ผ ํจ.
- ํ(row) : ์ฐ ๋๋ ๋ ์ฝ๋๋ผ๊ณ ๋ ํจ. ํ ์ด๋ธ์์ ๊ฐ๋ก์ ํด๋นํ๋ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ์๋ฏธํจ.
- SQL : ์ฌ๋๊ณผ DBMS๊ฐ ์ํตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ธ์ด.
- ๊ธฐ๋ณธํค(Primary key) : ํ ์ด๋ธ์ ํ์ ๊ตฌ๋ถํด ์ค ์ ์๋ ๋ํ ์ปฌ๋ผ์๊ฒ ๋ถ์ฌํ๋ ์ ์ฝ
์กฐ๊ฑด. ๊ธฐ๋ณธํค๊ฐ ์ค์ ๋ ์ปฌ๋ผ์๋ ์ค๋ณต๊ฐ, ๋น๊ฐ ๋ค์ด์ฌ ์ ์์.- ์ธ๋ํค(Foreign key) : ํ ์ด๋ธ๊ณผ ํ ์ด๋ธ์ ์ฐ๊ฒฐํด ์ฃผ๋ ์ ์ฝ์กฐ๊ฑด.
- ์คํค๋ง(Schema) : DBMS๋ค๋ง๋ค ์คํค๋ง์ ์๋ฏธ๋ ๋ค๋ฅด๊ฒ ์ฌ์ฉ๋๊ณ ์์. ์คํค๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ทธ๋ฆ์ ์๋ฏธํจ. MySQL โ ์คํค๋ง๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ์๋ฏธ๋ก ์ฌ์ฉ๋จ. Oracle โ ์คํค๋ง๊ฐ ์ ์ ์ ๋์ผํ ์๋ฏธ๋ก ์ฌ์ฉ๋จ

1. DB์์ฑ
2. Table ์์ฑ
3. ๋ฐ์ดํฐ ์ฝ์
/์์ /์ญ์
4. ๋ฐ์ดํฐ ์กฐํ
1.๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
1) Workbench ์คํ ํ MySQL์ root ์ฌ์ฉ์๋ก ์ ์
2) โ์ผํ๋ชฐโ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
- Schema ์ด๋ฆ : db

- ๋ฐ์ดํฐ๋ฒ ์ด์ค(์คํค๋ง)๋ช
, ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ๋ช
๋ฑ์ ์๋ฌธ์ ์ฌ์ฉ
- ์ด๋ฆ์ ์๋ฌธ์ผ๋ก ์์ํด์ผํ๋ฉฐ, ์๋ฌธ/์ซ์/ํน์๋ฌธ์(_, #, $)๊ฐ ํผํฉ๋ ์๋ ์๋ค.
- ์ค๋ฌด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
, ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ๋ช
๋ฑ์ ํ๊ธ๋ก ์ง์ ํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ผ๋ฉฐ, ๊ทธ ์ด์ ๋ ํธํ์ฑ ๋ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์๋ ์์ง๊ฐ ๋ง๊ธฐ ๋๋ฌธ
- ์ค์ ๋ฐ์ดํฐ๋ ์๋ฌธ, ํ๊ธ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ
2. ํ
์ด๋ธ ์์ฑ

1) ๋ฐ์ดํฐ ํ์

- ์ฃผ๋ฏผ๋ฒํธ๋ ๋ฌธ์ ๋ฐ์ดํฐํ์
์ด๋ค. ์ซ์X
- CHAR : ๊ณ ์ , ์ฑ๋ฅ์ฐ์ but ๊ณต๊ฐ์ ํจ์จ ๋จ์ด์ง(์ฃผ๋ฏผ๋ฒํธ/์ ํ๋ฒํธ)
- VARCHAR : ๊ฐ๋ณ, ๊ณต๊ฐํจ์จ ๋๋ค but ์ฑ๋ฅ ๋ฎ์
ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย ย -> ํต์์ ์ผ๋ก ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ฌ์ฉํ๋ค
2)์ ์ฝ์กฐ๊ฑด

3) ํ ์ด๋ธ ์ฐจํธ ๋ฐ ํ ์ด๋ธ ์์ฑ ์์

create table members
(member_id int primary key,
member_name varchar(8) not null,
birth date not null,
job varchar(20),
phone varchar(20) unique,
address varchar(80));



create table products
(prod_id int primary key,
prod_name varchar(20) not null,
price int check (price>0),
make_date date,
company varchar(10) not null);


create table orders
(order_num int,
member_id int,
prod_id int,
order_date datetime default now(),
primary key(order_num),
foreign key(member_id) references members(member_id),
foreign key(prod_id) references products(prod_id) );
- ๋ฌธ๋ฒ
order_num int, : ์ปฌ๋ผ๋ ๋ฒจ๋ฌธ๋ฒ(nn, pk,,,)
primary key(order_num) : ํ
์ด๋ธ๋ ๋ฒจ๋ฌธ๋ฒ(fk)
- ๋ช
๋ น์ด
* from dual; : dual์ ๋ฐ๋ก ์์ฑ ๋ ํ
์ด๋ธ์ด ์์ ๋ ์์๋ก ํ
์ด๋ธ ๋ณด์ฌ์ค
ex) select now()
ย ย ย ย ย from dual;
-> ํ์ฌ ๋ ์ง ์๊ฐ์ด ๋์ด(2022-10-27 10:39:33)
* references - ์ฐธ์กฐ


create table stu20
(stu_id int auto_increment primary key,
stu_name varchar(5) not null,
age int check (age > 19));
- auto increment ์์ฑ
1๋ถํฐ ์์ํด์ 1์ฉ ์ฆ๊ฐํ๋ ๊ณ ์ ํ ๊ฐ์ ์๋์ผ๋ก ๋ณํํด ์ฃผ๋ ์์ฑ
๋จ, ์ซ์ ํ์์ ์นผ๋ผ์ด๋ฉด์ primary key ๋๋ unique ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ ์ปฌ๋ผ์๋ง ์ฌ์ฉ๊ฐ๋ฅํจ.
์์๊ฐ, ์ฆ๊ฐ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํจ.
[๋ฌธ๋ฒ] create table
ย ย ย ย ย ย ย ย (์ปฌ๋ผ๋ช
1 int auto_increment primary key,
ย ย ย ย ย ย ย ย ย ์ปฌ๋ผ๋ช
2 varchar(10));

1. ๋ฐ์ดํฐ ์กฐ์์ด(DML : Data Manipulation Language)
- insert : ๋ฐ์ดํฐ ์ฝ์
- update : ๋ฐ์ดํฐ ์์
- delete : ๋ฐ์ดํฐ ์ญ์
2. ๋ฐ์ดํฐ ์ฝ์
: INSERT
- [๋ฌธ๋ฒ] inser into ํ
์ด๋ธ๋ช
[(์ปฌ๋ผ๋ช
1, ์ปฌ๋ผ๋ช
2, ์ปฌ๋ผ๋ช
3, ...)]->[]์๋ต๊ฐ๋ฅ
ย ย ย ย ย ย ย ย ย ย ย values (๊ฐ1, ๊ฐ2, ๊ฐ3, ๊ฐ4, ...)
- ํ
์ด๋ธ๋ช
๋ค์ ์ปฌ๋ผ๋ช
์ ์์ฑํ ๊ฒฝ์ฐ
=> values์ ์ ๊ฐ๋ฆฌ์คํธ ์์ฑ ์ ์์ฑ๋ ์ปฌ๋ผ๋ฆฌ์คํธ์ ์ผ์น๋์ผํจ.
ex) insert into members(member_id, member_name, birth, phone)
ย ย ย ย ย values (101, '๊น๋ฏผ์', '1990-03-05', '010-2222-2222');
- ์๋ต๋ ์ปฌ๋ผ์๋ null๊ฐ ์๋ ์ฝ์
๋จ.
- not null ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ ์ปฌ๋ผ์ด ์๋ต๋ ๊ฒฝ์ฐ ์ค๋ฅ ๋ฐ์ํจ.
ex) birth ๋ฑ,,,
- table ๋ค์ ์ปฌ๋ผ๋ช
์ด ๋์ด๋์ด ์์ ๋๋ ๊ผญ ์์๋๋ก ์ ์ ์ด๋ ๋จ
<โ๏ธ members ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ฝ์
ํ๊ธฐ>

-> ์์๋๋ก ๋ชจ๋ ๋ฐ์ดํฐ ์
๋ ฅํ์ฌ ์ฝ์

-> ์์ฑํ ์ปฌ๋ผ๋ช ์ ๋ง์ถฐ ๋ฐ์ดํฐ ์ ๋ ฅ, ์๋ต๋ ์ปฌ๋ผ์๋ null๊ฐ ์๋ ์ ๋ ฅ

-> not null ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ birth์ปฌ๋ผ์ ๊ฐ์ ์๋ตํ์ฌ (Error Code: 1364. Field 'birth' doesn't have a default value)์ค๋ฅ ๋ฐ์

=> ์์ !!

-> unique ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ phone ์ปฌ๋ผ์ ์ค๋ณต ๊ฐ์ด ์ฝ์ ๋ ๊ฒฝ์ฐ (Error Code: 1062. Duplicate entry '010-1111-1111' for key 'phoneโ)์ค๋ฅ๋ฐ์.

=> ์์ !!

-> primary key ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ member_id์ปฌ๋ผ์ ์ค๋ณต ๊ฐ์ด ์ฝ์ ๋ ๊ฒฝ์ฐ (Error Code: 1062. Duplicate entry '101' for key 'PRIMARYโ)์ค๋ฅ๋ฐ์.

=> ์์ !!
๋จ, unique ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ ์ปฌ๋ผ์ null๊ฐ์ ํ์ฉํจ

-> primary key ์ ์ฝ์กฐ๊ฑด์ด ์ ์ธ๋ member_id์ปฌ๋ผ์ null๊ฐ์ด ์ฝ์
๋ ๊ฒฝ์ฐ (Error Code: 1364. Field 'member_id' doesn't have a default value)์ค๋ฅ๋ฐ์.

=> ์์ !!