티스토리 뷰

SQL

테이블 생성하기

코린이도이 2021. 6. 12. 17:14

테이블(Table)

  • 데이터베이스의 기본적인 자료(데이터) 저장 단위이다.
  • 테이블은 사용자가 접근 가능한 모든 데이터를 보유하며 열(Column)과 행(Row)으로 구성된다.
  • 데이터 모델링 단계에서 생성된 엔티티들이 테이블로 생성된다.
  • 테이블은 두 엔터티간의 관계를 지정할 수 있다.
  • 테이블내에 있는 외래키(Foreign Key)는 두 엔티티 사이의 관계를 표현하는데 사용된다.
  • 참고
    • 테이블 생성시 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료의 유형을 규정한다. 따라서 선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 데이터베이스는 에러를 발생시킨다.
    • 기본 데이터 타입의 종류는 크게 문자형 데이터, 숫자형 데이터, 날짜 데이터로 구분할 수 있다.
    • 데이터 유형과 더불어 지정한 크기(SIZE)도 중요한 기능을 제공한다. 즉 선언 당시 지정한 데이터의 크기를 넘어선 자료가 입력되는 상황도 에러를 발생시킨다.
- 테이블 생성 구문
CREATE TABLE 테이블이름(
컬럼1 데이터타입 [DEFAULT 기본값] [제약조건],
컬럼2 데이터타입 [DEFAULT 기본값] [제약조건],
컬럼3 데이터타입 [DEFAULT 기본값] [제약조건],
:
);
CREATE TABLE 키워드 다음에 생성할 테이블 이름을 지정한다. 각 컬럼명을 지정한 다음 데이터 타입을 필수로 지정해야 하고 기본값이나 제약조건은 설정할 필요가 있는 컬럼에만 선택적으로 지정하면 된다.

 

1. 문자 데이터 타입

  • 영문자, 한글 자료를 저장하기 위해 사용하는 자료형이다.
  • 사용자가 입력한 글자만큼만 저장 공간을 할당하는 가변 문자형은 VARCHAR로 설정한다.
  • 사용자 입력 글자가 아닌 설정한 크기만큼 저장 공간을 할당해서 저장하는 경우 CHAR로 설정한다.
  • 데이터 유형 설명 길이
    CHAR(size) 고정 길이의 문자데이터 최대크기는 2000바이트
    size값 생략 시 기본값은 1
    VARCHAR(size) 가변 길이의 문자데이터 최대는 4000바이트, size값 생략 안됨
    CLOB LONG 타입 확장된 형태
    가변길이 문자데이터 저장
    최대 4GB
    LONG 가변 길이의 문자 데이터 최대 크기는 2GB
  • ABCDE란 문자열을 varchar(10)인 컬럼과 char(10)인 컬럼에 저장
    • VARCHAR(10)
      A B C D E
    • CHAR(10)
      A B C D E 공백 공백 공백 공백 공백

 

2. 숫자 / 날짜 데이터 타입

  • 30, 2900 같은 숫자자료를 저장하기 위해서 사용하는 자료형이다.
  • 정수를 저장하기 위해서는 INT형을 사용한다.
  • 실수가 포함될 수도 있는 자료를 저장하기 위해서는 NUMBER형을 사용한다.
  • 실수의 소수점 자리를 지정하려면 NUMBER(숫자, 소수점자리수) 형태로 지정하고, 정수만을 표현하려고 할 경우에는 NUMBER(자리수)만 지정하면 된다.
  • NUMBER(4)인 경우 -9999부터 9999까지 입력할 수 있다.
  • NUMBER(4,2)인 경우 -99.99부터 99.99까지 입력할 수 있다.
  • 날짜 데이터를 저장하기 위해 DATE형을 사용한다.

 

3. 제약조건의 종류

  • 제약조건이란 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 여러 가지 규칙을 적용하는 것을 말한다.
  • 테이블에 행이 삽입, 갱신, 삭제될때마다 제약 조건을 만족하는지 확인 작업이 수행되고 제약조건을 만족하지 않는 자료는 입력/수정이 거부된다.
  • 제약조건의 종류
    • 제약 조건 종류 설명
      NOT NULL 컬럼이 NULL값을 포함하지 못하도록 지정한다.
      UNIQUE 테이블의 모든 행에서 고유한 값을 갖는 컬럼 또는 컬럼 조합을 지정한다.
      PRIMARY KEY 테이블의 각 행을 고유하게 식별하도록 한다.
      FOREIGN KEY 다른 테이블 컬럼 값을 참조할 수 있도록 외래 키를 설정한다.
      CHECK 별도 조건을 이용해서 검사하도록 한다.

