이번 시간에는 SQL 문 중에서 가장 많이 사용되는 명령어인 SELECT 명령어의 사용법에 대해 알아보겠습니다.
- 형식
SELECT 명령은 데이터베이스에서 데이터를 검색할 때 사용하는 것으로 아래와 같은 형식으로 사용됩니다.
여기서 INTO와 관련된 실습은 하지 않습니다. INTO는 검색 결과를 특정 변수에 저장하는 것인데 SQL을 이용하여 다른 프로그래밍을 할 때 사용됩니다. 따라서 INTO와 관련해서는 다른 프로그래밍 언어에서 실습하면 되고 여기서는 실습을 생략합니다.
- SQL 명령어 작성법
앞 강좌에서 이미 일부는 설명을 했었는데 자세히 살펴보죠.- SQL 문장은 여러 줄에 걸쳐 입력할 수 있습니다.
- 그리고 입력할 때는 되도록 SQL 명령어는 읽기 쉽도록 들여쓰기를 하고
- SELECT, FROM, WHERE는 각기 다른 Line에 적는 것이 좋습니다. 그래야 한눈에 들어오니까요.
- SQL 명령어는 대소문자를 구분하지 않습니다.
- SQL 문장의 끝은 세미콜론(;)으로 종료합니다.
- 실습용 Sample 테이블 작성
우리는 앞으로의 실습을 위해 몇 개의 테이블을 만들어야 되는데 우선 첫번째로 다음과 같은 EMP 테이블을 만들 것입니다.
그런데 오라클을 설치하면 기본적으로 EMP 테이블이 있습니다. 따라서 아래와 같이 DROP 명령을 줘서 기존의 EMP 테이블을 지우고, CREATE 명령으로 새롭게 EMP 테이블을 만들어, INSERT를 사용하여 테이블에 데이터를 입력합니다.
DROP, CREATE, INSERT 등의 명령에 관해서는 후에 SELECT와 관련된 모든 실습이 끝난 후에 다룰 예정이므로 아래의 문장을 그냥 입력하시기만 하면 됩니다.
만약 입력하시기가 어렵다면 아래의 문장을 그대로 복사하여 SQL*Plus에 붙여넣기를 해도 됩니다.
SQL*Plus를 실행하여 다음 내용을 직접 입력하거나 복사하여 붙여넣으세요.
DROP TABLE EMP;
CREATE TABLE EMP (
EMP_NUM CHAR(5) PRIMARY KEY,
LAST_NAME VARCHAR2(30) NOT NULL,
FIRST_NAME VARCHAR2(30) NOT NULL,
JOB_CODE CHAR(2) NOT NULL,
ADDRESS VARCHAR2(100) );
INSERT INTO EMP VALUES ( ‘10001’, ‘GRANT’, ‘LINDA’, ‘PE’, ’34 of 1st Street’);
INSERT INTO EMP VALUES ( ‘10002’, ‘AMY’, ‘JONATHAN’, ‘PS’, ‘200 Rose Street’);
INSERT INTO EMP VALUES ( ‘10003’, ‘HUROW’, ‘LILY’, ‘SS’, ‘101 Bear Town’);
INSERT INTO EMP VALUES ( ‘10004’, ‘ADAM’, ‘EVELY’, ‘CS’, ‘202 Declaration Drive’);
INSERT INTO EMP VALUES ( ‘10005’, ‘JULIE’, ‘ROSE’, ‘PE’, ‘788 McTyne Street’);
INSERT INTO EMP VALUES ( ‘10006’, ‘ALBERT’, ‘MAY’, ‘SS’, ‘320 Elaine Ave’);
INSERT INTO EMP VALUES ( ‘10007’, ‘AMY’, ‘KENT’, ‘SS’, ‘829 Cerritos Ave’);
위와 같은 방법으로 다음과 같은 VIDEO 테이블을 만들어 봅시다.

