๐Ÿ˜ข ์Šคํ„ฐ๋””๋…ธํŠธ(SQL 14)

zoeยท2023๋…„ 4์›” 20์ผ
0

์‹ค์Šตํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

  • zerobase ์‚ฌ์šฉ(์ด๋™)

cmd

mysql -u root -p
use zerobase;




PRIMARY KEY(๊ธฐ๋ณธํ‚ค)

  • primary key(๊ธฐ๋ณธํ‚ค) :
    - ํ…Œ์ด๋ธ”์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„
    - ์ค‘๋ณต๋˜์ง€ ์•Š์€ ๊ณ ์œ ๊ฐ’์„ ํฌํ•จ
    - NULL๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Œ
    - ํ…Œ์ด๋ธ” ๋‹น ํ•˜๋‚˜์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ฐ€์ง

- primary key ์ƒ์„ฑ ๋ฌธ๋ฒ•1 (constraint ์ƒ๋žต ๊ฐ€๋Šฅ, ์ƒ๋žตํ•œ ๊ฒฝ์šฐ ์ž๋™์ƒ์„ฑ๋จ)

create table tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
...
constraint constraint_name primary key (column1, column2, ...)
)

  • ์˜ˆ์ œ 1-1 (primary key ์ƒ์„ฑ) ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์„ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ
create table person( pid int NOT NULL, name varchar(16), age int, sex char, primary key(pid) );
desc person;
  • ์˜ˆ์ œ 1-2 (primary key ์ƒ์„ฑ) ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์‹œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์นผ๋Ÿผ์„ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ
 create table animal ( name varchar(16) NOT NULL, type varchar(16) NOT NULL, age int, primary key (name, type));
desc animal;




- primary key ์‚ญ์ œ ๋ฌธ๋ฒ•

alter table tablename
drop primary key;

  • ์˜ˆ์ œ 1-1 (primary key ์‚ญ์ œ) ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์ด ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ
alter table person drop primary key;
desc person;
  • ์˜ˆ์ œ 1-2 (primary key ์‚ญ์ œ) ์—ฌ๋Ÿฌ๊ฐœ์˜ ์นผ๋Ÿผ์ด ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ (์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋™์ผ)
alter table animal drop primary key;
desc animal;




- primary key ์ƒ์„ฑ ๋ฌธ๋ฒ•2

  • Table ์ด ์ƒ์„ฑ๋œ ์ดํ›„์—๋„ ALTER TABLE ์„ ํ†ตํ•ด PRIMARY KEY ๋ฅผ ์ง€์ • ๊ฐ€๋Šฅ
alter table tablename
add primary key (column1, column2, ...)

  • ์˜ˆ์ œ 1-1 (primary key ์ƒ์„ฑ) ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์„ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ
alter table person add primary key (pid);
desc person;
  • ์˜ˆ์ œ 1-2 (primary key ์ƒ์„ฑ) ์—ฌ๋Ÿฌ๊ฐœ์˜ ์นผ๋Ÿผ์„ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ
alter table animal add constraint PK_animal primary key (name, type);
desc animal;




FOREIGN KEY (์™ธ๋ž˜ํ‚ค)

  • foreign key (์™ธ๋ž˜ํ‚ค) :
    - ํ•œ ํ…Œ์ด๋ธ”์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• 
    - ์ฐธ์กฐ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ํ•ญ๋ชฉ์€ ๊ทธ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค (ํ˜น์€ ๋‹จ์ผ๊ฐ’)

- foreign key ์ƒ์„ฑ ๋ฌธ๋ฒ•1

create table tablename
(
	column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
    column4 datatype,
    ...
    constraint constraint_name primary key (column1, column2, ...),
    constraint constraint_name foreign key (column3, column4, ...) references ref_tablename(ref_column)
)

  • ์˜ˆ์ œ 1-1 (foreign key ์ƒ์„ฑ) CREATE TABLE ์—์„œ FOREIGN KEY๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ
create table orders ( 
oid int not null, 
order_no varchar(16), 
pid int, primary key(oid), 
constraint FK_person foreign key (pid) references person(pid));
desc orders;
  • ์˜ˆ์ œ 1-2 (foreign key ์ƒ์„ฑ) CREATE TABLE ์—์„œ FOREIGN KEY๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ, CONSTRAINT ๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅ
create table job ( 
jid int not null, 
name varchar(16), 
pid int, 
primary key (jid), 
foreign key (pid) references person(pid) );
desc job;




- constraint ํ™•์ธ ๋ฌธ๋ฒ•

show create table tablename;

  • ์˜ˆ์ œ 1 (constraint ํ™•์ธ)
show create table job;




- foreign key ์‚ญ์ œ ๋ฌธ๋ฒ•

alter table tablename
drop foriegn key FK_constraint;
  • ์˜ˆ์ œ 1 (foreign key ์‚ญ์ œ)
alter table orders drop foreign key FK_person;
show create table orders;




- foreign key ์ƒ์„ฑ ๋ฌธ๋ฒ•2

  • Table ์ด ์ƒ์„ฑ๋œ ์ดํ›„์—๋„ ALTER TABLE ์„ ํ†ตํ•ด FOREIGN KEY ๋ฅผ ์ง€์ • ๊ฐ€๋Šฅ
