[SQL] 1_1. DDL(CREATE TABLE/제약조건)
안녕하세요. Playground입니다.
앞으로 SQL을 공부하게 되면서 제가 배운 내용을 블로그에 포스팅하려고 합니다.
DDL, DCL, DML, 또 데이터 모델 및 데이터베이스 개념에 대해서는 따로 포스팅하겠습니다.
이번에 포스팅할 내용은 DDL(Data Definition Language, 데이터 정의 언어) 중
CREATE TABLE
제약 조건(CONSTRAINT)
입니다.
- CREATE TABLE
말 그대로 테이블을 생성하는 문법입니다.
CREATE TABLE 테이블명 ( 변수명 데이터유형 제약조건, 변수명 데이터유형 제약조건, ); |
보통 위와 같은 유형으로 테이블을 생성합니다.
참고로 개념만 보면 감이 안 잡히니 아래와 같은 예제 1번을 살펴보겠습니다.
예제1) CREATE TABLE CLIENT ( CLIENT_NO CHAR(5) NOT NULL, CLIENT_NAME VARCHAR2(100), ); |
CLIENT(고객)테이블을 만들고
안에 컬럼인 CLIENT_NO(고객번호), CLIENT_NAME(고객이름)을 추가했습니다.
CLIENT_NO(고객번호)는 CHAR형 제약조건으로는 NOT NULL,
CLIENT_NAME(고객이름)은 VARCHAR2형,
제약조건은 넣어도 되고 안 넣어도 되는데 NOT NULL이 무엇이냐?
에 대해서는 아래 제약조건쪽에서 설명하겠습니다.
또 CREATE TABLE을 만들 때 아래와 같은 조건을 반드시 참고하셔야됩니다.
- 테이블 생성 끝에 ';'로 끝나야 한다. - 데이터 유형은 반드시 지정. - 같은 Owner내 다른 테이블과 테이블명 중복 x - 한 테이블 내에서 컬럼 명이 중복x (위 예제에서 CLIENT_NO, CLIENT_NO와 같이 똑같이 못만듬) - 테이블명과 컬럼명은 반드시 문자로 시작. - 0~9, A~Z, a~z, _, $, #문자만 허용 |
- 제약 조건(CONSTRAINT)
- 제약 조건의 정의
- 사용자가 원하는 조건의 데이터로만 생성하게 해줌 - 데이터의 무결성을 유지하기 위한 방법으로 테이블의 특정 컬럼에 제약을 설정하는 것. |
- 제약 조건의 종류
타입 | 설명 |
기본 키(Primary Key) | - 테이블 행을 식별하기 위해 하나의 테이블에 단 하나의 기본 키만 정의 가능. - 기본 키 생성 시 DBMS는 자동으로 UNIQUE 인덱스를 생성. - 기본 키 컬럼에는 NULL 입력 불가. |
고유 키(Unique Key) | - 테이블에 저장된 행 데이터를 고유하게 식별하기 위해 생성. - NULL은 입력 가능. |
외래 키(Foreign Key) | - 다른 테이블의 기본 키를 외래 키로 지정하는 경우 생성함(참조무결성제약조건). |
NOT NULL | - NULL값의 입력을 금지, 해당 컬럼에 NULL이 아닌 값이 들어가도록만 정의 가능. |
CHECK | - 입력할 수 있는 값 종류 및 범위를 제한. |
* SQL에서 NULL이란?
공백이나 숫자 0과는 전혀 다른 값이며, 조건에 맞는 데이터가 없을 때 공집합과도 다르다.
'아직 정의되지 않은 미지의 값' 이거나 '현재 데이터를 입력하지 못하는 경우'를 의미합니다.
* DEFAULT란?
기본값으로 컬럼의 값이 지정되어 있지 않을 경우 자동으로 들어가는 값입니다.
보통 명시된 값을 지정하지 않을 경우 NULL값이 입력되는데, DEFAULT값을 정의 하면 NULL값 대신
정의된 기본값이 자동으로 입력이 됩니다.
- 데이터 유형
데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료의 유형별로 나누는 기준.
아래는 SQL에서 쓰이는 데이터 유형(타입)입니다.
타입 | 설명 |
CHAR(L) | - 고정 길이 문자열. - 고정 길이를 가지고 있으므로 할당된 변수의 값이 L보다 작은 경우 그 차이만큼 공백으로 채워짐. |
VARCHAR2(L) | - 가변 길이 문자열 - L만큼의 최대 길이를 가진다. - L값보다 작을 경우 해당 값만큼만 공간을 차지. |
NUMBER(L, D) | - 정수, 실수 - L값은 전체 자리수, D값은 소수점 자리 수 |
DATE | - 날짜와 시각정보 - "년월일시분초"를 표현 |
'Programming > 데이터베이스' 카테고리의 다른 글
[SQL] 2_3. DML(DELETE) (0) | 2022.09.13 |
---|---|
[SQL] 2_2. DML(UPDATE) (0) | 2022.09.05 |
[SQL] 2_1. DML(INSERT INTO) (0) | 2022.08.31 |
[SQL] 1_2. DDL(ALTER TABLE) (0) | 2022.08.30 |