
테이블 : 표 형태로 구성된 2차원 구조 (행 - 로우/레코드, 열 - 컬럼/필드)
기본키 : 학번, 아이디 등과 같은 고유한 번호
외래키 : 기본 키와 연결되는 열에 지정
고유키 : 이메일, 휴대폰과 같이 중복되지 않는 열은 고유키 지정 가능
제약조건 : 데이터의 무결성을 지키기 위해 제한하는 조건
📌 기본키 생성 방법 1
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null
);
📌 기본키 생성 방법 2
create table member -- 회원 테이블
( mem_id char(8) not null,
mem_name varchar(10) not null,
primary key (mem_id) -- 기본 키 설정
);
📌 기본키 생성 방법 3 : 이미 만들어진 테이블 수정 alter table 구문 사용
create table member -- 회원 테이블
( mem_id char(8) not null,
mem_name varchar(10) not null
);
alter table member -- member 테이블 변경
add constraint -- 제약 조건 추가
primary key (mem_id); -- 기본키로 설정
📌 외래키 생성 방법 1
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) null,
phone2 char(8) null,
height tinyint unsigned null,
debut_dated date null
);
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) null,
price int unsigned not null,
amount smallint unsigned not null,
foreign key(mem_id) references member(mem_id) -- 외래키로 설정
);
[외래키 설정 형식]
foreign key(열 이름) references 기준_테이블(열 이름)
📌 외래키 생성 방법 2 : 이미 만들어진 테이블 수정 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) -- 외래 키 제약조건을 buy 테이블의 mem_id에 설정
references member(mem_id); -- 참조할 기준 테이블 : member 테이블의 mem_id의 열
⁉️ 기준 테이블의 열이 변경된다면?
-> 참조 테이블의 데이터에 문제가 발생 !
📌 on update/delete cascade 구문
기준 테이블의 데이터가 삭제되면 참조 테이블의 데이터도 삭제되는 기능
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);
on update cascade;
on delete cascade;
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null,
email char(30) null unique
);
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null,
height tinyint unsigned null check (height=100)
);
or
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null,
height tinyint unsigned null,
phone1 char(3) null,
);
alter table member
add constraint
check (phone1 IN ('02','031')); -- IN은 괄호 안에 있는 값 중 하나와 같아야 참
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null,
height tinyint unsigned null default 160, -- 기본값 지정
);
or
create table member -- 회원 테이블
( mem_id char(8) not null primary key, -- 기본 키
mem_name varchar(10) not null,
height tinyint unsigned null,
);
alter table member
alter column phone1 set default '02';
기본값이 설정된 열에 기본값을 입력하려면 values에 default라고 써주기!
결국 뷰는 SELECT 문 !!
📌 뷰 생성 방법
create view v_member
as
select mem_id, mem_name, addr from member;
select * from v_member;