alter tble tablename
add foreign key (column) references REF_tablename(REF_column);

  • ์˜ˆ์ œ 1 (foreign key ์ƒ์„ฑ)
alter table orders add foreign key (pid) references person(pid);
 desc orders;
show create table orders;




- foreign key ์˜ˆ์ œ

  • ์˜ˆ์ œ 1 (foreign key ์˜ˆ์ œ) police_station ๊ณผ crime_status ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ๊ด€๊ณ„ (Foreign Key)๋ฅผ ์„ค์ •. AWS RDS(database-1) ์˜ zerobase ์—์„œ ์ž‘์—…
-h database-1.cuiypimjmxdl.us-east-2.rds.amazonaws.com -P 3306 -u admin -p
 use zerobase;
 show tables;
 desc police_station;
select count(distinct name) from police_station;
desc crime_status;
select count(distinct police_station) from crime_status;
select distinct name from police_station limit 3;
select distinct police_station from crime_status limit 3;
select c.police_station, p.name
from crime_status c, police_station p
where p.name like concat('์„œ์šธ', c.police_station, '๊ฒฝ์ฐฐ์„œ')
group by c.police_station, p.name;

- ์˜ˆ์ œ 1-1 (foreign key ์˜ˆ์ œ) police_station.name ์„ Primary Key ๋กœ ์„ค์ •
 alter table police_station add primary key (name);
desc police_station;

  • ์˜ˆ์ œ 1-2 (foreign key ์˜ˆ์ œ) crime_status ํ…Œ์ด๋ธ”์— Foreign Key ๋กœ ์‚ฌ์šฉํ•  Column ์ถ”๊ฐ€
alter table crime_status add column reference varchar(16);
desc crime_status;

  • ์˜ˆ์ œ 1-3 (foreign key ์˜ˆ์ œ) Foreign Key ์ƒ์„ฑ
alter table crime_status add foreign key (reference) references police_station(name);
  • ๐Ÿ’ก ์˜ˆ์ œ 1-4 (foreign key ์˜ˆ์ œ) Foreign Key ๊ฐ’ Update
update crime_status c, police_station p set c.reference = p.name where p.name like concat('์„œ์šธ', c.police_station, '๊ฒฝ์ฐฐ์„œ');
select distinct police_station, reference from crime_status;
  • ์˜ˆ์ œ 1-4 (foreign key ์˜ˆ์ œ) Foreign Key ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‘ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ด€์‹œ์ผœ ๊ฒ€์ƒ‰
select c.police_station, p.address 
from crime_status c, police_station p
where c.reference = p.name 
group by c.police_station;

๐Ÿ’ก ๋ฌธ์ œ 1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด study_id ๊ฐ€ PRIMARY KEY, patient_id ๊ฐ€ person ํ…Œ์ด๋ธ”์˜ pid ์™€ ์—ฐ๊ฒฐ๋œFOREIGN KEY ๋กœ ์ง€์ •๋œ study ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑ

cd Documents/ds_sql_ws
mysql -u root -p
use zerobase;
show tables;
create table study ( 
study_id int not null, 
study_date date, 
study_time time, 
patient_id int, 
primary key (study_id), 
constraint FK_study foreign key (patient_id) references person(pid));
desc study;
show create table study;

๐Ÿ’ก ๋ฌธ์ œ 2. ์ƒ์„ฑํ•œ ํ…Œ์ด๋ธ”์˜ PRIMARY KEY ๋ฅผ ์‚ญ์ œ

alter table study drop primary key;

๐Ÿ’ก ๋ฌธ์ œ 3. ์ƒ์„ฑํ•œ ํ…Œ์ด๋ธ”์˜ FOREIGN KEY ๋ฅผ ์‚ญ์ œ

alter table study drop foreign key FK_study;
show create table study;

๐Ÿ’ก ๋ฌธ์ œ 4. study ํ…Œ์ด๋ธ”์˜ patient_id ๋ฅผ person ํ…Œ์ด๋ธ”์˜ pid ์™€ ์—ฐ๊ฒฐ๋œ FOREIGN KEY ๋กœ ๋“ฑ๋ก

 alter table study add foreign key (patient_id) references person(pid);
show create table study;

๐Ÿ’ก ๋ฌธ์ œ 5. study ํ…Œ์ด๋ธ”์˜ study_id ๋ฅผ PRIMARY KEY๋กœ ๋“ฑ๋ก

alter table study add primary key (study_id);
desc study;

์–ด๋ ต๋‹ค...์ƒ์†Œํ•˜๋‹ค..

๐Ÿ’ป ์ถœ์ฒ˜ : ์ œ๋กœ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ ์ทจ์—… ์Šค์ฟจ

profile
#๋ฐ์ดํ„ฐ๋ถ„์„ #ํผํฌ๋จผ์Šค๋งˆ์ผ€ํŒ… #๋ฐ์ดํ„ฐ #๋””์ง€ํ„ธ๋งˆ์ผ€ํŒ…

0๊ฐœ์˜ ๋Œ“๊ธ€