1. 테이블 생성 구문 형식

CREATE TABLE 테이블_이름 (
    컬럼명1 DATATYPE [DEFAULT 값],
    컬럼명2 DATATYPE [DEFAULT 값],
    컬럼명3 DATATYPE [DEFAULT 값]
);

테이블 생성 규칙

  • 테이블 이름: 적절한 이름을 사용하고 단수형 권장.
  • 컬럼 이름: 중복 불가, 데이터베이스 내에서 일관성 유지.
  • 데이터 유형 지정: 모든 컬럼에 반드시 데이터 유형 지정.
  • 명명 규칙:
    • 문자(A-Z, a-z), 숫자(0-9), _, $, #만 허용.
    • 예약어 사용 금지.
  • SQL 문법: 대소문자 구분하지 않음, 문장 끝에 ; 사용.

2. CREATE TABLE 예제

CREATE TABLE PLAYER (
    PLAYER_ID CHAR(7) NOT NULL,
    PLAYER_NAME VARCHAR2(20) NOT NULL,
    TEAM_ID CHAR(3) NOT NULL,
    E_PLAYER_NAME VARCHAR2(40),
    NICKNAME VARCHAR2(30),
    JOIN_YYYY CHAR(4),
    POSITION VARCHAR2(10),
    BACK_NO NUMBER(2),
    NATION VARCHAR2(20),
    BIRTH_DATE DATE,
    SOLAR CHAR(1),
    HEIGHT NUMBER(3),
    WEIGHT NUMBER(3),

    CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID),
    CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID)
);

설명

  • DATE 유형: 별도 크기 지정하지 않음.
  • 제약 조건:
    • NOT NULL: 필수 입력.
    • PRIMARY KEY: 고유 식별 키.
    • FOREIGN KEY: 다른 테이블의 키를 참조.
  • 제약 조건 정의 위치:
    • 컬럼 레벨: 각 컬럼의 정의에 직접 추가.
    • 테이블 레벨: 테이블 생성 마지막에 선언.

3. 제약조건 (CONSTRAINT)

제약조건 설명

구분설명

PRIMARY KEY - 기본키: 행 데이터를 고유하게 식별.
- NULL 입력 불가.
- 자동으로 UNIQUE 인덱스 생성.
UNIQUE KEY - 고유키: 행 데이터를 고유하게 식별.
- NULL 값 허용.
NOT NULL - NULL 값 입력 금지.
- 필수 입력 컬럼.
CHECK - 값의 범위 제한.
- 논리식 평가(TRUE or FALSE).
FOREIGN KEY - 다른 테이블과의 관계를 정의.
- 참조 무결성 제약 옵션 제공.

4. 생성된 테이블 구조 확인 (DESC)

Oracle:

DESC PLAYER;

MySQL:

DESCRIBE PLAYER;

5. SELECT 문을 통한 테이블 생성

SELECT를 사용한 테이블 복제

CREATE TABLE TEMPPLAYER
    AS SELECT * FROM PLAYER;

특징

  • 기존 테이블에서 컬럼과 데이터를 복제.
  • 제약 조건:
    • NOT NULL: 유지.
    • PRIMARY KEY, FOREIGN KEY, CHECK: 적용되지 않음.
  • 제약 조건 추가:
     
ALTER TABLE TEMPPLAYER
ADD CONSTRAINT TEMPPLAYER_PK PRIMARY KEY (PLAYER_ID);

6. 실습 예제

테이블 생성

CREATE TABLE TEAM (
    TEAM_ID CHAR(3) PRIMARY KEY,
    TEAM_NAME VARCHAR2(30) NOT NULL
);

CREATE TABLE PLAYER (
    PLAYER_ID CHAR(7) NOT NULL,
    PLAYER_NAME VARCHAR2(20) NOT NULL,
    TEAM_ID CHAR(3) NOT NULL,
    POSITION VARCHAR2(10),
    BIRTH_DATE DATE,

    CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID),
    CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID)
);

테이블 구조 확인

DESC PLAYER;

데이터 삽입

INSERT INTO TEAM (TEAM_ID, TEAM_NAME) VALUES ('001', 'Team A');
INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, BIRTH_DATE)
VALUES ('P001', 'John Doe', '001', 'Forward', TO_DATE('1990-01-01', 'YYYY-MM-DD'));

데이터 조회

SELECT * FROM PLAYER;

+ Recent posts