DB - DAY 8

NewTypeAsuka·2023년 3월 14일
0

DB@

목록 보기
9/15

오늘은 예비군 훈련 때문에 어쩔 수 없이 결석하게 되었다.

하지만 수업내용을 미리 작성해두고 빠른 시일 내에 복습하면 될 것 같다.

1. DDL(Data Definition Language)

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 ‘회원이름’;

2. CREATE 제약조건

제약조건

  • 테이블 작성 시 각 컬럼에 기록될 데이터에 대해 제약조건을 설정할 수 있는데
    이는 데이터 무결성 보장을 주 목적으로 함
    입력 데이터에 문제가 없는지에 대한 검사와 데이터의 수정/삭제 가능 여부 검사 등을 위해 사용

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

3. ALTER와 DROP

ALTER

  • 테이블에 정의된 내용을 수정할 때 사용하는 데이터 정의어
  • 컬럼의 추가/삭제, 제약조건의 추가/삭제, 컬럼의 자료형 변경, DEFAULT 값 변경,
    테이블 명/컬럼 명/제약 조건 명 변경 등을 할 수 있음
  • 컬럼 추가

  • 컬럼 수정

  • 컬럼 삭제

  • 제약조건 추가

  • 제약조건 삭제

  • 컬럼 이름 변경

  • 제약조건 이름 변경

  • 테이블 이름 변경

DROP

  • 데이터베이스 객체를 삭제하는 구문
DROP TABLE DEPT_TEST CASCADE CONSTRAINT;

0개의 댓글