λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
AI/μ±—μ§€ν”Όν‹° & μ œλ―Έλ‚˜μ΄ ν”„λ‘¬ν”„νŠΈ

[SQL] DDL : CREATE μ‚¬μš©λ²• 및 primary key, foriegn key μ„€μ •ν•˜λŠ” λ‹€μ–‘ν•œ 방법

by IworldT 2022. 2. 24.

 

이번 ν¬μŠ€νŒ…μ—μ„œλŠ” CREATE TABLE 쿼리λ₯Ό 톡해 예제 ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜κ³  primary key와 foriegn key λ“± μ˜΅μ…˜μ„ μ„€μ •ν•˜λŠ” μ—¬λŸ¬ 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

 

 

데이터 μ •μ˜μ–΄(DDL : Data Definition Language)

ν…Œμ΄λΈ”μ˜ 생성 및 λ³€κ²½, μ‚­μ œλ₯Ό λ‹΄λ‹Ήν•˜λŠ” λͺ…λ Ήμ–΄λ“€λ‘œ,

CREATE, DROP, RENAME, ALTER, TRUNCATE 등이 μžˆμŠ΅λ‹ˆλ‹€.

 

ν…Œμ΄λΈ”μ— 기본킀와 μ™Έλž˜ν‚€λ₯Ό μ„€μ •ν•˜λŠ” 방법은 μ—¬λŸ¬κ°€μ§€κ°€ μžˆλŠ”λ°μš”,

크게 2κ°€μ§€ μž…λ‹ˆλ‹€.

 

1. CREATE, 즉 ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λ©΄μ„œ μ„€μ •ν•˜κΈ°.

-> CREATE λͺ…λ Ήλ¬Έ λ‚΄μ˜ 칼럼 μ˜†μ΄λ‚˜ μ•„λž˜μ— μ¨μ€λ‹ˆλ‹€.

 

2. 이미 μƒμ„±λœ ν…Œμ΄λΈ”μ— μ„€μ •ν•˜κΈ°.

-> ALTER λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•΄μ€λ‹ˆλ‹€.

 

그럼 μ§€κΈˆλΆ€ν„° ν…Œμ΄λΈ”μ„ 직접 CREATE 해보고, 기본킀와 μ™Έλž˜ν‚€λ₯Ό μ…‹νŒ…ν•΄λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 


 

CREATE TABLE κΈ°λ³Έ 문법

CREATE TABLE ν…Œμ΄λΈ”λͺ…(
	ν•„λ“œλͺ…1 ν•„λ“œνƒ€μž…(자릿수),
    ν•„λ“œλͺ…2 ν•„λ“œνƒ€μž…(자릿수),
    ...
);

 

 

예제 ν…Œμ΄λΈ”

- message ν…Œμ΄λΈ”μ€ λ©”μ„Έμ§€λ₯Ό 보낸 내역을 μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”μž…λ‹ˆλ‹€.

- msgIdκ°€ λ©”μ‹œμ§€Id둜 보낸 λ©”μ‹œμ§€ ν•˜λ‚˜ν•˜λ‚˜λ₯Ό κ΅¬λΆ„ν•˜λŠ” primary key, toIdκ°€ λ°›λŠ” μ‚¬λžŒμ˜ Id, sendDateκ°€ 보낸 λ‚ μ§œ, contentsκ°€ 보낸 λ©”μ‹œμ§€μ˜ λ‚΄μš©μ΄λΌκ³  보면 λ˜κ² μŠ΅λ‹ˆλ‹€.

 

 

PRIMARY KEY μ„€μ •ν•˜κΈ° (3κ°€μ§€ 방법)

1. CREATE TABLE 쀑 칼럼 μ˜†μ— μ“°κΈ°

CREATE TABLE message (
	msgId varchar2(10) primary key,
    toId varchar2(10) not null,
    sendDate date,
    contents varchar2(100)
);

μ»¬λŸΌμ„ μ •μ˜ν•˜λ©΄μ„œ primary key 섀정을 μ†μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

