CS/데이터베이스

데이터베이스 : SQL

JWonK 2023. 1. 21. 17:42
728x90
반응형

▶ SQL의 소개


SQL(Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어로 많이 사용되는 언어다.

SQL은 사용자가 처리를 원하는 데이터가 무엇인지만 제시히고 데이터를 어떻게 처리해야 하는지를 언급할 필요가 없어 비절차적 데이터 언어의 특징을 띤다고 할 수 있다.

SQL은 기능에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나눈다.

 

  • 데이터 정의어(DDL) : 테이블을 생성하고 변경/삭제하는 기능을 제공한다.
  • 데이터 조작어(DML) : 테이블에 새 데이터를 삽입하거나, 테이블에 저장된 데이터를 수정/삭제/검색하는 기능을 제공한다.
  • 데이터 제어어(DCL) : 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능을 하는 언어다. 데이터베이스 관리자가 주로 사용한다.

 

 

 

 

▶ SQL을 이용한 데이터 정의


◎ SQL의 데이터 정의 기능

SQL의 데이터 정의 기능은 테이블 생성, 생성된 테이블 구조의 변경, 테이블 삭제로 분류할 수 있다.

  • 테이블 생성 : CREATE TABLE
  • 테이블 변경 : ALTER TABLE
  • 테이블 삭제 : DROP TABLE

 

 

  테이블의 생성

테이블을 생성하는 SQL 명령어는 CREATE TABLE이다. CREATE TABLE 문은 생성할 테이블을 구성하는 속성들의 이름과 데이터 타입 및 제약 사항에 대한 정의, 기본키/대체키/외래키의 정의/데이터 무결성을 위한 제약조건의 정의 등을 포함한다.

 

CREATE TABLE 테이블_이름 (
    1) 속성_이름  데이터_타입  [NOT NULL]  [DEFAULT 기본_값]
    2) [PRIMARY KEY (속성_리스트)]
    3) [UNIQUE (속성_리스트)]
    4) [FOREIGN KEY (속성_리스트) REFERENCES 테이블_이름(속성_리스트)]
       [ON DELETE 옵션] [ON UPDATE 옵션]
    5) [CONSTRAINT 이름]  [CHECK(조건)]
);

 

다음 CREATE TABLE 문의 기본 형식에서 ①은 테이블을 구성하는 각 속성의 이름과 데이터타입, 기본적인 제약 사항을 정의한다. ②는 기본키로 테이블에 하나만 존재할 수 있다. ③은 대체키로 테이블에 여러 개 존재할 수 있다. ④는 외래키로 테이블에 여러 개 존재할 수 있다. ⑤는 데이터 무결성을 위한 제약조건으로 테이블에 여러 개 존재할 수 있다. 그리고 [ ]로 표시한 항목은 생략이 가능하다. 모든 SQL 문은 세미콜론(;)으로 문장 끝을 표시한다.

 

→ 테이블의 여러 키 중 기본키만 하나 존재할 수 있다. 나머지 키들은 여러 개 존재할 수 있다.

→ 기본키를 수성하는 모든 속성은 널 값을 가질 수 없도록 반드시 NOT NULL 키워드를 표시한다. 이것은 기본키를 구성하는 속성은 널 값을 가질 수 없다는 개체 무결성 제약조건을 실제로 구현하기 위한 방법이다.

→ DEFAULT 키워드로 기본 값을 지정할 때 숫자 데이터는 그대로 표현하고, 문자열이나 날짜 데이터는 작은따옴표로 묶어주어야 한다. 작은따옴표로 묶인 문자열은 대소문자를 구분한다.

→ 대체키는 UNIQUE 키워드를 사용해 지정한다. 대체키는 기본키와 같이 각 투플을 유일하게 식별하는 특성이 있다. 대체키로 지정된 속성의 값은 테이블에서 중복되면 안 되고 유일성을 가져야 한다. 하지만 기본키로 지정된 속성과 달리 널 값을 가질 수 있다. 대체키는 한 테이블에서 여러 개를 지정할 수 있다.

→ 외래키는 FOREIGN KEY 키워드를 사용해 지정한다. 외래키를 지정할 때는 출처를 분명히 밝혀야 한다. 즉, 외래키가 어떤 테이블의 무슨 속성을 참조하는지 REFERENCES 키워드 다음에 명확히 제시해야한다. 이는 참조 무결성 제약조건을 유지하기 위함이다. 이렇게 하면 참조되는 테이블에서 투플을 함부로 삭제하거나 변경하지 못한다. 그리고 참조되는 테이블에서 투플을 삭제하거나 변경할 때 처리하는 방법을 다양하게 선택할 수 있다.

 

 

테이블의 투플을 삭제하려고 할 때 다음 네 가지 중 한 가지 방법으로 처리

  • ON DELETE NO ACTION : 투플을 삭제하지 못하게 한다. [기본값]
  • ON DELETE CASCADE : 관련 투플을 함께 삭제한다.
  • ON DELETE SET NULL : 관련 투플의 외래키 값을 NULL로 변경한다.
  • ON DELETE SET DEFAULT : 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경한다.

 

 

테이블의 투플을 변경하려고 할 때 다음 네 가지 중 한 가지 방법으로 처리

  • ON UPDATE NO ACTION : 투플을 변경하지 못하도록 한다.
  • ON UPDATE CASCADE: 관련 투플에서 외래키 값을 함께 변경한다.
  • ON UPDATE SET NULL : 관련 투플의 외래키 값을 NULL로 변경
  • ON UPDATE SET DEFAULT : 관련 투플의 외래키 값을 미리 지정한 기본 값으로 변경

 

 

 

 

 

▶ 데이터 무결성 제약조건의 정의


CREATE TABLE 문으로 테이블을 정의할 때 CHECK 키워드를 사용해 특정 속성에 대한 제약조건을 지정할 수 있다. 그러면 테이블에는 CHECK 키워드로 지정한 제약조건을 만족하는 투플만 존재하게 된다. 테이블에 새로운 투플을 삽입하거나 기존 투플을 수정할 때도 이 제약조건을 반드시 지켜야 한다. 이는 테이블에서 항상 정확하고 유효한 데이터를 유지하기 위해 데이터 무결성을 위한 제약조건을 표현하는 방법이다. 

 

ex) CHECK(재고량 >= 0 AND 재고량 <= 10000)

 

 

CHECK 키워드를 사용해 지정한 제약조건에 CONSTRAINT 키웓와 함께 고유의 이름을 부여할 수도 있다. 제약조건을 여러 개 지정할 때 고유의 이름을 부여하면 테이블이 생성된 이후에 제약조건을 수정하거나 제거할 때 식별하기가 쉽다.

 

ex) CONSTRAINT CHK_CPY CHECK(제조업체 = '한빛제과')

728x90
반응형