RangA 2023. 5. 27. 04:30

01. SQL 명령어

01. SQL(Structured Query Language)의 개념

1) SQL의 정의

  • 관계형 데이터 모델을 따르는 DBMS의 표준 데이터베이스 언어
  • 관계 대수를 기초로 만들어진 데이터베이스 관련 명령어 형식
  • 입력 릴레이션으로부터 원하는 출력 릴레이션을 얻어내는 명령어 형식

2) SQL의 특징

  • 영어 문장과 유사하여 초보자들도 쉽게 사용할 수 있음
  • 질의 기능 뿐만 아니라 데이터 정의 기능과 조작 기능을 갖추고 있음

3) 내장 SQL

  • 프로그래밍 언어인 COBOL, C, Visual Basic, ASP, PHP 등에 포함하여 사용하는 SQL
  • 응용 프로그램(혹은 호스트 프로그램) 내에 데이터를 정의하거나 질의하는 SQL 문장을 내포하여 프로그램이 실행될 때 함께 실행되도록 함
  • 내장 SQL을 포함한 응용 프로그램을 할 때 컴파일 시 선행 처리기에 의해 내장 SQL문은 분리되어 컴파일됨
  • 프로그래밍 언어에서 사용하는 변수와 데이터베이스 필드(속성)의 이름은 같아도 됨
  • 내장 SQL문의 호스트 변수의 데이터 타입은 이에 대응하는 데이터베이스 필드의 SQL 데이터 타입과 일치해야 함
  • 프로그래밍 언어에서 실행문이 기술되는 곳이면 어느 곳에서든 사용할 수 있음

4) SQL 명령어의 분류

  1. 데이터 정의어(DDL : Data Definition Language)
    • 데이터베이스를 정의하거나 그 정의를 수정할 목적으로 사용하는 언어
    • 데이터를 저장하고 있는 테이블 등의 구조를 생성하고 변경하기 위하여 사용되는 명령어들
    • 논리적, 물리적 데이터의 구조를 정의함
    • DBA(데이터베이스 관리자)가 사용하는 언어
    • 명령어가 수행되면 이전 상태로 복귀할 수 없으므로 신중히 사용해야 함
  2. 데이터 조작어(DML : Data Manipulation Language)
    • 데이터를 검색, 삽입, 삭제, 갱신할 수 있도록 지원하는 언어
    • 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공함
    • 일반 사용자나 응용 프로그래머가 사용하는 언어
    • 트랜잭션 제어어를 활용하여 실행 전 상태로 복귀 가능한 명령어
  3. 데이터 제어어(DCL : Data Control Language)
    • 여러 사용자가 데이터를 공유하여 병행 수행을 제어함
    • 무결성을 유지시키면서 내부적으로 여러 가지 규정이나 제약조건 등을 기술하기 위해 사용되는 언어
    • 사용자별로 데이터베이스에 접근할 수 있는 권한을 부여하거나 회수함
    • DBA가 사용하는 언어
    • 데이터 보안을 유지함



02. 데이터 정의어(DDL)

1) DDL 명령어 종류

  • 생성
    • CREATE : 데이터베이스 오브젝트를 생성함
  • 변경
    • ALTER : 데이터베이스 오브젝트를 변경함
  • 삭제
    • DROP : 데이터베이스 오브젝트를 삭제함
    • TRUNCATE : 데이터베이스 오브젝트의 내용을 삭제함

2) 테이블 생성(CREATE)

  1. 신규 생성
// [] : 생략 가능, {} : 반복 가능
CREATE TABLE 테이블명 (
    필드명 데이터타입 [DEFAULT 값] [NOT NULL]
  { 필드명 데이터타입 [DEFAULT 값] [NOT NULL] }
    [ PRIMARY KEY (필드 리스트)]
  { [ FOREIGN KEY (필드 리스트) REFERENCES 테이블명 [(필드명)]
    [ ON DELETE 옵션]
    [ ON UPDATE 옵션]}
    [ CHECK (조건식) | UNIQUE(필드명) ]);
  1. 다른 테이블 정보를 이용한 테이블 생성
CREATE TABLE 테이블명 AS SELECT 문;

3) 테이블 변경(ALTER)

  1. 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 [DEFAULT 값];
  1. 맨 뒤에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입;
  1. 맨 앞에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 FIRST;
  1. 지정 필드 뒤에 필드 추가
ALTER TABLE 테이블명 ADD 필드명 데이터타입 AFTER 앞 필드명;
  1. 필드 데이터 타입 변경
ALTER TABLE 테이블명 MODIFY 필드명 데이터타입 [DEFAULT 값];
  1. 필드 삭제
ALTER TABLE 테이블명 DROP 필드명;

4) 테이블의 삭제와 변경

  1. 테이블 삭제
DROP TABLE 테이블명 [CASCADE/RESTRICT];
  1. 테이블 내용 삭제
TRUNCATE TABLE 테이블명;
  1. 테이블명 변경
RENAME TABLE 이전_테이블명 TO 새로운_테이블명;
ALTER TABLE 이전_테이블명 RENAME 새로운_테이블명;

5) 삭제, 갱신의 제약조건(Constraint)

  1. 참조된 기본키의 값이 삭제될 경우
    • CASCADE : 참조한 테이블에 있는 외래키와 일치하는 모든 행이 삭제됨
    • RESTRICT : 참조한 테이블에 있는 외래키에 없는 것만 삭제 가능
    • NULLIFY : 참조한 테이블에 정의된 외래키와 일치하는 것을 NULL로 수정함
  2. 참조된 기본키의 값이 수정될 경우
    • CASCADE : 참조한 테이블에 있는 외래키와 일치하는 모든 행이 수정됨
    • RESTRICT : 참조한 테이블에 있는 외래키에 없는 것만 수정 가능
    • NULLIFY : 참조한 테이블에 정의된 외래키와 일치하는 것을 NULL로 수정함(해당 컬럼이 NULL을 허용할 경우만 수정 가능)

6) 제약조건 유형

  1. PRIMARY KEY(기본키)
    • 테이블의 기본키를 정의함
    • 기본으로 NOT NULL, UNIQUE 제약이 포함
  2. FOREIGN KEY(외래키)
    • 외래키를 정의함
    • 참조 대상을 테이블명(필드명)으로 명시해야 함
    • 참조 무결성 위배 상황 발생 시 처리 방법으로 옵션 지정이 가능함
    • 옵션 : NO ACTION, SET DEFAULT, SET NULL, CASCADE
  3. UNIQUE(유일키)
    • 테이블 내에서 필드는 유일한 값을 가져야 함
    • 테이블 내에서 동일한 값을 가져서는 안 되는 항목을 지정함
  4. NOT NULL
    • 테이블 내에서 관련 필드의 값은 NULL일 수 없음
    • 필수 입력 항목에 대해 제약조건으로 설정함
  5. CHECK
    • 개발자가 정의하는 제약조건
    • 상황에 따라 다양한 조건 설정이 가능함

7) 제약조건 변경 SQL 명령문

  1. 제약조건 추가
ALTER TABLE 테이블명
    ADD [CONSTRAINT 제약조건명] 제약조건(필드명);
  1. 제약조건 삭제
ALTER TABLE 테이블명 CONSTRAINT 지약조건명|테이블명
    PRIMARY KEY|FOREIGN KEY(필드명)|UNIQUE(필드명);
  1. 제약조건 비활성화
ALTER TABLE 테이블명
    DISABLE CONSTRAINT 제약조건명;
  1. 제약조건 활성화
ALTER TABLE 테이블명
    ENABLE CONSTRAINT 제약조건명;