💕IT 공부하기/데이터베이스

SQL과 데이터 정의어와 무결성 제약조건이란?

수리즘 2022. 8. 24. 09:00
반응형

01. SQL개요

왜 데이터베이스 환경에서는 질의어를 필요로 할까요?

복잡한 질의를 자연어로 표현하면 질의가 정확하게 표현되었는지 입증하기 어렵기 때문에 좀 더

구조적인 질의어가 필요합니다.

이상적으로는 사용자가 데이터베이스 질의어를 사용하여 데이터베이스와 릴레이션의 구조를 정의하고,

릴레이션에 투플을 삽입, 삭제, 수정하고, 간단한 질의는 물론이고 복잡한 질의를 표현할 수 있어야 합니다.

 

표준 언어를 사용하면 직원에 대한 교육 비용이 절감되고, 생산성이 높아지며, 응용 프로그램의 이식성이 향상되어,

특정 DBMS에 대한 의존도가 줄어들고, DBMS 간의 통신이 원활해집니다.

 

버전 특징
SEQUEL    Structured English Query Language의 약어.
   System R 프로젝트에서 처음으로 제안됨
SQL    Structured Query Language의 약어.
   1983년에 IBM의 DB2, 1991년에 IBM SQL/DS에 사용됨
SQL-86    1986년에 미국 ANSI에서 표준으로 채택됨
   1987년에 ISO에서 표준으로 채택됨
SQL-89    무결성 제약조건 기능이 강화됨
SQL2(SQL-92)    새로운 데이터 정의어와 데이터 조작어 기능이 추가됨. 약 500페이지 분량
SQL3(SQL-99)    객체 지향과 순환, 멀티미디어 기능 등이 추가됨. 약 2000페이지 분량

SQL의 장점은 자연어에 가까운 구문을 사용하여 질의를 표현할 수 있다는 점입니다.

SQL은 비절차적 언어(선언적 언어)이므로 사용자는 자신이 원하는 데이터(what)만 명시하며,

원하는 것을 처리하는 방법(how)은 명시할 수 없습니다.

이 점이 SQL이 상대적으로 배우기 쉬운 언어가 되도록 하는 중요한 요인입니다.

 

SQL은 최종 사용자들이 쉽게 배워서 데이터베이스를 접근하는 데 사용되며, 관계 대수나 관계 해석보다

표현력이 우수합니다. SQL은 관계적으로 완전하고, 릴레이션을 정렬하며,

중복된 투플들을 허용할 수 있기 때문입니다.

02. SQL과 관계 대수의 비교

  SQL 관계 대수
언어 비절차적 언어
- 사용자는 자신이 무엇을 원하는지만
   질의에 명시하고, DBMS는 이 질의를
   효율적으로 처리하는 방법을 결정합니다.
절차적 언어
- 관계 대수식은 관계 연산자들이 수행되는
   순서를 명시합니다.
연산 - 데이터베이스 구조 및 제약조건을
   추가하거나 수정하는 명령(DDL)
- 투플을 검색, 삭제, 수정하는 명령(DML)
- 검색 연산만 제공

관계 DBMS는 사용자가 입력한 SQL문을 번역하여 사용자가 요구한 데이터를 찾는 데 필요한 모든 과정을 담당합니다.

따라서 다른 모델의 DBMS나 화일 시스템에 비해서 관계 DBMS에서는 프로그래밍 노력이 적게 듭니다.

 

► 대화식 SQL(interactive SQL)은 데이터베이스를 접근하는 최종 사용자들이 선호합니다.

► 내포된 SQL(embedded SQL)은 C, C++, 코볼 등의 고급 프로그래밍 언어(호스트 언어) 내에 SQL을 포함하여

사용하는 방식입니다. 응용 프로그래머가 전문적인 데이터베이스 응용 프로그램을 개발하기 위해서 사용합니다.

 

 

SQL의 Q가 영어의 Query(질의)를 뜻하지만 실제로 SQL은 질의 기능뿐만 아니라 데이터 정의, 데이터 수정,

데이터 제어 등 여러 가지 구성요소로 이루어집니다.

► 데이터 검색

데이터베이스로부터 데이터를 검색합니다. SQL의 SELECT문이 이에 해당합니다.

일반적인 관계 데이터베이스 문헌에서는 오라클과 달리 SELECT문을 데이터 조작어의 하나로 분류합니다.

► 데이터 조작어

데이터 조작어는 데이터 정의어로 정의된 데이터베이스 스키마 내의 데이터를 수정하는 데 사용합니다.

사용자는 데이터 조작어를 사용하여 데이터를 삽입하고, 삭제하고, 수정합니다.

∙ 릴레이션에 새로운 투플을 삽입(INSERT)

∙ 릴레이션에서 기존의 투플들을 삭제(DELETE)

∙ 릴레이션에서 기존의 투플들의 값을 수정(UPDATE)

► 데이터 정의어

사용자는 데이터 정의어를 사용하여 릴레이션을 생성하고, 릴레이션을 제거하고, 릴레이션에 새로운 애트리뷰트를

추가하고, 릴레이션에서 애트리뷰트를 제거하고, 뷰를 생성하고, 뷰를 제거하고, 인덱스를 생성하고,

인덱스를 작업하는 등의 작업을 수행합니다.

► 트랜잭션 제어

사용자는 트랜잭션의 시작, 철회, 완료 등을 명시하기 위해 트랜잭션 제어를 사용합니다.

SQL의 COMMIT, ROLLBACK, SAVEPOINT 등이 이에 해당합니다.

► 데이터 제어어

릴레이션에 대한 권한을 부여하거나 취소합니다. SQL의 GRANT와 REVOKE가 이에 해당합니다.

SQL문은 키워드(예약어)와 사용자가 정의하는 단어들로 이루어집니다.

키워드는 정확하게 입력해야 하며, 한 개의 키워드가 두 줄에 걸쳐서 입력될 수 없습니다.

사용자가 정의하는 단어들은 릴레이션, 애트리뷰트, 뷰 등 여러 가지 데이터베이스 객체들의

이름을 나타내기 위하여 사용됩니다. 키워드는 테이블이나 애트리뷰트의 이름으로 사용할 수 없습니다.

문자열 데이터를 제외하고 SQL 문의 대부분의 구성요소는 대문자와 소문자를 구분하지 않습니다.

SQL 문의 각 절(SELECT, FROM, WHERE 등)을 새 줄에 입력하면 SQL문을 좀 더 읽기 쉽습니다.

 

 

 

 

 

 

 

 

 

반응형