CREATE TABLE

 

 

2. CREATE TABLE 쀑 μΉΌλŸΌλ“€ μ•„λž˜μ— μ“°κΈ°

CREATE TABLE ν…Œμ΄λΈ”μ΄λ¦„(
    ν•„λ“œλͺ…1 ν•„λ“œνƒ€μž…(자릿수),
	ν•„λ“œλͺ…2 ν•„λ“œνƒ€μž…(자릿수),
    ...,
    PRIMARY KEY (ν•„λ“œλͺ…)
);

/*λ˜λŠ” μ œμ•½μ‘°κ±΄λͺ… μ…‹νŒ…ν•˜κ³  싢은 경우*/

CREATE TABLE ν…Œμ΄λΈ”μ΄λ¦„(
    ν•„λ“œλͺ…1 ν•„λ“œνƒ€μž…(자릿수),
	ν•„λ“œλͺ…2 ν•„λ“œνƒ€μž…(자릿수),
    ...,
    CONSTRAINT μ œμ•½μ‘°κ±΄λͺ… PRIMARY KEY (ν•„λ“œλͺ…)
);

 

 

3.  ν…Œμ΄λΈ” 생성 ν›„, ALTER λͺ…λ Ήμ–΄λ₯Ό μ΄μš©ν•˜μ—¬ κΈ°λ³Έν‚€λ₯Ό μ„€μ •ν•˜κΈ°.

ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„
	MODIFY ADD ν•„λ“œμ΄λ¦„ ν•„λ“œνƒ€μž… PRIMARY KEY;
   
/*λ˜λŠ” μ œμ•½μ‘°κ±΄λͺ…을 μ…‹νŒ…ν•˜μ—¬ primary key 등을 μ„€μ •ν•˜κ³ μ‹Άμ€ 경우*/

ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„
	MODIFY CONSTRAINT μ œμ•½μ‘°κ±΄λͺ… PRIMARY KEY ν•„λ“œμ΄λ¦„ ν•„λ“œνƒ€μž…;

 

 

 

 

FOREIGN KEY μ„€μ •ν•˜κΈ° (2κ°€μ§€ 방법)

 

1.  CREATE TABLE 쀑 칼럼 μ•„λž˜μ— μ“°κΈ°

예제 ν…Œμ΄λΈ”

- dropMsg ν…Œμ΄λΈ”μ€ λ©”μ„Έμ§€λ₯Ό μ‚­μ œν•œ 내역을 μ €μž₯ν•˜λŠ” ν…Œμ΄λΈ”μž…λ‹ˆλ‹€.

- μ•„κΉŒ μƒμ„±ν•œ message ν…Œμ΄λΈ”μ˜ msgIdλ₯Ό μ™Έλž˜ν‚€λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€.

CREATE TABLE dropMsg (
	dropMsgId varchar2(10) PRIMARY KEY,
    dropDate date,
    msgId varchar2(10),
    FOREIGN KEY (msgId) REFERENCES message(msgId)
);

 

create table foriegn key μ„€μ •

 

 

2. CREATE TABLE ν›„ ALTER μ‚¬μš©ν•˜κΈ°

ALTER TABLE ν…Œμ΄λΈ”μ΄λ¦„
	MODIFY [CONSTRAINT μ œμ•½μ‘°κ±΄μ΄λ¦„] FOREIGN KEY (ν•„λ“œλͺ…) REFERENCES ν…Œμ΄λΈ”μ΄λ¦„ (ν•„λ“œλͺ…);
    
    /*[ ] μ•ˆμ˜ λ‚΄μš©μ€ μ œμ•½μ‘°κ±΄λͺ…을 μ„€μ •ν•˜κ³  싢을 λ•Œ μž‘μ„±*/

 

 

 

μ°Έκ³  μ‚¬μ΄νŠΈ : http://www.tcpschool.com/mysql/mysql_constraint_primaryKey

 

sql create , create primary key, create foreign key, alter primary key, alter foreign key

λ°˜μ‘ν˜•

λŒ“κΈ€