SELECT 명령문은 오라클에서 데이터베이스를 조회하기 위해 사용되는 사용되는 기본 문법입니다.
해당 명령문의 사용방법을 익히기 위해서 샘플로 활용할 데이터베이스는 오라클 설치시 기본으로 제공되는
scott 계정에 있는 테이블을 기반으로 해서 작성하도록 하겠습니다.
1. SELECT 명령어
SELECT문은 특정 테이블에 있는 데이터를 조회할 수 있는 SQL 명령어로, 사용빈도와 중요도 모두 높은 명령어 중 하나입니다. 먼저 SELECT 명령어의 기본 문법 구조를 살펴보고, 이후 기본적인 사용방법을 알아보도록 하겠습니다.
(1) 문법
SELECT [컬럼명 또는 표현식]
FROM [테이블명, 뷰명];
SELECT문은 데이터를 추출하여 보여줄 수 있는 사용빈도도 높고, 가장 중요한 SQL 명령어 중 하나입니다.
이번 시간에는 가장 기초적인 SELECT문 사용 예시를 살펴보도록 하겠습니다.
(2-1) 모든 컬럼 데이터 조회하기
SELECT * FROM EMP;
조회할 대상 테이블의 모든 컬럼값을 확인하고자 할때는 '*' 표시를 사용하면 대상 테이블이 가지고 있는 모든 테이블의 칼럼과 칼럼에 해당하는 데이터를 조회할 수 있습니다. 만약 해당 테이블의 컬럼값을 이미 알고 있을때는 '*' 표시 대신, 해당 테이블의 컬럼값을 직접 명시할 수 있습니다. 아래의 SQL문은 위에서 기술한 SQL문과 동일한 결과값을 나타냅니다.
/* 1번째 SQL문
위의 예제에서는 SELECT * FROM EMP;로 이어서 작성했지만
아래와 같이 줄바꿈하여 표한할 수 있습니다. */
SELECT *
FROM EMP;
/* 2번째 SQL문
해당 테이블의 컬럼명을 이미 알고 있을 경우
'*' 표시 대신 컬럼명을 명시적으로 표현하여 SQL문을 작성할 수 있습니다. */
SELECT EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
FROM EMP;
다음은 실행 결과입니다.
(2-2) 모든 컬럼 데이터 조회하기 실행결과
조회하고자 한 EMP 테이블에 있는 컬럼과, 각 컬럼에 해당하는 데이터를 조회한 모습입니다.
우리는 이렇게 조회된 데이터를 바탕으로 원하는 컬럼값만을 추출하거나, 원하는 데이터만을 추출할 수 있습니다.
(3-1) 원하는 컬럼값만 조회하기
(2)번에서 소개한바와 같이 조회하고자 하는 테이블의 모든 데이터를 조회하여 데이터를 살펴볼 수 있지만, 대부분의 경우 해당 테이블에서 내가 원하는 특정 컬럼값의 데이터를 추출하는 경우가 많습니다.
예를 들어, EMP 테이블을 기준하여 이 중 ENAME 값만을 조회하도록 하겠습니다.
문법은 아래와 같습니다.
SELECT ENAME
FROM EMP;
(3-2) 원하는 컬럼값만 조회하기 실행결과
실행결과를 보면 조회된 결과값에 다른 컬럼들은 조회되지 않고, ENAME에 해당하는 컬럼값만 조회된것을 확인할 수 있습니다.
이처럼 SELECT문을 활용하면 내가 원하는 테이블에 있는 데이터를 전체적으로 조회하여 데이터를 확인할 수 있고, 특정한 몇몇 컬럼을 지정하여 데이터를 조회할 수 있습니다.그렇다면, 여기서 또 다른 고민이 생기게 됩니다. 만약 ENAME에서 조회된 데이터 중에서도 특정 조건에 해당하는 데이터만을 얻고 싶을 경우에는 어떻게 해야할까요? 그럴 경우에 사용하는 구문은 WHERE 입니다.
2. WHERE 절
WHERE절은 SELECT문과 함께 사실상 필수적으로 사용되는 구문인데요. 보통 조회된 데이터의 '필터' 역할이 필요할때 WHERE절을 사용하게 됩니다.
문법적인 형식은 아래와 같습니다.
(1) WHERE 문법
SELECT [컬럼명 또는 표현식]
FROM [테이블명, 뷰명]
WHERE [조건식];
문법을 보면 기존의 SELECT 문에 WHERE 절이 추가된것을 확인할 수 있습니다.
WHERE 절에 포함되는 조건은 다양하지만 간단한 WHERE 조건을 적용해보면서 WHERE절의 기능에 대해 알아보는 시간을 가져보도록 하겠습니다.
(2-1) 특정값을 지정하여 조회하기
아까 살펴본 ENAME 데이터 중에서 ENAME의 값이 'FORD'에 해당하는 전체 데이터를 조회하려면 어떻게 해야할까요?
아래의 구문을 살펴보도록 하겠습니다.
SELECT *
FROM EMP
WHERE ENAME = 'FORD';
SQL 내용을 살펴보도록 하겠습니다.
첫번째 줄의 SELECT *을 사용해서 전체 컬럼을 조회하도록 되어 있고
두번째 줄의 FROM EMP를 보면 조회하고자 하는 테이블의 이름이 EMP인것을 확인했습니다.
세번째 줄의 WHERE ENMAE = 'FORD'의 의미를 해석해보면 EMP 테이블에 있는 ENAME이라는 컬럼 데이터 중에서 'FORD'라는 데이터가 추출해 달라는 의미로 해석이 됩니다.
해당 내용을 바탕으로 본 SQL의 전체적인 해석은 다음과 같습니다.
"EMP 테이블의 전체 컬럼을 조회하되, ENAME값이 'FORD'에 해당하는 데이터만 출력하라."
해당 내용을 바탕으로 결과값을 살펴보도록 하겠습니다.
(2-2) WHERE 실행결과
실행결과를 살펴보면 ENAME값이 FORD에 해당하는 데이터만 출력되어 조회됨을 확인할 수 있습니다.
이처럼 WHERE절은 조건을 어떤식으로 지정하느냐 따라 원하는 데이터를 필터링 하여 추출할 수 있습니다.
WHERE절은 다양하게 사용될 수 있습니다.
지금은 특정값에 일치하는 데이터만을 필터링하여 조회했지만 범위를 지정하여 조회할 수 있고,
특정값을 가진 데이터만 조회할 수 있습니다.
이처럼 WHERE절은 다양한 조건식을 활용하여 이루어지는 구문이기 때문에 지금은 WHERE절이 필터역할을 하는구나~ 정도로만 이해하시고, 차후 보다 다양한 WHERE절의 활용방법에 대해서 작성하도록 하겠습니다.
추출하고자 하는 데이터의 테이블을 지정하여 조회해보았고, WHERE절을 활용해서 특정 데이터만을 조회할 수 있는 방법을 배워봤습니다. 마지막으로는 데이터를 정렬하는 방법에 대해서 작성해보도록 하겠습니다.
3. ORDER BY 절
데이터를 조회하다보면 데이터의 양이 10여개 미만일 경우도 있지만 수천 수만건의 데이터가 있는 경우도 존재합니다.
데이터 양이 적을 경우에는 경우에 따라서는 데이터가 한눈에 들어오기 때문에 별도의 정렬은 불필요 할 수 있습니다. 그러나 데이터가 수천 수만건일 경우 데이터를 특정조건에 맞춰 정렬하지 않게 되면 데이터가 한눈에 들어오지도 않고, 데이터를 분석할때도 상당한 시간이 걸리게 됩니다. 그럴경우를 대비하여 ORACLE에서는 ORDER BY 절을 제공하여 데이터를 정렬할 수 있도록 기능을 제공하고 있습니다.문법적인 형식은 아래와 같습니다.
(1) ORDER BY 문법
SELECT [컬럼명 또는 표현식]
FROM [테이블명, 뷰명]
WHERE [조건식]
ORDER BY [컬럼명] [오름차순, 내림차순];
일반적으로 ORDER BY는 원하는 데이터를 조회하고 마지막에 이루어지는 경우가 많기 때문에 SQL문 가장 마지막에 위치하게 됩니다. 보통 정렬의 기준이 되는 컬럼명을 작성하고 해당 컬럼명을 기준하여 오름차순할지 내림차순을 할지 작성하게 됩니다. 오름차순운 ASC로 표현되고, 내림차순은 DESC로 표현됩니다.정렬의 순서는 단일 컬럼을 기준하여 순서를 정할수도 있고, 여러개의 컬럼을 기준하여 순서를 정할 수 있습니다.예제를 통해 ORDER BY 절의 간단한 사용방법을 알아보도록 하겠습니다.
(2-1) 특정컬럼을 기준하여 데이터 정렬하기
EMP 테이블에 있는 데이터를 기준으로 데이터 정렬을 테스트해보도록 하겠습니다. EMP 테이블에 있는 컬럼 중 SAL은 오름차순으로 정렬하고, EMPNO는 내림차순으로 정렬해보겠습니다.본 데이터 정렬기준은 다음과 같이 풀어서 서술할 수 있습니다."나는 직원(EMP)들 중에서 급여(SAL)가 가장 낮은 사람들을 찾고 싶은데, 만약 급여가 동일한 사람이 있다면 사번(EMPNO)이 높은 사람이 위로가게 해서 데이터를 보여주세요."해당 예시에 해당하는 SQL문은 아래와 같이 작성해볼 수 있습니다.
SELECT *
FROM EMP
ORDER BY SAL ASC, EMPNO DESC;
ORDER BY를 보면 SAL은 ASC로 정렬하고, EMPNO는 DESC로 정렬되어 있습니다. 만약 SAL을 기준하여 ASC로 정렬했을때 SAL값이 모두 다를 경우라면 EMPNO의 조건은 어차피 적용되지 않기 때문에 불필요한 정렬구문이 될 수 있습니다. 따라서 SQL문을 작성하는 당사자는 ORDER BY절에 사용되는 컬럼이 단일 컬럼만 가지고도 충분히 원하는 결과값을 조회할 수 있는지를 판단하는것이 가독성 높은 SQL문을 작성하는 첫번째 단계이지 않나 생각해봅니다. 아래는 실행결과 입니다.
(2-2) ORDER BY 실행결과
실행결과를 살펴보면 SAL값이 적은 순으로 정렬이 됨을 확인할 수 있습니다. 그리고 12번째 줄, 13번째 줄을 보면 SAL값이 3000으로 동일한 값이 들어있습니다. 이렇게 동일한 값이 들어있을 경우에는 2번째 정렬조건인 EMPNO 내림차순이 적용되어 12번째 줄에 해당하는 EMPNO값은 7902이고, 13번째 줄에 해당하는 EMPNO값은 그보다 적은값인 7788값으로 정렬되어 있는것을 확인할 수 있습니다.
여기까지가 기본적인 SELECT문의 사용방법입니다.
어떠신가요?
SQL문에 익숙하신 분들이라면 아무렇지도 않을 글이지만 SQL문에 대해서 아무것도 모르는 분들에게는 작은 도움이 되었으면 하는 바램에서 작성해보았습니다.
각 구문별로 보다 깊이 있는 다른 사용방법이 있으나 개인적인 바램은 본 포스팅을 통해 SELECT문이 어떤지 정도로 알고 가셨으면 본 포스팅을 작성한 의도가 충분히 반영된것이라 생각됩니다. 부디 부담없이 읽고 넘어가셨으면 좋겠습니다. ^^
'DB > Oracle' 카테고리의 다른 글
[ORACLE] [오라클 문법] 06. CREATE TABLE(테이블 생성) 사용방법 & 예제 (0) | 2022.04.07 |
---|---|
[ORACLE] [오라클 문법] 05. DELETE문(삭제) 사용방법 & 예제 (0) | 2022.03.29 |
[ORACLE] [오라클 문법] 04. UPDATEA문(수정) 사용방법 & 예제 (0) | 2022.03.27 |
[ORACLE] [오라클 문법] 03. INSERT문(추가) 사용방법 & 예제 (0) | 2022.03.26 |
[ORACLE] [오라클 문법] 01. DESC문 사용방법 & 예제 (0) | 2022.03.24 |