DROP TABLE VIDEO;
CREATE TABLE VIDEO (
VIDEO_NO CHAR(3) PRIMARY KEY,
VIDEO_NAME VARCHAR2(30) NOT NULL,
PLAY_TIME NUMBER NOT NULL,
DESCRIPTION VARCHAR2(100) NOT NULL );
INSERT INTO VIDEO VALUES (‘101’, ‘LAMBO’, 150, ‘ACTION IN WAR GAME’);
INSERT INTO VIDEO VALUES (‘201’, ‘TOW CAPS’, 100, ‘HUMOROUS STORIES OF CAPS’);
INSERT INTO VIDEO VALUES (‘260’, ‘THE LOVER’, 150, ‘LOVE STORIES IN ASIAN WAR’);
INSERT INTO VIDEO VALUES (‘340’, ‘STING’, 100, ‘THRILLER AND HOT MOVIE’);
INSERT INTO VIDEO VALUES (‘390’, ‘ROMEO AND JULIET’, 200, ‘SAD LOVE STORY OF TWO LOVERS’);
INSERT INTO VIDEO VALUES (‘401’, ‘SPEED’, 200, ‘SPEED ACTION WITH A TRAILOR BUS’);
INSERT INTO VIDEO VALUES (‘500’, ‘POWER OF LOVE’, 100, ‘POWER OF LOVE’);
INSERT INTO VIDEO VALUES (‘560’, ‘CINEMA PARADISE’, 150, ‘MOVIE OF LOVE’);
- 간단한 SELECT 쿼리 실습
아래의 구체적인 실습 예를 통해 SELECT~FROM~WHERE; 문장의 사용법을 익히시기 바랍니다.
SQL*Plus를 실행하여 다음 내용을 직접 입력해 보세요.- EMP 테이블에서 LAST_NAME이 AMY인 모든 Data를 검색하려면
SELECT *
FROM EMP
WHERE LAST_NAME = ‘AMY’ ;
여기서 주의하실 것은 문자열을 표시할 때 큰 따옴표(” “)가 아니라 작은 따옴표(‘ ‘)로 둘러싸야 합니다.
SQL에서는 검색을 위한 식을 입력할 때 숫자형 데이터만 그대로 표시하고 문자형 데이터나 날짜형 데이터는 작은 따옴표로 묶어야 합니다. - EMP 테이블에서 JOB_CODE가 SS인 Data의 EMP_NUM, LAST_NAME, FIRST_NAME 칼럼만 표시하려면
SELECT EMP_NUM,
LAST_NAME,
FIRST_NAME
FROM EMP
WHERE JOB_CODE = ‘SS’ ;
쉼표 여부를 주의해서 입력하셔야 됩니다. FIRST_NAME 뒤에는 쉼표가 없습니다. - WHERE 조건 절에서 특정 데이터를 지정하는 것이 아니라 컬럼 이름으로 조건을 지정할 수도 있습니다. 예를 들어 VIDEO 테이블에서 VIDEO_NAME이라는 컬럼(필드)과 DESCRIPTION이라는 컬럼의 내용이 일치하는 행의 VIDEO_NO만 표시하라고 한다면,
SELECT VIDEO_NO
FROM VIDEO
WHERE VIDEO_NAME = DESCRIPTION;와 같이 쓰면 됩니다. - WHERE 조건 절에서 비교 연산자를 이용해서 조건을 입력해도 됩니다. 예를 들어 VIDOE 테이블에서 PLAY_TIME이 2시간 이상인 행의 VIDEO_NO를 표시하려면,
SELECT VIDEO_NO
FROM VIDEO
WHERE (PLAY_TIME / 60) > 2;
- EMP 테이블에서 LAST_NAME이 AMY인 모든 Data를 검색하려면
- 비교 연산자
SQL에서 사용 가능한 비교 연산자는 다음과 같습니다.
같다(=), 같지 않다(!= 또는 <>), 작다(<), 크다(>), 작거나 같다(<=), 크거나 같다(>=)
주의할 것은 같지 않다를 NOT= 과 같이 표시해서는 안됩니다. - AND, OR operator
AND와 OR는 상식적인 선에서 이해를 하시면 됩니다.
- AND는 AND를 중심으로 좌우의 조건이 모두 만족할 경우에 참이 됩니다.
- OR는 OR를 중심으로 좌우의 조건 중 어느 하나라도 만족할 경우 참이 됩니다.
- 하나의 SELECT 문에서 여러 개의 AND 또는 OR를 사용할 수 있습니다.
- AND는 AND를 중심으로 좌우의 조건이 모두 만족할 경우에 참이 됩니다.
- 컬럼 별명(Column Alias)
컬럼 별명은 검색 결과가 화면에 표시될 때 컬럼 제목을 원하는 형태로 출력하고자 할 때 사용합니다.
SELECT VIDEO_NO (AS) “NUMBER” ,
VIDEO_NAME (AS) “Video Name”
FROM VIDEO
WHER PLAY_TIME > 150;
위의 예에서 AS를 괄호로 표시한 것은 AS를 생략할 수 있다는 것입니다. AS를 쓰거나 아니면 입력하지 마세요. (AS)와 같은 식으로 입력하면 안됩니다. - 연결 연산자
위의 Column Alias를 이해하셨다면 설명보다는 아래의 문장을 직접 실행해 비교해 보세요.
- SELECT EMP_NUM,
LAST_NAME || ‘ ‘ || FIRST_NAME “NAME”
FROM EMP
WHERE JOB_CODE = ‘SS’ ; - SELECT EMP_NUM,
LAST_NAME, FIRST_NAME
FROM EMP
WHERE JOB_CODE = ‘SS’ ;
첫번째 예제는 LAST_NAME과 FIRST_NAME 사이를 한 칸 띄고 연결하여 “NAME”이라는 새로운 이름의 컬럼 제목으로 출력하는 것입니다. 단지 알아보기 쉽도록 그렇게 표시하라는 뜻입니다. 실제 컬럼의 제목이 바뀐 것은 아닙니다.
- SELECT EMP_NUM,
내용이 좀 많았네요.
이상 목요일 새벽, 동주아빠 손병목이었습니다. 동주 자는 모습이 정말 예쁩니다.
