DDL - 테이블 생성 규칙
1. 테이블 명
: 객체 의미할 수 있는 이름, 단수형 권고, 다른 테이블의 이름과 중복되지 않아야 함
2. 컬럼 명
: 한 테이블 내에 중복되지 않아야함, 테이블 생성시 각 컬럼은 괄호 내 콤마로 구분,
뒤에 데이터 유형이 반드시 지정되어야
3. 테이블명&컬럼명
: 사전에 정의된 예약어(Reserved word)는 사용 불가(ex) select, from, where etc),
문자 숫자 일부 기호(_, $, #)만 허용, 반드시 문자로 시작되어야 함(숫자, 기호x)
4. 제약 조건명 : 다른 제약조건의 이름과 중복되지 않아야
<Oracle 주요 데이터 타입>
1. CHAR : 고정 문자열, 고정길이보다 작은 경우 공백이 채워짐
2. VARCHAR2 : 가변 길이 문자열, 고정길이보다 작으면 나머지 공간은 사용 x
3. NUMBER : 숫자, 10가지 이상의 숫자 타입 지원,
전체자리수와 소수 부분 자리수 명시(ex. NUMBER(8,2) 정수 부분 6자리, 소수 부분 2자리)
4. DATE : 날짜 시각
<제약조건 Constraints>
1. Primary Key (기본키) : not null and unique
2. Foreign key (외래키) : 타 테이블 기본키를 참조. 참조 무결성 제약 옵션 선택(삭제나 변경이 쉽지 않도록 하는것)
3. NOT NULL
4. UNIQUE
5. CHECK : 입력할 수 있는 값을 제한하는 조건 ex. CONSTRAINT BACK_NO_CK CHECK(BACK_NO<99) :
백넘버는 99 이하로만 작성할 수 있게 제한
▶ 명시적으로 부여할 수도 있고, 암묵적으로 시행할 시 시스템에서 알아서 함
<제약 조건의 지정>
1.
CONSTRAINT STADIUM_PK PRIMARY KEY (STADIUM_ID)
이런식으로 CREATE TABLE 할때도 되지만
(맨 밑에 적으면됨)
2.
CREATE TABLE STADIUM (
STADIUM_ID CHAR(3) PRIMARY KEY ,
STADIUM_NAME VARCHAR(40) NOT NULL,
HOMETEAM_ID CHAR(3) UNIQUE,
SEAT_COUNT int CHECK (SEAT_COUNT >=10 AND SEAT_COUNT <= 100),
TEL VARCHAR(10) REFERENCES TEAM(TEM_ID)
);
이런식으로 묵시적으로 지정해주는 방법,
3.
그리고
CREATE TABLE STADIUM (
STADIUM_ID CHAR(3) CONSTRAINT p2_pk_id PRIMARY KEY ,
STADIUM_NAME VARCHAR(40) CONSTRAINT p2_nn_name NOT NULL,
HOMETEAM_ID CHAR(3) CONSTRAINT p2_un_nick UNIQUE,
SEAT_COUNT int CONSTRAINT p2_ck_seat CHECK(SEAT_COUNT >=10 AND SEAT_COUNT <= 100),
TEL VARCHAR(10) CONSTRAINT p2_fk_tel REFERENCES TEAM(TEM_ID)
);
이런식으로 'CONSTRAINT 제약조건이름' 을 붙여서 명시적으로 지정해주는 방법이 있다.
만약 제약 조건을 확인하고 싶다면
<FK 제약 조건의 옵션>
: FK는 부모 테이블의 PK에서 가져왔기 때문에 PK의 레코드가 달라지면
FK도 달라져야함 이에 대한 얘기
Referential Triggered Action 을 지정해야함
> ON UPDATE, ON DELETE 일때
- Referential Action
1. RESTRICT(default) : 기본 값의 삭제 또는 갱신의 불허, PK의 레코드가 삭제or업뎃이 안되도록
2. NO ACTION : Restrict 와 동일하게 동작
3. CASCADE : 기본키(PK)가 삭제되면 해당 값을 외래키로 갖는 레코드 삭제 (ON DELETE CASCADE)
PK가 갱신되면 이를 참조하는 FK도 새로운 값으로 업데이트 (ON UPDATE CASCADE)
tmi ) 원래 되도록이면 PK는 업뎃을 하면 안된다 ㅠ 없어지고 새로 만들어지는 것이지
4. SET NULL : 기본키가 삭제or갱신되면 이를 참조하는 FK를 NULL로 업뎃 (ON DELETE/UPDATE SET NULL)
<기존 테이블을 활용한 테이블 생성>
CREATE TABLE PLAYER_TEMP
AS SELECT * FROM PLAYER;
as 뒤에 새로 만들어지고자 하는 다른 테이블의 레코드들을 select문을 통해 조회해 create
▶ 제약조건은 NOT NULL만 복제됨 (PK, FK, UNIQUE, CHECK 등은 수동으로 추가)
'데이터베이스 > SQL' 카테고리의 다른 글
SQLD 를 위한 SQL기본문법 정리 6 - Function_1 (0) | 2024.02.14 |
---|---|
SQLD 를 위한 SQL기본문법 정리 5 - DDL, 테이블 변경 (0) | 2024.02.14 |
SQLD 를 위한 SQL기본문법 정리 3 (0) | 2024.02.07 |
SQLD 를 위한 SQL기본문법 정리 2 (0) | 2024.02.05 |
SQLD 를 위한 SQL기본문법 정리 1 (0) | 2024.02.05 |