1. 제약조건이란2. 제약조건의 종류3. 제약조건 구문 형식3.1 NOT NULL3.2 UNIQUE3.3 Primary key(기본키)3.4 Foreign key(외래키)3.5 CHECK4. 실습4.1 NOT NULL4.2 UNIQUE4.3 Primary key(기본키)4.4 Foreign key(외래키)4.5 CHECK
1. 제약조건이란
- 테이블에 잘못된 데이터의 출입은 막고, 맞는 데이터만 들여보내기 위해서 사용합니다.
- 데이터의 정확성과 일관성을 위해 정의된 규칙입니다.
- 딕셔너리에 저장됩니다.
2. 제약조건의 종류
제약 조건의 종류
제약조건
설명
NULL값을 포함할 수 없습니다.
중복되는 값을 입력할 수 없습니다.(NULL값은 중복 입력이 가능합니다.)
사용자가 가지고 있는 고유한 값입니다.(NOT NULL + 유니크)
다른 테이블의 컬럼을 참조해서 검사를 실행합니다.
사용자가 설정한 값만 입력가능 하며, 나머지는 입력할 수 없습니다.
3. 제약조건 구문 형식
3.1 NOT NULL
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 NOT NULL, 컬럼명2 데이터 타입 NULL, 컬럼명3 데이터 타입);
3.2 UNIQUE
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 UNIQUE, 컬럼명2 데이터 타입, 컬럼명3 데이터 타입, 컬럼명4 데이터 타입, UNIQUE CONSTRAINT 제약명 UNIQUE(컬럼2, 컬럼3));
3.3 Primary key(기본키)
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 PRIMARY KEY, 컬럼명2 데이터 타입); OR CREATE TABLE 테이블명 (컬럼명1 데이터 타입, 컬럼명2 데이터 타입 CONSTRAINT 기본키 이름 PRIMARY KEY(컬럼2));
3.4 Foreign key(외래키)
create TABLE 테이블명 (컬럼명1 데이터 타입 CONSTRAINT 외래키 이름 REFERENCES 참조테이블명(참조컬럼), 컬럼명2 데이터 타입); OR CREATE TABLE 테이블명 (컬럼명1 데이터 타입, 컬럼명2 데이터 타입 CONSTRAINT 외래키 이름 FOREIGN KEY(컬럼1) REFERENCES 참조테이블명(참조컬럼));
3.5 CHECK
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 CONSTRAINT 제약명 CHECK(조건), 컬럼명2 데이터 타입);
4. 실습
4.1 NOT NULL
입력
create table student( name varchar(20) not null, age int null, address varchar(20), school varchar(20) ) #정상출력 insert into student(name, age, address, school) values("홍길동", 13, "Jeju", "A school") #오류 발생 insert into student(name, age, address, school) values(null, 13, "Jeju", "A school")
정상출력
4.2 UNIQUE
입력
create table student( name varchar(20) unique, age int, address varchar(20), school varchar(20) ) #정상출력 insert into student(name, age, address, school) values("홍길동",13,"Jeju","A school"); insert into student(name, age, address, school) values("홍길남",15,"Seoul","B school"); #오류출력 insert into student(name, age, address, school) values("홍길동",13,"Jeju","A school"); insert into student(name, age, address, school) values("홍길동",15,"Seoul","B school");
정상출력
4.3 Primary key(기본키)
입력
create table student( name varchar(20), age int, address varchar(20) Primary key, school varchar(20) ) #정상출력 insert into student(name, age, address, school) values("홍길영",14,"Busan","A school"); insert into student(name, age, address, school) values("홍길순",16,"Ulsan","B school"); #오류출력 insert into student(name, age, address, school) values("홍길영",14,"Busan","A school"); insert into student(name, age, address, school) values("홍길순",16,"Busan","B school");
정상출력
4.4 Foreign key(외래키)
입력
create table teacher( teacherID int primary key, age int, subject varchar(20) ); create table( studentID varchar(20) primary key, age int, teacherID int foreign key references teacher(teacherID) );
출력
Foreign key(외래키) 지원하지 않음
4.5 CHECK
입력
create table student( name varchar(20), age int ckeck(age>= 8 and age <= 19), address varchar(20), school varchar(20) ) #정상출력 insert into student(name, age, address, school) values("홍길동",13,"Jeju","A school"); #오류출력 insert into student(name, age, address, school) values("홍길동",22,"Jeju","A school");
정상출력