DDL 데이터 정의어

이태규·2022년 3월 21일
0

SQL

목록 보기
6/26

--데이터 정의어: DDL
--테이블 생성 및 구조, 제약조건 등을 설정

테이블 만들기

CREATE TABLE MEMBER3(
    ID VARCHAR2(30),
    PW VARCHAR(200),
    AGE NUMBER(3),
    PHONE VARCHAR2(15),
    GENDER VARCHAR2(1),
    REGDATE DATE,
    REGDATE1 TIMESTAMP,
    
--    여기서 제약조건을 이제 붙인다잉
    CONSTRAINT PK_MEMBER3_ID PRIMARY KEY(ID),
    CONSTRAINT CK_MEMBER3_GENDER CHECK ( GENDER IN('M' , 'F') )
);

CLOB 텍스트 대량
VARCHAR2()로 애매한 영역

CONSTRAINT PK_MEMBER3_ID PRIMARY KEY(ID),
여기서 PK_MEMBER3_ID는 기본 키 이름임. 안붙이면 자동으로 만들어진다.

기본 키 이름이 붙었다.
제약 조건 AGE가 붙었다.

주소 컬럼 추가하기

ALTER TABLE 테이블명 ADD 컬럼명 컬럼타입
ALTER TABLE MEMBER3 ADD ADDR VARCHAR2(100);
ALTER TABLE STUDENT1 ADD SCOREKOR NUMBER(3) DEFAULT 80;

주소 타입의 길이 100 => 120

ALTER TABLE MEMBER3 MODIFY ADDR VARCHAR2(120);

테이블 삭제하기

DROP TABLE BOARD3 CASCADE CONSTRAINTS;

주소 컬럼 삭제

ALTER TABLE MEMBER3 DROP COLUMN ADDR;

기본키 제약조건 설정

기존에 기본키를 만들었기 때문에 지금은 동작 안됨.
좋은 설계는 ALTER를 쓰지 않는 것임.
처음부터 변경사항 없는 설계가 좋은 거임

ALTER TABLE 테이블명 ADD CONSTRAINT 명칭 PRIMARY KEY (명칭 생략 가능)
ALTER TABLE MEMBER3 ADD CONSTRAINT PK_MEMBER3_ID PRIMARY KEY(ID);

성별에 not null 추가

널이 아님은 제약조건이 아닌 타입으로 봐야 함. (하나의 유형으로 봐야 함.)

열에 잡혀 있음.

ALTER TABLE MEMBER3 MODIFY GENDER NOT NULL;


널이 아님이 잡혀 있는 것을 확인할 수 있음.

연락처에 고유값(UNIQUE) 설정 (제약 조건) + 체크

ALTER TABLE MEMBER3 ADD CONSTRAINT UQ_MEMBER3_PHONE UNIQUE(PHONE);

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건 이름 CHECK (컬럼명 IN ('체크', '체크'))

제약 조건 삭제

ALTER TABLE MEMBER3 DROP CONSTRAINT UQ_MEMBER3_PHONE;


사라진 걸 확인할 수 있음.

외래키

CONSTRAINT FK_BOARD3_WRITER FOREIGN KEY(WRITER) REFERENCES MEMBER3(ID)
ALTER TABLE EMP01 ADD CONSTRAINT  FK_EMP01_DEPTNO FOREIGN KEY(DEPTNO) REFERENCES DEPT01(DEPTNO)

profile
한 걸음씩 나아가자

0개의 댓글