[Database] CREATE, 제약조건 종류

JOY·2023년 3월 29일
0

[Database]

목록 보기
3/3
post-thumbnail

DDL

CREATE

데이터베이스 내의 모든 객체를 생성할 때 사용하는 문장

  • 구문
CREATE TABLE 테이블명
(컬럼1 데이터타입[DEFAULT 기본값] [제약조건],
 컬럼2 데이터타입[DEFAULT 기본값] [제약조건], ...);
  • 테이블명 지정 규칙
    A-Z,a-z,0-9, _, $, # 만 테이블명의 맨 첫글자에 올 수 있다.


제약조건의 종류

1) PRIMARY KEY : 대표키, 중복X, NOT NULL, 자동 인덱스 설정
2) FOREIGN KEY :다른 테이블의 컬럼을 참조
3) UNIQUE : PK유사(테이블에서 대표키는 될수 없는 그렇지만 유일해야하는 속성에 설정, NULL 허용), 자동 인덱스 설정
4) CHECK : DOMAIN에 들어갈수 있는 값을 범위를 체크
5) DEFAULT : 기본값 설정

1) PRIMARY KEY - PK, 기본키, 대표키
: PK를 설정하면 중복안됨, NOT NULL , 자동의로 INDEX설정 - EX) 학번, 군번, 주민번호, 상품코드,...아이디...
: PK는 하나의 테이블에 반드시 한개만 존재
: 2개의 이상의 컬럼을 하나로 묶어서 PK설정 가능
- 복합키설정 : 사용할때 불편해서 모델링 과정속에서 복합키를 대리키로 변환하는 경우 많다!!!

2) FOREIGN KEY - FK = 외래키
: 다른 테이블의 PK를 참조하는 것.
: 테이블에 레코드를 추가할때 참조되는 대상의 값이외에는 등록 할수 없다.
- 참조무결성원칙!!!
: NULL허용, 중복가능!!
: 하나의 테이블에 여러개의 컬럼이 FK설정가능하다.
: 재귀적관계 설계 - 자기자신테이블의 PK를 참조하는것!!!

  • 주의사항
    INSERT 할때 : 부모키가 INSERT 👉 자식 INSERT
    DELETE할때 : 참조하고 있는 자식 DELETE 👉 부모 DELETE 해야한다.
  • 이러한 주의사항에 대한 불편함을 해결하기 위해서.
    FK를 설정할때 ON DELETE CASCADE 를 추가하면 부모레코드를 삭제할 때
    그 부모키를 참조하는 모든 테이블의 레코드를 함께 삭제한다.
    또는 FK설정할때 ON DELETE SET NULL 를 추가하면
    부모레코드 삭제될때 참조되는 자식레코드의 값이 null이된다.

3) UNIQUE
: 중복안됨, NULL허용(NOT NULL을 설정하면 PK와 동일)
: 후보키중에 대표키가 될수 없는 키를 UNIQUE 설정한다.
: 한테이블에 여러개의 컬럼에 설정가능

4) CHECK
: 조건을 설정하여 조건에 만족하지 않는 정보는 INSERT 할수 없다!

5) DEFAULT
: 기본값 설정(자주사용되는 값을 미리 설정해놓고 자동으로 값이 들어갈수 있또록 하는것)
: EX) 등록일, 조회수....
: DEFAULT를 설정할때는 CONSTRAINT 별칭은 안쓴다!
: NOT NULL을 설정하면 DEFALUT를 함께 사용할때는 반드시 DEFAULT를 먼저 작성한다.


❗Quiz

Q1. 제약조건의 설명으로 옳은 것은? 3번
1. 하나의 테이블에 PK 제약조건은 여러개 지정할 수 있다 -> 1개만 지정가능
2. 하나의 테이블에 UNIQUE 제약조건은 하나만 지정할 수 있다 -> 여러개 지정 가능
3. PK열에 대해서는 자동 인덱스가 생성된다
4. FK 값은 부모 테이블의 기존값과 일치해야하며 NULL을 넣을 수 없다 -> NULL 허용

Q2. SQL 종류 중 DML(조작어)이 아닌 것은? 3번
1. INSERT
2. DELETE
3. TRUNCATE (DDL)
4. UPDATE

Q3. DBMS에 대한 설명으로 옳지 않은 것은? 2번
1. 중복 제거로 데이터의 일관성이 유지된다.
2. 데이터를 파일단위로 저장하므로 관리가 쉽다. - 테이블 단위의 행과 열
3. 데이터 무결성이 유지된다
4. 데이터 표준 준수가 용이하다

profile
Just Do IT ------- 🏃‍♀️

0개의 댓글