위키백과의 정의에 따르면, 구조적 쿼리 언어(Structured Query Language)는 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
대부분의 프로그래밍을 모르는 사람들은 위 정의를 읽더라도 정확히 무슨 말을 하는지 모를 수 있다. 그러니, 위 정의에서 모를만한 단어들에 대한 설명으로부터 시작하려고 한다.
혹여 아는 단어가 있을 수 있으니, 그렇다면 자신에게 들어두길 잘했다고 칭찬부터 해주자.
웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청에 의한 처리를 의미한다. 정확히 아귀가 들어맞는 의미는 아니지만 일종의 정보를 요청하기 위한 주문서라고 보면 된다.
구글에서 제공하는 빅쿼리의 쿼리가 이 쿼리이다.
데이터가 하나 이상의 열과 행의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 정보 모음이다.
이를 작성자의 주관적인 기준으로 정리하면 다음 문장과 같다.
'데이터를 테이블에 저장하고, 서로 다른 데이터 구조의 관련성을 사전 정의한 관계'
아래 키에 대한 설명 중 튜플에 대한 언급이 있기 때문에 먼저 기술한다. 관계(릴레이션)를 구성하는 행, 속성의 모임을 의미한다. 프로그래밍 언어에서는 두 가지의 데이터를 가지는 구조체를 의미한다.
항상 이름을 가진 리스트로 데이터가 저장되어 있는 공간을 의미한다. 테이블의 예시는 아래와 같다.
| 이름 | 점 | 선 | 면 |
|---|---|---|---|
| 정육면체 | 8 | 12 | 6 |
| 직육면체 | 8 | 12 | 6 |
| 정사면체 | 4 | 6 | 4 |
키 (Key)
모든 테이블은 키라는 것을 가진다. 이는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 속성이다.
종류에 따라 후보키, 기본키, 대체키, 슈퍼키 이렇게 네 가지로 구분할 수 있다.
후보 키 (Candidate Key)
유일하게 식별할 수 있는 속성들의 부분집합으로 기본키가 될 수 있는 카테고리를 모두 의미한다. 위 표를 기준으로 이름, 점, 선, 면이 모두 이에 해당한다.기본 키 (Primary Key)
후보 키 중에서 선택된 메인키로 유일한 값을 가진다.
위 표의 후보키 중에서는 이름 카테고리가 기본 키로서 의미가 있어보인다.대체 키 (Alternate Key)
후보 키 중에서 기본 키로 선택된 키를 제외한 나머지를 이른다.
이름 키가 기본 키로 선택되었다면 점, 선, 면이 이에 해당한다.슈퍼 키 (Super Key)
속성(종목, 카테고리)의 집합으로 구성된 키를 의미한다.
쉽게 얘기하면 후보 키의 조합으로 이루어진 키를 얘기한다. 후보 키 하나 이상으로 구성되어 있다.
테이블에서 행은 데이터의 세트(구조체, 튜플)를 얘기하고, 열은 요소(종목, 카테고리)를 의미한다.
위에서 행은 데이터의 세트라고 기술했다. 또한, 괄호 안에 구조체라는 단어를 명시했다. 프로그래밍 언어에서 구조체는 '기본 타입을 이용하여 새롭게 정의할 수 있는 사용자 정의 타입' 이지만, 일반적으로 우리가 알고 있는 구조체(구조물)의 형태를 빌려 설명하고자 한다.
위에 보이는 것은 정육면체의 정보를 한 눈에 볼 수 있도록 그림으로 나타낸 것이다. 정육면체는 초등학교 5학년 때 처음 배우는 것으로 알고 있는데, 배운지 오래되고 사용한지도 오래되었을 수 있으니 정의부터 살펴 보려고 한다. 정육면체의 정의는 다음과 같다.
'한 개의 꼭지점에 3개의 면이 만나고, 여섯개의 정사각형 면으로 이루어진 3차원 정다면체'
이 중에서 면에 대한 설명을 좀 더 자세히 풀어보자면 다음과 같다.(아래 적힌 문장이 정의는 아니며, 작성자가 이해한 대로 임의로 작성한 것이다.)
'길이를 가진 선의 높이 만큼의 연속'
위에 적힌 두 가지의 설명 중에서 점(꼭지점), 선, 면 이 세가지가 정육면체를 이루는 요소라고 할 수 있다. (물론 면이 선이나 점을, 선이 점을 포함하고 있지만 여기서는 중요하지 않다.)
정육면체를 요소라는 측면에서 다시 해석한다면 점을 8개 가진 도형, 선을 12개 가진 도형, 면을 6개 가진 도형이라고 할 수 있다. 이를 이용하여 정육면체라는 다면체를 데이터화 한다면 아래와 같이 정리할 수 있다.
| 이름 | 점 | 선 | 면 | |
|---|---|---|---|---|
| 행 | 정육면체 | 8 | 12 | 6 |
| 열1 | 열2 | 열3 | 열4 |
위에서 열은 속성, 행은 개체라고 하며 이러한 테이블간의 관계는 관계라고 한다. 이러한 것을 통 틀어 스키마라고 한다.
스키마는 데이터 베이스의 구조, 제약조건에 관하여 전반적인 명세를 기술한 것으로 위에서 말한 것처럼 속성, 개체, 관계를 포함한다. 아래 두 문장은 인터넷에서 검색하면 볼 수 있는 스키마의 정의이다.(위키백과를 참고하였다.)
1. 지식을 표상하는 구조
2. 자료의 구조, 자료의 표현 방법, 자료간의 관계를 형식 언어로 정의한 구조
스키마의 종류는 외부 스키마, 개념 스키마, 내부 스키마로 총 세가지이다. 하지만 여기서는 더 설명하지 않는다. 필요하면 더 검색 해보기 바란다.(쉬운 설명을 원할 경우, 추가하도록 하겠다.)
위에서 쉽게 설명한 단어들을 중심으로 SQL을 정의하자면 아래 문장과 같이 쓸 수 있다.
"SQL은 이름을 가진 리스트에 데이터를 저장하고 사전 정의된 관계로서 데이터를 구성하는 관리 시스템 내에서 데이터 관리를 목적으로 하는 특수한 프로그래밍 언어이다."
위 내용을 필기로 정리하면 다음과 같다

위 글을 읽으면서 이해가 가지 않거나 더 많은 설명이 필요한 용어에 대하여 댓글을 작성하면 추가로 작성하도록 하겠다. 또한, 의미나 정의가 틀린 것을 알려주면 기꺼이 배우고 수정하도록 하겠다.