본문 바로가기

Programming/DataBase System

Chapter3 -SQL 질의 언어의 개요

많은 수의 데이터베이스 질의 언어들이 상업적으로나 혹은 실험적으로 사용되고 있다.

    SQL 언어를 "질의 언어"라고 하지만, 단지 데이터베이스를 질의하는 그 이상의 훨씬 많은 것을 할 수 있다. SQL로 데이터의 구조를 정의하고, 데이터베이스의 데이터를 수정하고, 보안 제약조건을 며시할 수 있다.

    이장에서 SQL에 대한 완벽한 사용자 가이드를 제공하는 것은 아니다. 대신 SQL의 기본적인 구성과 개념에 대해 설명할 것이다. 이장에서 볼 수 있는 SQL 예제들은 세세한 부분까지 자세히 기술한 것도 있고, 전제 SQL문의 일부분만을 기술한 것도 있다.



  • SQL 질의 언어의 개요

IBM은 1970년대 초반 System R 프로젝트의 일부분으로 초기에 Sequal 이라고 불리는 SQL의 초기 버전을 개발하였다. 그 후 Squal  언어는 계속 발전되다가, SQL(Structured Query Language)로 그 이름이 바뀌게 되었다. 요즘의 많은 제품들은 SQL 언어를 지원한다. SQL 은 표준 관계형 데이터베이스 언어로 확실히 자리 매김하였다.
    1986년에 ANSI(American National Standard Institude)ISO(International Organization for Standardization)SQL-86이라고 불리는 SQL표준을 출간 하였다. ANSI는 1989년에 확장된 SQL 표준인 SQL-89를 발행하였다. 그 다음 표준은 SQL-92 표준이었으며 그 뒤로 SQL:1999, SQL:2003, SQL:2006 등의 표준이 있어왔다. 가장 최근의 표준은 SQL:2008이다. 참고문헌에서 이들 표준에 대해 찾아 볼 수 있다. 
    SQL 언어는 다음과 같은 몇 가지 부분으로 이루어져 있다.


  • 데이터 정의 언어(Data-Definition Language : DDL). SQL DDL은 릴레이션 스키마를 정의하고, 릴레이션을 삭제하고, 릴레이션 스키마를 수정하는 명령어를 제공한다.
  • 데이터 조작 언어(Data-manipulation language : DML). SQL DML 은 데이터베이스에 정보를 질의하고 투플을 삽입, 삭제, 수정하는 기능을 제공한다.
  • 무결성(Integrity). SQL DDL은 데이터베이스에 저장될 데이터가 만족해야 하는 무결성 제약조건들을 명시하는 명령어를 포함한다. 이런 무결성 제약조건을 위반하는 갱신은 허용하지 않는다.
  • 뷰 정의(View definition). SQL DDL 은 뷰를 정의할 수 있는 명령어를 포함한다.
  • 트랜잭션 제어(Transaction constrol). SQL 은 트랜잭션의 시작과 끝을 명시하는 명령어를 포함한다.
  • 내장 SQL(Embedded SQL) 동적 SQL(Dynamic SQL). 내장과 동적 SQL은 C, C++, 자바와 같은 범용 프로그래밍 언어에서 내장되어 사용될 수 있다.
  • 인증(Authorization). SQL DDL 은 릴레이션과 뷰에 액세스하는 권한을 명시하는 명령어를 포함한다.



    이 장에서 SQL 의 DML과 기본적인 DDL에 대해 다룬다. 여기서 설명하는 특징들은 SQL-92부터 SQL표준으로 되어 왔다.

대부분의 SQL 구현이 여기서 설명하는 표준 특징들을 지원하기는 하지만, 구현들 간에는 차이가 존재함을 알아야 한다. 대부분의 구현들은 몇몇 비표준 특징을 지원하지만 반면에 몇몇 더욱 진보된 특징들을 지원하지 않기도 한다. 여기서 소개되었지만 사용 중인 데이터베이스 시스템에서 동작하지 않는 몇 가지 언어 특징을 발견한다면, 그 데이터베이스 시스템의 사용 설명서를 찾아서 데이터베이스 시스템이 어떤 특징들을 지원하는지를 알아보아야 한다. 


'Programming > DataBase System' 카테고리의 다른 글

Chapter4 - 조인식  (0) 2019.04.30
Chapter3 - 데이터 정의  (0) 2019.04.14
Chapter2 - 요약  (0) 2019.04.14
Chapter2 - 관계 연산  (0) 2019.04.14
Chapter2 - 관계형 질의어  (0) 2019.04.14