HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🗂️
생애 첫 SQL
/
🎉
보너스챕터 : 제약조건(Constraint)
🎉

보너스챕터 : 제약조건(Constraint)

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. 제약조건의 종류

제약 조건의 종류
제약조건
설명
NOT NULL
NULL값을 포함할 수 없습니다.
유니크
중복되는 값을 입력할 수 없습니다.(NULL값은 중복 입력이 가능합니다.)
primary key(기본키)
사용자가 가지고 있는 고유한 값입니다.(NOT NULL + 유니크)
foreign key(외래키)
다른 테이블의 컬럼을 참조해서 검사를 실행합니다.
CHECK
사용자가 설정한 값만 입력가능 하며, 나머지는 입력할 수 없습니다.
 
 

3. 제약조건 구문 형식

3.1 NOT NULL

 

3.2 UNIQUE

 

3.3 Primary key(기본키)

 

3.4 Foreign key(외래키)

 

3.5 CHECK

 

4. 실습

4.1 NOT NULL

입력
 
정상출력
notion image

4.2 UNIQUE

입력
 
정상출력
notion image
 

4.3 Primary key(기본키)

입력
 
정상출력
notion image

4.4 Foreign key(외래키)

입력
 
출력

4.5 CHECK

입력
 
정상출력
notion image
 
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 NOT NULL, 컬럼명2 데이터 타입 NULL, 컬럼명3 데이터 타입);
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 UNIQUE, 컬럼명2 데이터 타입, 컬럼명3 데이터 타입, 컬럼명4 데이터 타입, UNIQUE CONSTRAINT 제약명 UNIQUE(컬럼2, 컬럼3));
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 PRIMARY KEY, 컬럼명2 데이터 타입); OR CREATE TABLE 테이블명 (컬럼명1 데이터 타입, 컬럼명2 데이터 타입 CONSTRAINT 기본키 이름 PRIMARY KEY(컬럼2));
create TABLE 테이블명 (컬럼명1 데이터 타입 CONSTRAINT 외래키 이름 REFERENCES 참조테이블명(참조컬럼), 컬럼명2 데이터 타입); OR CREATE TABLE 테이블명 (컬럼명1 데이터 타입, 컬럼명2 데이터 타입 CONSTRAINT 외래키 이름 FOREIGN KEY(컬럼1) REFERENCES 참조테이블명(참조컬럼));
CREATE TABLE 테이블명 (컬럼명1 데이터 타입 CONSTRAINT 제약명 CHECK(조건), 컬럼명2 데이터 타입);
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")
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");
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");
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(외래키) 지원하지 않음
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");