데이터베이스

[DB]7. DDL

CodeJaram 2023. 6. 6. 23:32

데이터베이스 07_DDL

1. 데이터 정의어: 테이블 같은 데이터 저장소, 객체를 만들거나 수정

 

2. CREATE: 새로운 객체를 생성할 때 사용하는 명령어

  -CREATE TABLE(USER, SEQUENCE, VIEW)

  ● 테이블 조회: 테이블명 작성-블럭 씌우기-Shift+ F4

    -자료형(크기): DATA_TYPE

   -기본값: DATA_DEFAULT

   -NULL 여부: NULLABLE(YES=NULL(생략가능), NO=NOT NULL)

 ● 컬럼 여러 개 쓸 때는 콤마로 연결하며, 마지막 컬럼은 콤마를 쓰지 않는다.

 ● 테이블 삭제: DROP TABLE 테이블명

 ● 테이블 생성 규칙

   -대소문자 구분하지 않는다.

   -테이블명 중복될 수 없음

   -같은 테이블 내에서 컬럼명은 중복될 수 없음

   -문자로 시작해야 하며, 예약어는 사용이 불가능함

 

[실습1]

CREATE TABLE 부서 (
부서ID NUMBER(6,0) NOT NULL
부서명 VACHAR2 30 NOT NULL
매니저ID NUMBER(6),
위치ID NUMBER(4)
);

 

3. 제약조건: 테이블에 입력가능한 데이터를 제약할 조건

 *연결개념:논리적 모델링

  • PRIMARY KEY(PK)
  • UNIQUE KEY
  • NOT NULL
  • CHECK
  • FOREIGN KEY(FK)

  1)PRIMARY KEY: 식별자를 물리적 모델링한 것 예)직원 ID

      ● NOT NULL+UNIQUE: NULL 불가, 중복 불가

          *식별자: 테이블에서 행을 식별할 수 있는 컬럼

 

  2)UNIQUE KEY: NULL가능, 중복 불가 예)이메일, 휴대폰 번호

  3)NOT NULL: NULL 불가

  4)CHECK: 지정한 데이터만 입력가능 예)성별에서 남/녀만 입력하도록 제한

  5)FOREIGN KEY: 테이블과 테이블이 연결되어있는 관계를 물리적 모델링한 것

      -다른 테이블의 기본키를 참조하는 속성의 집합

      -FOREIGN KEY를 사용하면 데이터의 무결성이 이루어진다. 

      예)부서테이블(부모 테이블)-직원 테이블(자식 테이블)

           부서테이블에 없는 컬럼을 자식 테이블에 가져올 수 없음

 

4. 무결성 제약조건

  *무결성: 데이터에 결함이 없는 상태. 즉 데이터가 정확하고 유효하게 유지된 상태

  *무결성 제약조건: 데이터베이스에 저장된 데이터의 무결성을 보장, 일관되게 유지

 

  ● 개체 무결성 제약조건: 기본키를 구성하는 속성은 NULL값을 가질 수 없음

  ● 참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 지닐 수 없음

              (NULL이거나 중복되는 값을 참조할 수 없음)

 

5. PK UK CHECK 문법

 

 

6. FK 문법: 참조하려는 컬럼이 UNIQUE하거나 PK이어야 참조가능함!

 

7. NOT NULL 변경: NULLABLE YES>NO로 변경

8. 제약조건 삭제

   ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

 

9. 제약조건 조회

     SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME =’테이블명’

 

10.제약조건 테이블 생성할 때 추가하기

[실습2]

CREATE TABLE 네이버회원(
    ID VARCHAR2(15),
    이름 VARCHAR2(12) NOT NULL,
    비밀번호 VARCHAR2(16),
    생년월일 DATE,
    성별 VARCHAR2(3)
    );

11. ALTER: 테이블 수정 시 사용하는 명령어

    1)테이블에 컬럼 추가: ADD

         ALTER TABLE 테이블명 ADD 컬럼명 자료형 [기본값] [NULL여부];

    2)테이블의 컬럼 삭제: DROP COLUMN

        ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

   3)테이블의 컬럼 속성 변경: MODIFY

        ALTER TABLE 테이블명 MODIFY 컬럼명 자료형 [기본값] [NULL여부];

   4)테이블의 컬럼 이름 변경: RENAME COLUMN

        ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 컬럼명;

 

12. DROP: 삭제할 때 사용하는 명령어

  1)DROP TABLE: 테이블 삭제

     외래키에 의해 참조되는 테이블은 DROP TABLE로 삭제 불가

      →CASCADE CONSTRAINT를 옵션으로 추가하면 외래키도 삭제할 수 있음

   2)DROP CONSTRAINT: 제약조건 삭제

       DROP TABLE 테이블명 CASCADE CONSTRAINT

 

   3)TRUNCATE TABLE: 테이블, 데이터 영구삭제

        ● DELETE, TRUNCATE, DROP의 차이점

           -DELETE: 테이블의 데이터 삭제 ->COMMIT 전까지 복구가능(ROLLBACK)

           -TRUNCATE: 테이블의 데이터 영구삭제 ->복구 불가능

           -DROP: 데이터, 테이블 영구삭제 ->복구 불가능

'데이터베이스' 카테고리의 다른 글

[DB]9.TCL&DCL  (0) 2023.06.08
[DB]8.DML&서브쿼리  (1) 2023.06.07
[DB]6. JOIN  (0) 2023.06.05
[DB]5. GROP BY&HAVING절  (0) 2023.06.01
[DB]4. Oracle 함수  (0) 2023.05.31