데이터베이스, 테이블 만들기
DROP DATABASE tabledb;
CREATE DATABASE tabledb;
USE tabledb;
DROP TABLE IF EXISTS usertbl;
CREATE TABLE usertbl(
userID CHAR(8) NOT NULL PRIMARY KEY,
...
height SMALLINT NULL,
FOREIGN KEY(userid) RFERENCES usertbl(userID)
);
-- 테이블에 데이터 입력하기.
INSERT INTO usertbl VALUES('LSG', '이승기', 1987 '서울', '011', '111111', 182, '2008-8-8');
제약 조건
- 데이터 무결성을 위해 제한된 조건을 의미한다.
- 특정 데이터 입력 시 어떤 조건 만족하면 입력되도록 제약(같은 아이디로 중복 회원 가입 안 되게 하기 등)
- 제약조건 종류
- PRIMARY KEY 제약 조건
- FOREIGN KEY 제약 조건
- UNIQUE 제약 조건
- CHECK 제약 조건
- DEFAULT 정의
- NULL 값 허용
기본 키 제약 조건
- 기본키로 생성한 건 자동으로 클러스터형 인덱스를 생성한다.
- 테이블에서는 기본 키를 하나 이상 열에 설정할 수 있다.
- CREATE TABLE usertbl2( userID CHAR(8) NOT NULL, ..., CONSTRAINT PRIMARY KEY PK_userTBL_userID(userID) ); -- 복합키 CREATE TABLE usertbl2( userID CHAR(8) NOT NULL, ..., CONSTRAINT PK_prodtbl_proCode_prodID PRIMARY KEY (prodCode, prodID) );
외래 키 제약 조건
- 두 테이블 간 관계 선언해 데이터 무결성 보장
- 외래 키 관계 ⇒ 하나의 테이블이 다른 테이블에 의존
- 외래 키 테이블이 참조하는 기준 테이블의 열은 반드시 기본키이거나 Unique 제약 조건이 설정되어야
- 외래 키 옵션 중 **ON DELETE CASCADE, ON UPDATE CASCADE**는 기준 테이블 데이터가 변경되면 외래 키 테이블에도 자동 적용하도록 해준다.
외래 키 생성법
- CREATE TABLE 끝에 FOREIGN KEY 키워드로 설정
- DROP TABLE IF EXISTS buyTBL, userTBL; CREATE TABLE userTBL ( userID CHAR(8) NOT NULL PRIMARY KEY, name VARCHAR(1) NOT NULL, birthYear INT NOT NULL ); CREATE TABLE buyTBL ( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, userID CHAR(8) NOT NULL, prodName CHAR(6) NOT NULL, FOREIGN KEY(userID) REFERENCES userTBL(userID) );
- ALTER TABLE 구문 이용하기
DROP TABLE IF EXISTS buyTBL;
CREATE TABLE buyTBL (
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
userID CHAR(8) NOT NULL,
prodName CHAR(6) NOT NULL
);
ALTER TABLE buyTBL
ADD CONSTRAINT FK_userTBL_buyTBL
FOREIGN KEY(userID)
REFERENCES userTBL(userID);
UNIQUE 제약 조건
- 중복되지 않는 유일한 값 조건
- 기본키와는 다르게 NULL 값 허용
- CREATE TABLE userTBL ( email CHAR(30) NULL UNIQUE );
CHECK 제약 조건
DEFAULT 정의
- 값 입력 안 됐을 때 기본 값 자동 정의하는 방법
- ALTER TABLE 사용 시 열에 DEFAULT 지정 위해 ALTER COLUMN문 사용
- CREATE TABLE userTBL( ... birthyear INT NOT NULL DEFAULT -1, addr CHAR(2) NOT NULL DFAULT '서울', ... );
NULL 값 허용
- 널 허용 시 NULL, 불허하면 NOT NULL
- 기본키 설정된 열에는 기본적으로 NOT NULL 적용
- NULL은 ‘아무것도 없다’는 의미로, 공백이나 0과는 다르다.
테이블 삭제
- DROP TABLE 테이블이름;
- 외래 키 제약 조건의 기준 테이블은 삭제가 불가하다.
- 외래 키가 생성된 외래 키 테이블부터 삭제해야 가능
- DROP TABLE 테이블1, 테이블2, … 이런 식으로 여러 테이블 동시 삭제도 가능
테이블 수정
테이블 수정
ALTER TABLE usertbl
DROP PRIMARY KEY;