상세 컨텐츠

본문 제목

[혼자 공부하는 SQL] Chapter05. 테이블과 뷰

SQL

by lee_hg; 2022. 2. 13. 20:17

본문

[테이블 만들기]

회원테이블(member)과 구매테이블(buy) 생성하기

# 회원테이블 생성하기
DROP TABLE IF EXISTS member; --기존 회원테이블 삭제

CREATE TABLE member(
mem_id char(8) NOT NULL PRIMARY KEY,
mem_name varchar(10) NOT NULL,
mem_number tinyint NOT NULL,
addr char(2) NOT NULL,
phone1 char(3),
phone2 char(8),
height tinyint UNSIGNED,
debut_date date
);

# 구매 테이블 생성하기
DROP TABLE IF EXISTS buy; -- 기존 구매테이블 삭제

CREATE TABLE buy(
num int AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id char(8) NOT NULL,
prod_name char(6) NOT NULL,
group_name char(4),
price int UNSIGNED NOT NULL,
amount smallint UNSIGNED NOT NULL,
FOREIGN KEY(mem_id) REFERENCES member(mem_id)
);

회원테이블과 구매테이블에 값 입력하기

# 회원테이블에 값 입력
INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015-10-19');
INSERT INTO member VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, '2016-8-8');
INSERT INTO member VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, '2015-1-15');

# 구매 테이블에 값 입력
INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);
INSERT INTO buy VALUES(NULL, 'BLK', '맥북프로', '디지털', 1000, 1);
INSERT INTO buy VALUES(NULL, 'APN', '아이폰', '디지털', 200, 1); -- mem_id값이 APN인 데이터가 없기 떄문에 추가 불가

[제약조건으로 테이블을 견고하게]

제약조건(constraint) : 데이터의 무결성을 지키기 위해 제한하는 조건

* 데이터 무결성이란? 데이터에 결함이 없음

 

기본 키(Primary Key) : 중복되지 않고, 비어 있지도 않음

 

※ CREATE TABLE에서 설정하는 기본키 제약조건

#1
CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);

#2
CREATE TABLE member(
mem_id CHAR(8) NOT NULL,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL,
PRIMARY KEY(mem_id)
);

※ ALTER TABLE에서 설정하는 기본키 제약조건

CREATE TABLE member(
mem_id CHAR(8) NOT NULL,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL,
);
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY(mem_id);

외래 키(Foreign Key) : 두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할

* 기본키가 있는 테이블(기준 테이블)과 외래키가 있는 테이블(참조 테이블)의 관계를 통해 조인

 

※ CREATE TABLE에서 설정하는 외래키 제약조건

CREATE TABLE member(
mem_id CHAR(8) NOT NULL PRIMARY KEY,
mem_name VARCHAR(10) NOT NULL,
height TINYINT UNSIGNED NULL
);
CREATE TABLE buy(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id CHAR(8) NOT NULL,
prod_name CHAR(6) NOT NULL,
FOREIGN KEY(mem_id) REFERENCES member(mem_id)
);

※ ALTER TABLE에서 설정하는 외래키 제약조건

CREATE TABLE buy(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
mem_id CHAR(8) NOT NULL,
prod_name CHAR(6) NOT NULL
);
ALTER TABLE buy
ADD CONSTRAINT
FOREIGN KEY(mem_id)
REFERENCES member(mem_id);

관련글 더보기

댓글 영역