6. DDL

    • DDL은 같은 명령을 사용. CREATE / DROP / ALTER

    • CREATE : 데이터베이스 객체 생성

      • (대표적으로) 테이블을 생성한다. 스키마 내부에서 생성한다.
      • 스키마내에서 이름이 중복된 객체가 존재하면 안 된다.
        CREATE TABLE 테이블명 (
          열이름 자료형 [DEFAULT 값 | NOT NULLL | UNIQUE | CHECK 체크조건],
          열 정의2,
          열 정의3, 
          ...,
          [PRIMARY KEY (열1, ...)]
          [FOREIGN KEY 속성이름 REFERENCES 테이블이름(속성이름)]
              [ON DELETE reference_option] 
              [ON UPDATE reference_option]
        );
    • DROP : 데이터베이스 객체 삭제

      • 데이터베이스 객체를 삭제한다. 객체의 스키마와 내용을 같이 삭제한다.
      • 내용만 삭제하고 싶을 경우, DELETE문이나, TRUNCATE TABLE을 사용한다.
        • TRUNCATER TABLE은 테이블의 행을 전부 삭제한다. (해당 목적으로 이용 시, DELETE에 비해 빠르다.)
          DROP TABLE sample_table;
    • ALTER : 데이터베이스 객체 수정

      • ALTER를 이용하면, 테이블에 열을 추가하거나 속성을 바꾸고 삭제할 수 있다.
      • 또한, 기본키 속성을 포함한 각종 제약조건을 설정/해제 할 수 있다.
        ALTER TABLE 
        (ADD | MODIFY | DROP) sample_table
        [열정의] or [제약조건]
    • 데이터 타입의 종류

      • INT, INTEGER : 정수형
      • NUMERIC, DECIMAL : 실수형
      • CHAR : CHAR (최대길이) : 문자열형, 남은 공간을 공백문자로 채운다.
      • VARCHAR : VARCHAR (최대길이) : 문자열형, 입력된 문자열만큼만 공간을 차지한다.
        • 주의 : 공백문자로 인해 VARCHAR와 CHAR의 동등 비교 시 값이 같아 보이더라도 실패할 수 있다.
      • DATE : 날짜형, 연-월-일 형식으로 표기
      • TIME : 시간형, 시:분:초 형식으로 표기
    • PRIMARY KEY : 해당하는 열을 기본키로 지정. 복수의 열을 하나의 기본키로 지정 가능.

    • UNIQUE : 해당하는 열을 대체키로 지정. 대체키는 유일성을 가지지만, NULL값을 허용한다.

        CREATE TABLE sample_table (
            id INTERGER UNIQUE,
            name VARCHAR(20),
            address VARCHAR(30),
            PRIMARY KEY (id)
        )
    • DEFAULT : 속성의 기본값을 지정.

    • NOT NULL/NULL : NOT NULL을 설정하면, 속성이 NULL값을 허용하지 않음. 기본값은 NULL

    • CHECK : 값에 대한 조건을 부여. ex) 해당 속성이 항상 0이상 1만이하 => CHECK (속성명>=0 and 속성명<=10000)

    • FOREIGN KEY(외래키) : 다른(+같은) 테이블의 (대부분 기본키) 속성을 참조하는 속성

      • 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 뒤에 명시

      • 이는 참조 무결성 제약조건 유지를 위해 참조되는 테이블에서 투플 삭제 시, 처리 방법을 지정하는 옵션이다.

      • DELETE 관련 옵션

        1. ON DELETE RESTRICT : 부모 테이블의 투플을 삭제하지 못하게 한다. (원래 MySQL 문법)
        2. ON DELETE NO ACTION : 부모 테이블의 투플을 삭제하지 못하게 한다. (ASNI 표준)
        3. ON DELETE CASCADE : 부모 테이블에서 투플 삭제 시, 연관된 자식 테이블의 투플도 삭제.
        4. ON DELETE SET NULL : 부모 테이블에서 투플 삭제 시, 관련된 투플의 외래키 값을 NULL로 변경
        5. ON DELETE SET DEFAULT : 부모 테이블에서 투플 삭제 시, 관련된 투플의 외래키 값을 DEFAULT 값으로 변경
      • UPDATE 관련 옵션

        1. ON UPDATE RESTRICT : 부모 테이블의 투플의 업데이트를 못하게 한다.
        2. ON UPDATE NO ACTION : 부모 테이블의 투플의 업데이트를 못하게 한다.
        3. ON UPDATE CASCADE : 관련 투플의 외래키 값도 함께 변경
        4. ON UPDATE SET NULL : 관련된 투플의 외래키 값을 NULL로 변경
        5. ON UPDATE SET DEFAULT : 관련된 투플의 외래키 값을 미리 지정한 DEFAULT 값으로 변경
        CREATE TABLE sample (
          bookid INTEGER,
          sample_table_id INTEGER,
          FOREIGN KEY (sample_table_id)
          REFERENCE sample_table (id) ON DELETE CASCADE
        );

    DML

    • INSERT

      • 테이블의 행을 추가한다.
      • 'INTO' 이후 소괄호에, 입력할 속성을 선택하고, 실제 값을 'VALUES' 절에 작성한다.
      • 입력할 속성을 명시하지 않을 시에는, 테이블 스키마에 속성순대로 입력된다.
      • 선택하지 않은 속성은 DEFAULT 값으로 입력된다.
        INSERT INTO (열1, 열2, ...) 
        sample_table 
        VALUES (값1, 값2, ...)
    • DELETE

      • 테이블의 행을 삭제한다.
      • 조건식에 해당하는 레코드를 삭제한다.
      • WHERE로 범위를 지정하지 않으면, 테이블의 전체 레코드를 삭제한다.
        DELETE FROM sample_table
        WHERE 조건식
    • UPDATE

      • 레코드의 내용을 수정한다.
      • 레코드 셀의 내용을 수정할 수 있다. WHERE로 범위를 지정하지 않으면, 테이블 내 모든 레코드에 대해 적용된다.
        UPDATE sample_table
        SET 열1=값1, 열2=값2, ...
        WHERE 조건식

    '강의요약 > 데이터베이스' 카테고리의 다른 글

    [DB] 5. JOIN  (0) 2023.04.11
    [DB] 4. SQL  (0) 2023.04.04
    [DB] 3. 관계대수  (0) 2023.03.20
    [DB] 2.2 키(key)  (0) 2023.03.20

    댓글