[sql] sql의 제약조건

이유은·2023년 10월 19일

[Sql]

목록 보기
1/5

🔥 제약조건(constraints)

  • not null : 반드시 해당 컬럼은 데이터를 넣어야 한다(안넣으면 오류발생) //널값들어오지 못하게 하겠다!!
  • unique : 해당컬럼에 들어가는 값은 유일해야 만 한다(null은 비교 안한다)
  • primary key : 기본키, not null과 unique 속성을 동시에 가진 제약조건,테이블당 1개 생성 //널을 허용하지 않는 유일한 값 / 한개만 쓸 수 있다! 프라이머리 키를 어디에 둘건지 중요하게 생각함!

오라클을 비롯한 여러 DBMS는 데이터 무결성을 보장하는데, 데이터 무결성이란 데이터의 정확성과 일관성을 유지한다는 뜻. 데이타 무결성을 실질적으로 구현한 것이 바로 기본키 이다.

  • foreign key : 테이블간의 참조 데이터 무결성을 위한 제약조건 / 두테이블을 연결하는키
  • check : 컬럼에 입력되는 데이터를 체크해 특정 조건에 맞는 데이터만 입력받고 그렇지 않으면 오류
ex) create table testCheck 
   (num number check(num between 1 and 9),
    gender varchar2(10) check(gender           in('MALE', 'FEMALE')));

    이렇게 만들면 num에는 1부터 9까지만 입력가능
    gender에는 MALE이나 FEMALE만 입력가능
  • 제약조건 추가
    alter table testMember2 add constraints not_test not null (grand);
  • 제약조건 삭제
    alter table testMember2 drop constraints not_test;

🔥 시퀀스

  • 자동으로 순번을 반환하는 데이타베이스객체 /테이블 만들듯이 만듦 /크리에이트시퀀스
    특별한 로직으로 번호를 추출하는것이 아니라, 단순히 증감연산으로 유일한 숫자값을 구하고자 할때 시퀀스를 사용하면 매우 편리하다

🔺 시퀀스 만들기

create sequence sequence명
increment by 증감숫자
start with 시작숫자

🔺 제약조건 거는 방법

create table test2(
num number primary key,
name varchar2(20) not null,
tel varchar2(10));

insert in to test2(num,tel)
values(2, '123,1234')
** name not null에 위배되는 행

insert into test2(num,name)
values(2, '강호동');
** 무결성 계약조건에 위배 / 넘버에 프라이머리키가 있는데 같은 숫자 넣을 수 없음!

🔺 시퀀스 예시

create sequence test_num
increment by 1
start with 1;

이거나
create sequence test_num
이거 동일

// 시퀀스 1로 시작하고 1씩 증가하는 기본 특성

insert into test2 values(test_num.nextval, '유재석', '111-1111');
넣으면 순서대로 1,2,3 으로 들어감. 갑자기 다른 숫자가 나올수도있지만 그전으로 돌아가지는 않음
//임의로 숫자를 넣으면 오류 발생

profile
우당탕코딩

0개의 댓글