반응형
테이블 생성
create table [테이블명](
[컬럼1] [데이터타입] [제약조건] [제약조건],
[컬럼2] [데이터타입] [제약조건] [기타옵션],
...
);
제약조건 종류
- primary key : 기본키. null이 아니며 값이 유일해야 한다
- foreign key : 외래키. 상위 테이블의 기본키를 참조하는 컬럼. null이 아니면 반드시 상위테이블에 존재하는 값만 삽입할 수 있다
- unique : null은 허용하며 값이 있다면 테이블에서 유일해야한다.
- default : 해당 컬럼 값이 null이면 초기값 부여
- null값 허용 : 컬럼은 기본적으로 전부 null을 허용하며 허용하고 싶지 않을 시 not null 사용
- check 제약조건 : 8.0.16 버전부터 제공됨.
회원 테이블 생성
회원아이디인 uid는 중복값이 저장되지 않도록 unique 제약조건을 사용하였다.
create table user(
-- 컬럼명 타입 제약조건 옵션
uno int primary key auto_increment not null,
uid varchar(20) not null unique,
upw varchar(100) not null,
uname varchar(20) not null,
phone char(13),
uemail varchar(50) not null,
rdate timestamp not null default now(),
state char not null default 'E',
authorization char not null default 'U'
);
공지게시판 notice_board와 자유게시판 free_board 생성
회원번호를 외래키로 받기 위해 회원번호 uno를 각 테이블의 기본키 밑에 int 타입 null을 허용하지 않도록 넣고
마지막 줄에 foreign key(uno) references user(uno) 를 넣어줬다
foreign key(외래키이름) references 외래키있는테이블(외래키이름) 이다.
create table notice_board(
nno int primary key auto_increment not null,
uno int not null, -- 외래키 필드
title varchar(200) not null,
content text not null,
rdate timestamp not null default now(),
hit int not null default 0,
state char not null default 'E',
top_yn char not null default 'N',
filename varchar(100),
foreign key (uno) references user (uno)
);
create table free_board(
fno int primary key auto_increment not null,
uno int not null, -- 외래키 필드
title varchar(200) not null,
content text not null,
rdate timestamp not null default now(),
hit int not null default 0,
state char not null default 'E',
filename varchar(100),
foreign key (uno) references user (uno)
);
댓글 테이블은 회원테이블의 회원번호와 자유게시판 테이블의 글번호를 외래키로 받는다.
create table comment(
cno int primary key not null auto_increment,
uno int not null,
fno int not null,
content text not null,
state char not null default 'E',
foreign key (uno) references user (uno),
foreign key (fno) references free_board (fno)
);
테이블 삭제
drop table [테이블명];
테이블 안 데이터도 함께 제거됨
drop table comment;
테이블 수정
1) 컬럼 추가
데이터가 테이블에 쌓인 후 not null 컬럼을 추가하면 기존 데이터는 여전히 null을 가지고 있어 연산에 오류가 발생할 수 있다. 이때, default를 활용하면 이전 데이터에 기본값(초기값)을 부여할 수 있다
alter table [테이블명] add [컬럼 내용];
-- 컬럼 추가 alter table 테이블이름 add 컬럼 내용
alter table sample add contents varchar(200) not null default 'a';
2) 컬럼 삭제
데이터가 존재한다 하더라도 해당 컬럼과 데이터 전부 삭제
alter table [테이블명] drop column [컬럼명];
-- 컬럼 삭제 alter table 테이블이름 drop column 컬럼명
alter table sample drop column contents;
3) 컬럼 수정
기존 컬럼의 제약조건을 누락하게 되면 제거된다
alter table [테이블명] change column [변경하고자하는 기존컬럼명] [변경 컬럼 내용];
-- 컬럼 수정 alter table 테이블이름 change column 기존컬럼이름 수정컬럼내용
alter table sample change column title subject varchar(100) not null;
기타
해당 스키마(데이터베이스)의 테이블 목록 보기
MySQL에서 제공하는 기능 중 하나
show tables;
테이블 상세 정보 보기
desc [테이블명];
desc user;
반응형
'MySQL' 카테고리의 다른 글
[MySQL] SELECT문 WHERE BETWEEN, IN(),LIKE, 서브쿼리 (0) | 2024.09.03 |
---|---|
[MySQL] DML 데이터조작어 SELECT문 (2) | 2024.09.02 |
[MySQL] DML 데이터조작어 INSERT문 (0) | 2024.09.01 |
[MySQL] 유저 생성, 권한 부여 (0) | 2024.08.31 |
[MySQL] DB, DBMS, SQL, 정규화 (0) | 2024.08.30 |