오늘은 예비군 훈련 때문에 어쩔 수 없이 결석하게 되었다.
하지만 수업내용을 미리 작성해두고 빠른 시일 내에 복습하면 될 것 같다.
DDL
- 데이터 정의 언어로 객체(OBJECT)를 만들고(CREATE), 수정하고(ALTER), 삭제(DROP)하는 구문을 말함
CREATE
- 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성하는 구문
CREATE TABLE MEMBER( MEMBER_ID VARCHAR2(20), MEMBER_PWD VARCHAR2(20), MEMBER_NAME VARCHAR2(20) );
- CHAR: 고정길이 문자 타입
- VARCHAR2: 가변길이 문자 타입
- NUMBER: 숫자 타입
- DATE: 날짜 타입
컬럼 주석
- 테이블의 컬럼에 주석을 다는 구문
COMMENT ON COLUMN MEMBER.MEMBER_ID IS ‘회원아이디’; COMMENT ON COLUMN MEMBER.MEMBER_PWD IS ‘비밀번호’; COMMENT ON COLUMN MEMBER.MEMBER_NAME IS ‘회원이름’;
제약조건
- 테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약조건을 설정할 수 있는데
이는 데이터 무결성 보장을 주 목적으로 함
입력 데이터에 문제가 없는지에 대한 검사와 데이터의 수정/삭제 가능 여부 검사 등을 위해 사용
NOT NULL
- 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
- 특정 컬럼에 값을 저장하거나 수정할 때 NULL 값을 허용하지 않도록 컬럼 레벨에서 제한
CREATE TABLE USER_NOTNULL( USER_NO NUMBER NOT NULL, USER_ID VARCHAR2(20) NOT NULL, USER_PWD VARCHAR2(30) NOT NULL );
UNIQUE
- 컬럼 입력 값에 대해 중복을 제한하는 제약조건으로 컬럼 레벨과 테이블 레벨에 설정 가능
(NULL 값 중복은 가능)CREATE TABLE USER_UNIQUE( USER_NO NUMBER CONSTRAINT 유저번호 UNIQUE, -- 컬럼명 지정 USER_ID VARCHAR2(20) UNIQUE, USER_PW VARCHAR2(20), USER_NAME VARCHAR2(20), UNIQUE (USER_PW, USER_NAME) -- 두개의 컬럼을 묶어 하나의 제약조건 설정(테이블 레벨) );
PRIMARY KEY
- 테이블에서 한 행의 정보를 구분하기 위한 고유 식별자(Identifier)역할
- NOT NULL의 의미와 UNIQUE의 의미를 둘 다 가지고 있으며 한 테이블 당 하나만 설정 가능
- NOT NULL의 의미: 필수 입력
- UNIQUE의 의미: 중복 불가
- 컬럼 레벨과 테이블 레벨 둘 다 지정 가능
FOREIGN KEY
- 참조 무결성을 위한 제약조건으로 참조된 다른 테이블이 제공한 값만 사용하도록 제한을 거는 것
- 참조되는 컬럼과 참조된 컬럼을 통해 테이블 간에 관계가 형성 되는데
참조되는 값은 제공되는 값 외에 NULL을 사용 가능하며
참조할 테이블의 참조할 컬럼명을 생략할 경우
PRIMARY KEY로 설정된 컬럼이 자동으로 참조할 컬럼이 됨
- FOREIGN KEY 옵션
- ON DELETE RESTRICTED:
삭제 제한(기본 값)- ON DELETE SET NULL:
부모 키 삭제 시 자식 키 NULL로 변경- ON DELETE CASCADE:
부모 키 삭제 시 자식 키도 삭제
CHECK
- 해당 컬럼에 입력 되거나 수정되는 값을 체크하여 설정된 값 이외의 값이면 에러 발생
서브쿼리를 이용한 테이블 생성
- 1) 테이블 전체 복사
CREATE TABLE EMPLOYEE_COPY AS (SELECT * FROM EMPLOYEE);
- 2) JOIN 후 원하는 컬럼만 복사
CREATE TABLE EMPLOYEE_COPY AS SELECT EMP_ID, EMP_NAME, DEPT_TITLE FROM EMPLOYEE LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID);
- 3) 테이블 형태만 복사(컬럼명, 데이터 타입만 복사)
CREATE TABLE DEPARTMENT_COPY AS SELECT * FROM DEPARTMENT WHERE 1 = 0; --FALSE
ALTER
- 테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어
- 컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경, DEFAULT 값 변경,
테이블 명/컬럼 명/제약 조건 명 변경 등을 할 수 있음- 컬럼 추가
- 컬럼 수정
- 컬럼 삭제
- 제약조건 추가
- 제약조건 삭제
- 컬럼 이름 변경
- 제약조건 이름 변경
- 테이블 이름 변경
DROP
- 데이터베이스 객체를 삭제하는 구문
DROP TABLE DEPT_TEST CASCADE CONSTRAINT;