1. 데이터베이스 언어(DataBase Language)의 정의
- 데이터베이스 언어는 DBMS를 통해 데이터베이스를 구축하고 이용하기 위한, 사용자와 데이터베이스 간의 소통 수단이다.
- 데이터베이스 언어는 DBMS를 통해 사용되며 상용 DBMS 제품들이 지원하는 대표적인 데이터베이스 언어는 SQL, QBE, QUEL 등이 있다.
2. SQL(Structured Query Language)
- SQL은 1974년 IBM 연구소에서 System R 이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어이다.
- 1986년 ANSI(American National Standards Institute, 미국 국립 표준 협회)에서 SQL을 표준으로 채택했다.
- 상용 RDBMS마다 지원하는 SQL 기능에는 다소 차이가 있다.
- 사용자는 SQL을 사용하여 관계 데이터베이스에 릴레이션을 정의, 정보 검색, 갱신하고 무결성 제약 조건들을 명시할 수 있다.
- 비절차적, 선언적 언어이므로 사용자는 원하는 것만 명시하고 원하는 것을 처리하는 방법은 명시하지 않는다.
- 자연어에 가까운 구문을 사용하여 질의를 표현할 수 있다.
3. SQL의 분류
- SQL은 그 역할에 따라 정의어(DDL), 조작어(DML), 제어어(DCL)로 나눌 수 있다.
3-1. DDL (Data Definition Language) = 데이터 정의 언어
- DB 구조, 데이터 형식, 접근 방식 등 DB를 구축하거나 수정할 목적으로 사용하는 언어이다.
- 번역한 결과가 데이터 사전(Data Dictionary)이라는 특별한 파일에 여러 개의 테이블로서 저장된다.
- 외부 스키마 명세의 정의 기능을 가진다.
- 데이터베이스의 논리적, 물리적 데이터 구조의 정의 및 수정의 기능을 가진다.
- 스키마에 사용되는 제약조건에 대한 명세를 정의하는 기능을 가진다.
- 데이터의 물리적 순서를 규정하는 기능을 가진다.
- CREATE, ALTER, DROP, RENAME, TRUNCATE 와 같은 명령어가 있다.
3-2. DML (Data Manipulation Language) = 데이터 조작 언어 = 서브 언어
- 사용자로 하여금 데이터를 처리할 수 있게 하는 도구로서 사용자(응용 프로그램)와 DBMS간의 인터페이스를 제공한다.
- 응용 프로그램을 통해 사용자가 DB의 데이터를 실질적으로 조작할 수 있도록 하기 위해 C, FORTRAN, COBOL 등의 호스트 언어에 DB 기능을 추가시켜 만든 언어이다.
- 대표적인 데이터 조작어에는 질의어(SQL)가 있으며, 질의어는 터미널에서 주로 이용하는 비절차적(NonProcedural) 데이터 언이이다.
- SELECT, INSERT, UPDATE, DELETE 와 같은 명령어가 있다.
① SELECT문
- 테이블을 구성하는 튜플들 중 전체 또는 조건을 만족하는 튜플을 검색하여 주기억장치 상에 임시 테이블로 구성시키는 명령문이다.
SELECT Predicate 속성명1, 속성명2, ...
FROM 테이블명1, 테이블명2, ...
WHERE 조건
GROUP BY 속성명1, 속성명2, ...
HAVING 조건
ORDER BY 속성명
;
|
- SELECT절 (Predicate : 불러올 튜플 수를 제한할 명령어 기술)
· ALL(*) : 모든 튜플을 검색할 때 지정하는 것으로 생략 가능. ·DISTINCT : 중복된 튜플이 있으면 첫 번째 하나만 검색.
· DISTINCTROW : 중복된 튜플을 검색하는데, 선택된 속성의 값이 아닌 튜플 전체를 대상으로 함.
· 속성명 : 두 개 이상의 테이블을 대상으로 검색할 경우에는 '테이블명.속성명' 으로 표현한다.
- FROM절
· 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술.
- WHERE절
· 검색할 조건들을 기술.
- GROUP BY절
· 특성 속성을 기준으로 그룹화할 속성을 지정.
· 일반적으로 GROUP BY절은 그룹 함수와 함께 사용된다.
· COUNT(속성명) : 그룹별 튜플 수를 구하는 함수.
· MAX(속성명) : 그룹별 최대값을 구하는 함수.
· MIN(속성명) : 그룹별 최소값을 구하는 함수.
· SUM(속성명) : 그룹별 합계를 구하는 함수.
· AVG(속성명) : 그룹별 평균을 구하는 함수.
- HAVING절
· GROUP BY와 함께 사용.
· 그룹에 대한 조건을 지정.
- ORDER BY절
· 특정 속성을 기준으로 정렬할 때 사용.
· 정렬의 기준이 되는 속성명을 기술.
· ASC : 오름차순 정렬.
· DESC : 내림차순 정렬.
· ASC, DESC 를 생략 시 오름차순으로 자동 지정.
② INSERT 문법
- 기본 테이블에 새로운 튜플을 삽입할 때 사용한다.
- 대응하는 속성과 데이터는 개수와 데이터 형식이 일치해야 한다.
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있다.
- SELECT 문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있다.
INSERT
INTO 테이블명(속성명1, 속성명2, ...)
VALUES(데이터1, 데이터2, ...);
|
③ DELETE 문법
- 기본 테이블에 있는 튜플들 중 특정 튜플을 삭제할 때 사용한다.
- 모든 레코드를 삭제할 때는 WHERE 절을 생략한다.
- 모든 레코드를 삭제하더라도 테이블 구조는 남아있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다르다.
DELETE
FROM 테이블명
WHERE 조건
;
|
④ UPDATE 문법
- 기본 테이블에 있는 튜플들 중 특정 튜플의 내용을 변경할 때 사용한다.
UPDATE 테이블명
SET 속성명1=데이터1, 속성명2=데이터2, ...
WHERE 조건
;
|
3-3. DCL (Data Control Language) = 데이터 제어 언어
- 무결성, 보안 및 권한 제어, 회복을 등을 하기 위한 언어이다.
- 데이터를 보호, 관리하는 목적으로 사용된다.
- 불법적인 사용자로부터 데이터를 보호하기 위한 데이터 보안의 기능을 가진다.
- 데이터 정확성을 위한 무결성(Integrity) 유지의 기능을 가진다.
- 시스템 장애에 대비한 데이터 회복과 병행 수행 제어의 기능을 가진다.
- GRANT, REVOKE 와 같은 명령어가 있다.
4. QBE(Query By Example)
- 1970년대 초반 IBM의 T.J.Watson 연구소에서 개발된 관계형 데이터베이스 질의어로 편리한 사용자 인터페이스를 지원한다.
- 비록 국제 표준은 되지 못했지만 사용법이 직관적이고 매우 쉬워서 현재 많은 SQL 시스템에서 SQL외에 추가적인 질의어로 지원하고 있다.
- 도메인 변수를 사용하는 도메인 관계 해석에 기초하고 있는 데이터베이스 언어이다.
5. QUEL(QUEry Language)
- SQL, QBE 외에도 상업적으로 인정받았던 데이터베이스 언어이다.
- 현재는 상업적으로 거의 사용되지 않는다.
- 미국 버클리 대학에서 개발한 Ingress 데이터 시스템의 인어로 개념적으로 튜플 관계 해석에 기초를 두고 있다.
댓글 없음:
댓글 쓰기