결과를 중심으로 표현하는 언어
일반적인 SQL 질의는 어떤 순서로 파일의 바이트를 읽을지보다 어떤 조건의 어떤 데이터를 원하는지 표현한다. DBMS는 이를 바탕으로 사용할 인덱스와 결합 순서 등의 실행 계획을 선택한다.
SELECT로 열을 선택하고 WHERE로 조건을 지정할 수 있다. GROUP BY는 자료를 묶어 집계하는 데 쓰이며, ORDER BY는 결과를 정렬한다. 원하는 결과가 같아도 표현과 데이터 상태에 따라 처리 비용은 달라질 수 있다.
조회 이외의 작업
테이블과 제약 조건을 정의하는 명령, 새 행을 넣거나 기존 행을 바꾸고 지우는 명령도 SQL에 포함된다. 데이터 변경이 어느 범위에 적용되는지 결정하는 조건은 중요하다. 조건을 빠뜨리면 의도보다 많은 행이 바뀔 수 있다.
트랜잭션 관련 명령은 여러 변경을 하나의 작업 단위로 관리하는 데 쓰인다. 오류가 났을 때 되돌릴 범위와 동시 접근의 동작은 DBMS의 설정 및 격리 규칙과 함께 이해해야 한다.
NULL과 비교
NULL은 일반적인 숫자나 빈 문자열과 같은 값으로 취급되지 않는다. 값이 없거나 알려지지 않은 상태를 나타내는 데 쓰이며, 보통의 등호 비교 대신 IS NULL 등 해당 목적의 조건을 사용한다.
NULL이 포함된 논리식은 참과 거짓만으로 설명되지 않는 결과를 낼 수 있다. 집계 함수와 정렬에서 NULL을 다루는 방식도 질의 결과에 영향을 준다.
표준과 제품별 기능
SQL에는 표준이 있지만 모든 DBMS가 같은 기능을 같은 방식으로 구현하지는 않는다. 날짜 연산, 자동 증가 값, 자료형과 확장 문법 등은 제품별 차이가 있다. 다른 DBMS로 옮길 때는 문법뿐 아니라 실제 결과와 트랜잭션 동작도 확인해야 한다.
관련 문서
데이터베이스 / 관계형 데이터베이스 / 프로그래밍 언어