역사
SQL은 IBM에서 1970년대 초에 처음 개발하였다. 초기에는 SEQUEL(씨퀄:Structured English Query Language, 구조 영어 질의어)라는 이름으로 시작하였으며, IBM의 준 관계형 데이터베이스 관리 시스템에 저장된 데이터를 조작하고 수신하기 위해 고안되었다.
SQL 구문
명령어 종류
데이터베이스 언어 SQL 문법의 종류는 다음 세 가지로 대별된다.
- 데이터 정의 언어 (DDL : Data Definition Language)
- 데이터 조작 언어 (DML : Data Manipulation Language)
- 데이터 제어 언어 (DCL : Data Control Language)
명령어 문법
데이터 정의 언어
CREATE는 데이터베이스에서 객체(예, 테이블)를 생성한다. 예를 들어:
CREATE TABLE My_table(
my_field1 INT,
my_field2 VARCHAR(50),
my_field3 DATE NOT NULL,
PRIMARY KEY (my_field1, my_field2)
);
ALTER는 다양한 방법으로 현존하는 객체의 구조를 변경한다. 예를 들어, 현재의 테이블에 컬럼을 추가하거나 제한을 추가한다. 예를 들면:
ALTER TABLE My_table ADD my_field4 NUMBER(3) NOT NULL;
DROP TABLE My_table;
데이터 조작 언어
- INSERT INTO (행 데이터 또는 테이블 데이터의 삽입)
- UPDATE ~ SET (데이터의 업데이트)
- DELETE FROM (테이블에서 특정 행 삭제)
- SELECT ~ FROM ~ WHERE (테이블 데이터의 검색 결과 집합의 취득)
데이터 제어 언어
- GRANT (특정 데이터베이스 사용자에게 특정 작업을 수행 권한을 부여)
- REVOKE (특정 데이터베이스 이용자로부터 이미 준 권한을 박탈 함.)
- BEGIN (트랜잭션 시작)
- COMMIT (트랜잭션의 실행)
- ROLLBACK (트랜잭션 취소)
- SAVEPOINT (무작위로 롤백 지점을 설정)
- LOCK (테이블 등의 자원을 잠금)
연산자
| 연산자 | 설명 |
|---|---|
| = | 같음 |
| <> 또는 != | 같지 않음 |
| > | 보다 큼 |
| < | 보다 작음 |
| >= | 보다 크거나 같음 |
| <= | 보다 작거나 같음 |
| BETWEEN | 일정 범위 사이 |
| LIKE | 패턴 검색 |
| IN | 컬럼의 여러 가능한 값들을 지정 |
조건 표현
SQL은 case/when/then/else/end 과 같은 조건 분기 표현을 가지고 있다.
CASE WHEN n > 0 THEN 'positive' WHEN n < 0 THEN 'negative' ELSE 'zero' END
자료형
SQL 테이블에서 각 컬럼은 컬럼이 포함하는 자료형(data type)을 선언한다. SQL은 다음과 같은 데이터형을 포함하고 있다.
문자열
CHARACTER(n)또는CHAR(n): 고정폭 n-문자열, (필요한만큼 공백으로 채워진다.)CHARACTER VARYING(n)또는VARCHAR(n): 가변폭 문자열 (n 문자의 최대 크기를 가진)
수
INTEGER와SMALLINTFLOAT,REAL과DOUBLE PRECISIONNUMERIC(precision, scale)또는DECIMAL(precision, scale)
예를 들어, 숫자 123.45는 5라는 precision(정밀도, 자리값)과 2라는 scale(소수점 이하 자릿수)을 포함하고 있다. precision은 전체 자리수를 나타내며 scale은 음이 아닌 정수이다. 0의 scale은 그 수가 정수임을 지시하는 숫자이다.
날짜와 시간
DATE: 날짜 값 (예,2011-05-03)TIME: 시간 값 (예,15:51:36). 시간 값은 보통 tick (100 nanoseconds)이다.TIME WITH TIME ZONEorTIMETZ:TIME과 같지만, 해당 지역의 시간대 정보를 포함하고 있다.TIMESTAMP: 이것은DATE와TIME이 하나의 변수로 결합된 것이다. (예,2011-05-03 15:51:36).TIMESTAMP WITH TIME ZONEorTIMESTAMPTZ:TIMESTAMP와 동일하지만, 해당 지역의 시간대에 대한 상세 정보를 포함하고 있다.

