1. 특정 행의 검색
일반적인 경우 테이블에 있는 모든 자료를 조회할 필요 없이 사용자가 원하는 자료를 조회하는 경우가 대부분 입니다. 이러한 질의를 만족하게 하는 것이 WHERE 절입니다. WHERE 절은 수행될 조건 절을 포함하며 FROM절 바로 다음에 기술됩니다.
1.1 Syntax
DiSTINCT 중복 행 제거 옵션
* 테이블의 모든 column 출력
alias 해당 column에 대한 다른 이름 부여
table_name 테이블명 질의 대상테이블 이름
WHERE 조건을 만족하는 행들만 검색
condition column명, 표현식, 문자 상수, 숫자 상수, 비교 연산자로 구성된다.
ORDER BY 질의 결과 정렬을 위한 옵션(ASC: 오름차순(Default), DESC내림차순)
1.2 WHERE 절에 사용되는 연산자
1) WHERE 절을사용하여 행들을 제한할 수 있다.
2) WHERE 절은 FROM 절 다음에 온다.
3) 조건은 아래의 것으로 구성된다.
① column 명, 표현식, 상수
② 비교 연산자, SQL 연산자, 논리연산자
③ 문자(Literal)
1.2.1 비교 연산자
연산자 |
의 미 |
= |
같다 |
> |
보다 크다 |
>= |
보다 크거나 같다 |
< |
보다 작다 |
<= |
보다 작거나 같다 |
<>, !=, ^= |
같지 않다 |
NOT Column_name = |
같지 않다 |
NOT Column_name > |
보다 크지 않다 |
문제 1) EMP 테이블에서 급여가 3000 이상인 사원의 정보를 사원번호, 이름, 담당업무, 급여를 출력하여라
문제 2) EMP 테이블에서 담당 업무가 Manager 인 사원의 정보를 사원번호, 성명, 담당업무 급여, 부서번호를 출력하여라.
문제 3) EMP 테이블에서 입사일자가 1982년 1월 1일 이후에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라
참고
1) 문자STRING과 날짜 값은 단일 인용 부호(' ')를 사용한다.
2) 문자 값은 대소문자를 구분하고 날짜 값은 날짜 형식을 구분합니다.
3) Default 날짜 형식은 'DD-MON-YY' 입니다
1.2.2 SQL 연산자
연산자 |
설명 |
BETWEEN a AND b |
a 와 b 사이에 있다.(a,b값 포함) |
IN (list) |
list의 값 중 어느 하나와 일치한다. |
LIKE |
문자 형태와 일치한다. (%,_사용) |
IS NULL |
NULL 값을 가졌다 |
NOT BETWEEN a AND b |
a 와 b 사이에 있지 않다. (a,b값 포함하지 않음) |
NOT IN (list) |
list의 값과 일치하지 않는다. |
NOT LIKE |
문자 형태와 일치하지않는다 |
NOT IS NULL |
NULL 값을 갖지 않는다. |
가) BETWEEN 연산자
두 값의 범위에 해당하는 행을 촐력하기 위해 사용한다
문제 4) EMP 테이블에서 급여가 1250에서 1500 사이의 정보를 성명, 담당업무, 급여, 부서번호를 출력하여라
참고
BETWEEN 연산자를 기술할 경우 명시된 값도 포함 된다. 또한 작은 값을 앞에 기술하고 큰 값은 뒤에 기술하여야 한다.
나) IN 연산자
목록에 있는 값에 대해서 출력하기 위해 iN 연산자를 사용한다.
문제 5) EMP 테이블에서 사원번호가 7902,7788,7566인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자를 출력하여라
다) LIKE 연산자
1) 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용한다.
2) 검색 조건은 LITERAL 문자나 숫자를 포함할 수 있다.
3) '%'는 문자가 없거나 하나 이상의 문자를 '_'는 하나의 문자와 대치됩니다.
4) 패턴 일치 문자를 조합할 수 있습니다.
5) '%' 나 '_'에 대해서 검색하기 위해서는 Escape 식별자를 이용할 수 있습니다.
예) name에 값이 X_Y가 포함되어 있는 문자열을 조회하고자 할 경우 Escape를 사용한다
문제 6) EMP 테이블에서 입사일자가 82년도에 입사한 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라
참고
1) 기본 날짜 형식이 'YY-MM-DD'일 경우는 WHERE hiredate LIKE '82%';로 기술한다.
2) SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YY-MM-DD'; 명령어로 연결되어 있는 SQL*Plus 창(SESSION)에서 날짜 타입을 바꿀 수 있다.
라) IS NULL 연산자
NULL 값은 값이 없거나, 알 수 없거나, 적용할 수 없다는 의미이므로 NULL 값을 조회하고자 할경우에 사용한다.
문제 7) EMP 테이블에서 보너스가 NULL인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라
1.2.3 논리 연산자
연산자 |
의미 |
AND |
양쪽 컴포넌트의 조건이 TRUE이면 TRUE를 RETURN합니다. |
OR |
한쪽 컴포넌트의 조건만이 TRUE이면 TRUE를 RETURN 합니다 |
NOT |
이후의 조건이 FALSE이면 TRUE를 RETURN합니다. |
가. AND 연산자
1) 양쪽의 조건이 참이어야 TRUE를 RETURN한다.
2) 다음의 테이블은 AND로 두개의 표현식을 조합한 결과를 보여 준다.
AND |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
FALSE |
NULL |
FALSE |
FALSE |
FALSE |
FALSE |
NULL |
NULL |
FALSE |
NULL |
문제 8) EMP 테이블에서 급여가 1100이상이고 JOB이 Manager인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라
나) OR 연산자
1) 한쪽의 조건만 참이면 TRUE를 RETURN한다.
2) 다음의 테이블은 OR로 두개의 표현식을 조합한 결과를 보여 준다.
OR |
TRUE |
FALSE |
NULL |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
FALSE |
NULL |
NULL |
TRUE |
NULL |
NULL |
문제9) EMP테이블에서 급여가 1100 이상이거나 JOB 이 Manager 인 사원의 정보를 사원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라
다) NOT 연산자
1) NOT연산자 우측의 값이 거짓이면 TRUE를 RETURN한다.
2) 다음의 테이블은 NOT으로 두개의 표현식을 조합한 결과를 보여 준다.
OR |
TRUE |
FALSE |
NULL |
|
FALSE |
TRUE |
NULL |
문제 10) EMP 테이블에서 급여가 JOB이 Manager, Clear, Analyst 가 아닌 사원의 정보를 사원번호, 성명, 담당업무, 급여, 부서번호를 출력하여라
참고
NOT 연산자는 BETWEEN, LIKE, IS NULL 과 같은 다른 SQL 연산자와 함께 사용될 수 있습니다.
1.3.4 우선 순위 규칙
1) 괄호
2) 모든 비교 연산자
3) NOT
4) AND
5) OR
문제 11) 업무가 PRESIDENT 이고 급여가 1500 이상이거나 업무가 SALESMAN인 사원의 정보를 사원번호, 이름, 급여를 출력하여라.
문제 12) 업무가 PRESIDENT 또는 SALESMAN이고 급여가 1500 이상이거나 사원의 정보를 사원번호, 이름, 업무, 급여를 출력하여라.
2. ORDER BY 절
질의 결과에 RETURN 되는 행의 순서는 정의되지 않습니다. ORDER BY 절은 행을 정렬하는데 사용할 수 있습니다. ORDER BY 절 사용하는 경우 SELECT 문의 맨 두에 기술되어야 합니다. 정렬을 위한 표현식이나 Alias을 명시할 수 있습니다.
2.1 Syntax
ORDER BY 검색된 행이 출력되는 순서를 명시합니다.
ASC 행의 오름차순 정렬(Default)
DESC 행의 내림차순 정렬
참고
ORDER BY 절이 사용되지 않았다면, 정렬 순서가 정의되지 않은 것이며 오라클 서버는 똑같은 질의를 두 번 실행했을 때 행을 똑같은 순서로 나타내지 않을 수도 있습니다.
2.2 데이터의 정렬
1) 디폴트 정렬은 오름차순입니다:
① 숫자 값은 가장 적은 값이 먼저 출력됩니다. (예 : 1~999)
② 날짜 값은 가장 빠른 값이 먼저 출력됩니다. (예 : 01-JAN-92 ~ 01-JAN-95)
③ 문자 값은 알파벳 순서로 출력됩니다. (예 : A ~ Z ~ a ~ z)
④ Null 값은 오름차순에서는 제일 나중에 그리고 내림차순에서는 제일 먼저 옵니다.
2) 디폴트 순서 변경
① 행이 디스플레이 되는 순서를 바꾸기 위해서, ORDER BY 절에서 열 이름 뒤에 DESC 키워드를 명시해야 합니다.
문제 13) EMP 테이블에서 입사일자 순으로 정렬하여 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라,
문제 14) EMP 테이블에서 가장 최근에 입사한 순으로 사원번호, 이름, 업무, 급여, 입사일자, 부서번호를 출력하여라.
2.2.1 다양한 정렬 방법
2.3 다중 열에 의한 정렬
1) 하나 이상의 열로 질의 결과를 정렬할 수 있습니다.
2) 주어진 테이블에 있는 개수까지만 가능합니다.
3) ORDER BY 절에서 열을 명시하고, 열 이름은 콤마로 구분합니다.
4) 열의 순서를 바꾸고자 한다면 열 이름 뒤에 DESC를 명시합니다.
5) SELECT절에 포함되지 않는 열로 정렬할 수도 있습니다.
문제 15) EMP ㅌ이블에서 부서번호로 정렬한 후 부서번호가 같을 경우 급여가 많은 순으로 정렬하여 사원번호, 성명, 업무, 부서번호, 급여를 출력하여라.
문제 16) EMP 테이블에서 첫번째 정렬은 부서번호로 두번째 정렬은 업무로 세번째 정렬은 급여가 많은 순으로 정렬하여 사원번호, 성명, 입사일자, 부서번호, 업무, 급여를 출력하여라.
'Legend 개발자 > Oracle' 카테고리의 다른 글
No.005 그룹 함수(Multi Row FUnction) [2017-06-07] (0) | 2017.06.07 |
---|---|
No.004 단일 행 함수 [2017-06-02] (0) | 2017.06.02 |
Oracle 연습문제 (0) | 2017.06.02 |
No.002 데이터의 검색 [2017-06-01] (0) | 2017.06.01 |
No.001 관계형 데이터베이스 [2017-06-01] (0) | 2017.06.01 |