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;
'소프트웨어 개발 및 시스템 프로그래밍 > 데이터베이스' 카테고리의 다른 글
데이터베이스 데이터 유형 및 CHAR와 VARCHAR의 차이점 (2) | 2024.12.14 |
---|---|
MySQL Monitor 사용법 (0) | 2024.12.14 |
[SQL]Connection Pooling (0) | 2024.12.14 |
데이터베이스 개념 (1) | 2024.12.13 |