3-1. NOT NULL 제약조건

  • 해당 컬럼에 NULL값을 허용하지 않도록 하는 설정이다. NULL이라는 것은 아무것도 입력되지 않는 것을 말하며, 문자열상의 공백을 뜻하는 것은 아니다.
  • NULL값을 허용하지 않으려면 테이블 생성시 해당 컬럼명 다음에 NOT NULL로 지정한다.
  • NOT NULL로 설정된 컬럼에는 아무런 값도 들어가지 않게 하려는 입력/수정하는 작업이 수행되지 않는다.

3-2. UNIQUE 제약조건

  • 컬럼에 중복값이 들어가지 않도록 설정하는 것이다.
  • 기존에 등록된 자료와 동일한 값으로는 입력/수정작업을 수행할 수 없다.

3-3. PRIMARY KEY 제약조건

  • 기본키라 부르는 테이블의 각 행들을 구분할 수 있는 식별자이다.
  • 중복될 수 없고, NULL값이 입력될 수 없다.
  • 기본키로 설정하면 자동으로 인덱스가 생성된다.
  • 기본키는 하나의 컬럼 또는 여러 개의 컬럼을 합쳐서 설정할 수는 있으나, 하나의 테이블에는 한 개만 설정할 수 있다.

3-4. FOREIGN KEY 제약조건

  • 외래키라 부르는 두 테이블 간의 관계를 선언하는 제약조건이다.
  • 외래키(FOREIGN)를 설정함으로써 데이터의 무결성을 보장해준다.
  • 외래키 관계를 설정하게 되면 하나의 테이블이 다른 테이블에 의존하게 된다.
  • 외래키 테이블에 데이터를 입력할 때는 꼭 기준 테이블 컬럼을 참조해서 입력하므로, 기준 테이블 컬럼에 해당 데이터가 존재해야만 한다.
  • 동일한 테이블 내에서도 외래키를 설정해 참조할 수 있다.

3-5. CHECK 제약조건

  • 제약이 되는 조건을 직접 입력할 수 있다.
  • CHECK 제약조건으로 지정한 조건을 만족하는 자료만 입력/수정 가능하도록 설정한다.
  • 다른 컬럼을 참조하는 것이 아니라 지정된 조건을 만족하는지 확인한다.

 

4. 테이블 이름 규칙

  • 테이블을 생성하기 위해서는 CREATE TABLE이라는 키워드를 사용한다.
  • CREATE TABLE 테이블 명
  • 테이블 이름 규칙
    • 문자로 시작해야 한다.
    • 1자부터 30자까지 가능하다.
    • 다른 객체의 이름과 중복되지 않아야 한다.
    • DB 서버의 예약어는 사용할 수 없다. (SELECT, FROM 등)

 

5. 기본값 설정하기

  • 테이블에 데이터를 입력시 컬럼 목록에서 해당 컬럼을 생략한 경우 기본값으로 입력된다.
  • 기본 값을 DEFAULT라는 키워드를 이용하며, 다음과 같은 형식을 사용한다.
  • DEFAULT 기본으로 들어갈 값
- 테이블 생성
CREATE TABLE t1 (
    col1 int primary key
    col2 varchar default 'DEFAULT' NOT NULL,
    col3 int default 200 NOT NULL );

- 자료 입력
INSERT INTO t1 ( col1 ) values (1);

- 등록 자료 확인
col1 col2 col3
1 DEFAULT 200

 

6. 테이블 제거하기

  • 테이블을 삭제하기 위해서는 DROP키워드를 사용한다.
  • 테이블의 데이터와 저장 구조 모두 삭제한다.
  • 해당 명령은 단독으로 수행되었을 때 되돌릴 수 없는 결과가 생기기 때문에 매우 민감한 명령이다. 그렇기 때문에 테이블을 생성한 사용자와 권한을 가진 사용자만 테이블을 삭제할 수 있다.
  • DROP TABLE 테이블명;

'SQL' 카테고리의 다른 글

그룹으로 나누기 (GROUP BY)  (0) 2021.06.21
정렬하기 (order by)  (0) 2021.06.18
검색 조건 지정하기 (WHERE)  (0) 2021.06.17
SELECT 구문  (0) 2021.06.13
데이터베이스 DBMS / RDBMS 및 SQL  (0) 2021.06.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함