구조적 쿼리 언어(SQL: Structured Query Language)라는 이름은 데이터베이스에게 무엇인가를 묻는 방법을 의미하지만
이는 정확한 명명법이라 볼 수 없다. 그 이유인 즉 사용자는 SQL을 이용해 단순한 쿼리 뿐만이 아니라 데이터베이스 객체를
만들거나 제고하고, 데이터베이스 내의 데이터를 삽입, 갱신, 삭제하거나 다양한 운영 작업을 할 수 있기 때문이다.
SQL은 오라클 사유 기술은 아니며, 관계 데이터베이스 관리 시스템의 표준 언어이다.
SQL의 역사는 잠시 접어두고 개인이 별도로 알아보고 여러분이 가장 먼저 알아두어야 할 것은 SQL에도 몇 가지 분류가
있다는 것이다.
▒ 데이터 처리 언어 (DML : Data Manipulation Language)
▒ 데이터 정의 언어 (DDL : Data Definition Language)
▒ 트랜잭션 제어문
▒ 세션 제어문
▒ 시스템 제어문
SQL이 중요한 이유는?
간단히 말해서 SQL은 데이터베이스와 상호 작용을 통해 객체를 만들고, 테이블에 데이터를 삽입하고, 데이터베이스에서 데이터를
얻는 등의 다양한 작업을 할 수 있도록 해준다.
테이블에는 무엇이 있는가?
테이블은 관계 데이터베이스에 데이터 저장을 위해 이용되는 객체로서, 행과 열을 통해 스프레듯트와 비슷한 방식으로 데이터를
표시한다. 열은 테이블 내 데이터의 속성을 저장하는 데 이용되며, 테이블 내의 각 열은 열 이름과 데이터 타입을 포함한다.
데이터 타입에는 길이(Length)를 가지는 것과 스케일(Scale)과 정확도(Preision)를 가지는 것이 있다.
예를 들자면 VARCHAR2 데이터 타입은 열이 얼마나 많은 바이트 수를 가질 수 있는가를 지정하는 길이를 가지며, 10 바이트를
가질 수 있는 VARCHAR2 열은 VARCHAR2(10) 형식으로 지정될 수 있다.
반면에 NUMBER 데이터 타입은 한 행의 열이 얼마나 많은 자릿수를 가질 수 있는지를 지정하는 정확도와 소수점 아래에 포함될
숫자의 수를 지정하는 스케일을 가진다.
통화 값을 위한 NUMBER 열은 NUMBER(11,2) 형식으로 쓰여질 수 있는데, 이는 전체 11개의 숫자를 포함할 수 있으며, 소수점
아래에 2개의 숫자가 포함된다는 의미이다.
데이터 관리 언어(DML)
이제 테이블의 일반적인 측면을 살펴보았으므로, 데이터 관리 언어(DML)을 통한 좀더 세부적인 테이블 이용 방법을 알아보자.
DML은 데이터베이스에서 데이터를 쿼리하거나 데이터를 관리하는 SQL 구문들로 구성된다.
쿼리
SELECT 구문, 또는 쿼리는 데이터베이스에게 정보를 요청하는 데 이용된다. SQL 구문은 절이라 불리는 몇 개의 섹션으로
구분되며, SELECT 구문의 경우 다음과 같은 절을 사용할 수 있다.
▒ WITH
▒ SELECT
▒ FROM
▒ WHERE
▒ GROUP BY
▒ HAVING
▒ ORDER BY
SELECT 절은 사용자가 보고자 하는 열을 지정하고, FROM 절은 이열을 찾을 데이터 원본을 오라클에게 알려준다.
다음과 같은 간단한 쿼리를 실행해보자.
이 쿼리에서 JOBS 테이블에서 모든 직업의 JOB_ID와 JOB_TITLE을 요청하고 있다. SELECT 절은 다음과 같다.
SQL> select job_id, job_title
그리고 FROM 절은 다음과 같다.
SQL> from jobs
이 두개의 절은 오라클의 쿼리에서 반드시 필요하다. 만약 FROM 절을 제외하면 다음과 같은 오류가 발생한다.
FROM 키워드가 있어야 할 곳에 없다는 에러 메시지이다.
테이블 내의 모든 열을 요청하는 쿼리르 작성할 때에는 "테이블의 모든 열"을 의미하는 별표(*) 기호를 이용하면 된다.
WHERE 절
사용자가 오라클에게 "EMP" 테이블의 모든 직원 데이터를 보여달라 라고 요청하면, 오라클은 문자 그대로 사용자가 요청한 모든
데이터를 돌려준다. 하지만, 특정 직원의 데이터와 같은 일부 데이터만을 얻고자 한다면 방법은 "WHERE" 절을 통해 특정 조건을
넣어주어야 한다. WHERE 절은 다음과 같이 쿼리의 FROM 절 뒤에 위치한다.
SELECT <열>
FROM <데이터 원본>
WHERE <조건 표현식>;