구조적 쿼리 언어란?
구조적 쿼리 언어 (SQL)은 관계형 데이터베이스 또는 데이터 스트림 관리 시스템에서 일반적으로 사용되는 프로그래밍 언어다.
1970년대 초 IBM에서 개발했으며 현재 미국 국가표준협회 (ANSI)와 국제 표준화 기구 (ISO)에서 인정하는 공식 표준이다.
테코피디아가 설명하는 SQL
구조적 쿼리 언어는 사용 편의성과 데이터를 쿼리, 조작, 집계하고 다양한 기타 기능을 수행하여 많은 양의 구조화된 데이터를 사용 가능한 정보로 전환하는 매우 효과적인 방식으로 수년 동안 데이터베이스 사용자들에게 꾸준히 인기를 얻고 있다.
이러한 이유로 MySQL, Oracle, Sybase, SQL Server, Postgres 등과 같은 수많은 상용 데이터베이스 제품에 통합되어 있다. 실제로 MongoDB, DynamoBD와 같은 많은 비관계형 데이터베이스는 SQL 프로그래밍이 없으므로 NoSQL 제품이라고 불린다.
구조적 퀴리 언어 반복에 따라 주요 연산에 다른 구문을 사용할 수 있지만, 일반적으로 선택, 삽입, 업데이트, 생성 같은 기본 명령은 모든 구조적 쿼리 언어 출시에 공통으로 사용된다. 따라서 구조적 쿼리 언어에 대한 기본 지식이 있는 사람이라면 다양한 환경에서 다양한 작업을 매우 쉽게 수행할 수 있다.
SQL 명령의 네 가지 범주
데이터 정의 언어 (DDL)
여기에는 CREATE (테이블, 뷰, 개체 등), ALTER 및 DROP (삭제) 구문이 포함된다.
데이터 조작 언어 (DML)
테이블 내 레코드의 SELECT, INSERT, UPDATE, DELETE 구문이 포함된다.
데이터 제어 언어 (DCL)
사용자 권한 부여 (GRANT) 및/또는 취소 (REVOKE) 등 구문이 포함된다.
데이터베이스 인덱싱
CREATE INDEX 및 DROP INDEX 문은 테이블에서 인덱스를 생성하고 삭제하는 데 사용된다.
검색 및 기타 기능 간소화
또한, 구조적 쿼리 언어를 사용하면 테이블이나 열에 제약 조건을 작성하여 포함되는 데이터 유형을 제한할 수 있다. 이를 통해 데이터 정확성과 관련성을 보장하고 검색 및 기타 기능을 간소화하여 전반적인 데이터베이스 관리를 단순화할 수 있다.
구조적 쿼리 언어 제약 조건의 예는 다음과 같다:
NOT NULL
열이 null 값을 갖지 못하도록 한다.
UNIQUE
모든 값이 서로 다른지 확인한다.
또한, 데이터베이스 관리자 (DBA)는 구조적 쿼리 언어를 사용하여 중복 행 생성을 방지하고, 유효한 데이터만 입력하도록 허용하고, 여러 레코드에 연결된 데이터의 삭제를 금지하는 등의 기능을 통해 데이터베이스에 무결성을 구축할 수 있다.
그러나 동시에 구조적 쿼리 언어는 데이터 종속성을 간소화하고 일반적으로 데이터베이스의 크기와 범위를 줄여 운영 효율성과 리소스 효율을 높이기 위해 설계된 여러 정규화 도구를 제공한다.
물론, 구조적 쿼리 언어의 모든 데이터베이스 애플리케이션에 제일 나은 선택은 아니지만, 그렇지 않다면 다른 대안이 없었을 것이다. 우선, 구조적 쿼리 언어는 1990년대 이후까지 데이터 규모 확장에 효과적이었지만, 언어 자체가 아니라 구현 및 관계형 데이터베이스 관리 시스템은 세기가 바뀌면서 하이퍼스케일 수준에서 흔들리기 시작했다.
또한, 일부 사용자는 대규모 데이터베이스를 더 작고 관리하기 쉬운 데이터베이스로 분할하는 기능을 방해하는 샤딩 제한에 대해 불만을 제기하기도 한다.
이러한 단점 때문에 고유의 원자성, 일관성, 격리성, 지속성 (ACID)을 희생하지 않으면서 기존 구조적 쿼리 언어의 확장성을 향상시키려는 NoSQL과 보다 최근의 NewSQL이 탄생하게 된 것이다.