SQLD 시험 공부 (1)

HanJaeHoon·2024년 8월 1일

SQL 문장들의 종류


<데이터 조작어 DML>

데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어

  • SELECT

데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들 새로운 값을 넣거나 값을 삭제 or 수정할때 사용한다.

  • INSERT
  • DELETE
  • UPDATE

<데이터 정의어 DDL>

테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 테이블의 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들이다.

  • CREATE
  • ALTER
  • DROP
  • RENAME

<데이터 제어어 DCL>

데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어

  • GRANT
  • REVOKE

<트랜잭션 제어어 TCL>

논리적인 작업의 단위를 물어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어

  • COMMIT
  • ROLLBACK

DDL 작성


생성 (CREATE)

  • CREATE TABLE은 테이블을 생성하는 명령
  • CREATE TABLE에서 하나의 컬럼(속성)에 대해 '컬럼명 데이터 타입 제약조건'으로 구성

CREATE TABLE 테이블명
{
컬럼명 데이터 타입 [제약조건]
};

CREATE TABLE의 제약 조건

PRIMARY KEY

  • 테이블의 기본 키를 정의
  • 유일하게 테이블의 각 행을 식별

FOREIGN KEY

  • 외래 키를 정의
  • 참조 대상을 테이블(컬럼명)로 명시
  • 열과 참조된 테이블의 열 사이의 외래키 관계를 적용하고 설정

UNIQUE

  • 테이블 내에서 얻은 유일한 값을 갖도록 하는 제약 조건
  • NULL 입력이 가능하다.

NOT NULL

  • 해당 컬럼은 NULL 값을 포함하지 않도록 하는 제약조건

CHECK

  • 개발자가 정의하는 제약조건
  • 참(TRUE)이어야 하는 조건을 지정

DEFAULT

  • 데이터를 INSERT를 할 때 해당 컬럼의 값을 넣지 않는 경우 기본값으로 설정해주는 제약조건

CREATE VIEW

  • CREATE VIEW는 뷰를 생성하는 명령

    CREATE VIEW 뷰이름 AS 조회쿼리;

  • VIEW 테이블의 SELECT문에는 UNION이나 ORDER BY 절을 사용할 수 없음
  • 컬럼명을 기술하지 않으면 SELECT 문의 컬럼명이 자동으로 사용

CREATE OR REPLACE VIEW 기본문법

  • CREATE OR REPLACE VIEW는 뷰를 교체하는 명령
  • OR REPLACE라는 키워드를 추가하는 것을 제외 하고는 CREATE VIEW와 사용 방법이 동일

    CREATE OR REPLACE VIEW 뷰이름 AS 조회쿼리;

CREATE INDEX

  • CREATE INDEX는 인덱스를 생성하는 명령
  • UNIQUE는 생략 가능
  • 인덱스 걸린 컬럼에 중복 값을 허용하지 않음
  • 복수 컬럼을 인덱스로 걸 수 있음

    CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...};

수정 (ALTER)

  • ALTER TABLE은 테이블을 수정하는 명령

ALTER TABLE 컬럼 추가

  • 테이블에 필요한 컬럼을 추가하는 문법
  • CREATE TABLE의 컬럼에 사용되는 제약조건인 PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL, CHECK, DEFAULT를 ALTER 테이블에서도 사용 가능

ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 [제약조건];

ALTER TABLE 컬럼 수정

  • 테이블에 필요한 컬럼을 수정하는 문법
  • 테이블 생성을 위한 CREATE 문에 제약조건을 명시 후에 ALTER를 통해 테이블 제약조건의 변경이 가능

ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입 [제약조건];

ALTER TABLE 컬럼 수정

  • 테이블에 불필요한 컬럼을 삭제하는 문법

ALTER TABLE 테이블명 DROP 컬럼명;

ALTER INDEX

ALTER [UNIQUE] INDEX 인덱스명 ON 테이블명(컬럼명1, 컬럼명2, ...);

삭제(DROP, TRUNCATE)

DROP TABLE

  • DROP TABLE은 테이블을 삭제하는 명령

    DROP TABLE 테이블명 [CASCADE | RESTRICT];

  • DROP TABLE 명령어의 옵션에는 CASCASE와 RESTRICT가 있음

  • CASCADE는 참조하는 테이블까지 연쇄적으로 제거하는 옵션

  • RESTRICT는 다른 테이블이 삭제할 테이블을 참조 중이면 제거하지 않는 옵션

  • CASCADE와 RESTRICT의 경우 외래 키(FOREIGN KEY)가 걸려 있을 때 해당

TRUNCATE TABLE

  • TRUNCATE TABLE은 테이블 내의 데이터들을 삭제하는 명령
  • TRUNCATE 후 자동으로 커밋을 한다. TRUNCATE의 삭제는 롤백 불가능

TRUNCATE TABLE 테이블명;

DROP VIEW

DROP VIEW 뷰이름;

DROP INDEX

  • DROP INDEX는 인덱스를 삭제하는 명령어

    DROP INDEX 인덱스명;

RENAME TABLE

  • RENAME TABLE은 테이블명을 변경

    RENAME 변경할_테이블명 TO 새로운테이블명;

DML 관련 문제


  • 비절차적 데이터 조작어(DML)는 사용자가 무슨 데이터를 원하는지는 알려주지만, 어떻게 그것을 접근해야 되는지를 명세하지는 않는다.

NULL 관련 문제


NULL 에 대한 설명

  • 모르는 값을 의미한다.

  • 값의 부재를 의미한다.

  • NULL 과의 모든 비교(IS NULL 제외)는 알 수 없음(Unknown)을 반환한다.

profile
게임 개발자

0개의 댓글