-선택되는 행 제한
• WHERE 절을 사용하여 반환되는 행을 제한합니다.
• WHERE 절은 FROM 절 다음에 나옵니다.
WHERE 절을 사용하여 query에서 반환되는 행을 제한할 수 있습니다. WHERE 절은 충족되어야 하는 조건을 포함하며 FROM 절 바로 뒤에 나옵니다. 조건이 참인 경우 해당 조건을 충족하는 행이 반환됩니다. 이 구문에서 다음이 적용됩니다. WHERE 조건을 충족하는 행으로 query를 제한합니다.
condition 열 이름 , 표현식, 상수 및 비교 연산자로 구성됩니다. 조건은 하나 이상의 표현식과 논리(부울) 연산자의 조합을 지정하고 TRUE, FALSE 또는 UNKNOWN의 값을 반환합니다. WHERE 절은 열의 값, 리터럴, 산술식 또는 함수를 비교할 수 있으며 다음 세 가지 요소로 구성됩니다.
• 열 이름 • 비교 조건 • 열 이름 , 상수 또는 값 리스트
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90 ;
이런식으로 사용할 수 있습니다. 이렇게하면 부서 90에 소속된 모든 사원의 사원 ID, 성, 직무 ID 및 부서 번호를 검색합니다.
참고: WHERE 절에서는 열 alias를 사용할 수 없습니다.
-문자열 및 날짜
• 문자열 및 날짜 값은 작은 따옴표로 묶습니다 .
• 문자 값은 대소문자를 구분하고 날짜 값은 형식을 구분합니다.
• 기본 날짜 표시 형식은 DD-MON-RR입니다.
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen' ;
#항상 마지막 부분에 ;표시를 해줍니다.
#또한 모든 문자검색은 대소문자를 구분하기 때문에 last_name = 'Whalen'과 last_name = 'WHalen은 다릅니다.
구분해서 검색해야 합니다.
-비교 연산자
연산자 |
의미 |
= |
같음 |
> |
보다 큼 |
>= |
보다 크거나 같음 |
< |
보다 작음 |
<= |
보다 작거나 같음 |
<> |
같지 않음 |
BETWEEN.. AND |
두 값 사이(경계값 포함) |
IN(set) |
값 리스트 중 일치하는 값 검색 |
LIKE |
일치하는 문자 패턴 검색 |
IS NULL |
null 값인지 여부 |
# !=, ^= 기호도 같지 않음 조건을 나타냅니다.
SELECT last_name, salary
FROM employees
WHERE salary <= 3000 ;
salary가 3000보다 작거나 같은 내용만 출력합니다.
-BETWEEN 연산자를 사용하는 범위 조건
SELECT last_name, salary
FROM employees
WHERE salary BETWEEN 2500 AND 3500 ;
#2500과 3500사이의 값을 출력하는데, 해당값도 포함입니다.
-IN 연산자를 사용하는 멤버 조건
SELECT employee_id, last_name, salary, manager_id
FROM employees
WHERE manager_id IN (100, 101, 201) ;
#manager_id의 값이 100,101,201인 값만 출력합니다. 순서는 상관 없습니다.
-LIKE 연산자를 사용하여 패턴 일치
• LIKE 연산자를 사용하여 유효한 검색 문자열 값의 대체 문자 검색을 수행합니다.
• 검색 조건에는 리터럴 문자나 숫자가 포함될 수 있습니다.
– %는 0개 이상의 문자를 나타냅니다.
– _은 한 문자를 나타냅니다.
SELECT first_name
FROM employees
WHERE first_name LIKE 'S%' ;
#이름이 대문자 S로 시작하는 사원이름을 출력합니다. 대소문자를 구분합니다.
SELECT last_name, hire_date FROM employees
WHERE hire_date LIKE '%95';
#이렇게 하면 95년도에 입사한 사원들의 정보를 볼 수 있습니다.
-대체 문자 결합
• 패턴 일치를 위해 두 대체 문자(%, _)를 리터럴 문자와 결합할 수 있습니다.
SELECT last_name FROM employees
WHERE last_name LIKE '_o%' ;
#두 번째 글자가 o인 사원의 이름를 출력합니다. 세 번째 글자를 찾고 싶다면 __o% 이런식으로 합니다.
-ESCAPE 식별자
실제 % 및 _ 문자와 정확히 일치해야 하는 경우 ESCAPE 식별자를 사용합니다. 이 옵션은 이스케이프 문자를 지정합니다. SA_를 포함한 문자열을 검색하려는 경우 다음 SQL 문을 사용할 수 있습니다.
SELECT employee_id, last_name, job_id FROM employees
WHERE job_id LIKE '%SA\_%' ESCAPE '\';
-NULL 조건 사용
IS NULL 연산자로 null을 테스트합니다.
SELECT last_name, manager_id FROM employees
WHERE manager_id IS NULL ;
NULL 조건은 IS NULL 조건과 IS NOT NULL 조건을 포함합니다.
IS NULL 조건은 null을 테스트합니다. null 값은 사용할 수 없거나, 할당되지 않았거나, 알 수 없거나, 적용할 수 없는 값을 의미합니다. 따라서 null은 어떠한 값과도 같거나 같지 않을 수 없기 때문에 등호(=)를 사용하여 테스트할 수 없습니다. 슬라이드의 예제는 관리자가 없는 모든 사원의 성과 관리자를 검색합니다.
-논리 연산자를 사용하여 조건 정의
연산자 |
의미 |
AND |
구성 요소 조건이 모두 참인 경우 TRUE를 반환합니다 |
OR |
구성 요소 조건 중 하나가 참인 경우 TRUE를 반환합니다 |
NOT |
조건이 거짓인 경우 TRUE를 반환합니다 |
-AND 연산자 사용
AND 연산에서는 두 구성 요소 조건이 모두 참이어야 합니다.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%' ;
# 문자열 'MAN'을 포함한 직책을 가지고 있고 $10,000 이상의 급여를 받는 사원만 선택됩니다. 모든 문자 검색에서는 대소문자가 구분되므로 'MAN'이 대문자가 아닌 경우에는 어떠한 행도 반환되지 않습니다. 또한 문자열은 따옴표로 묶어야 합니다.
-OR 연산자 사용
SELECT employee_id, last_name, job_id, salary FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%' ;
#직무 ID에 문자열 'MAN'이 포함되거나 또는 $10,000 이상의 급여를 받는 사원이 선택됩니다.
-NOT 연산자 사용
SELECT last_name, job_id
FROM employees
WHERE job_id
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP') ;
#직무 ID가 IT_PROG, ST_CLERK 또는 SA_REP가 아닌 모든 사원의 성과 직무 ID를 표시합니다.
-우선 순위 규칙
산술 연산자 > 연결 연산자 > 비교 조건 > IS [NOT] NULL, LIKE, [NOT] IN > [NOT] BETWEEN > 같지 않음 > NOT 논리조건 > AND 논리조건 > OR 논리조건
#괄호를 사용하여 우선 순위 규칙을 재정의할 수 있습니다.
SELECT last_name, job_id, salary
FROM employees
WHERE job_id = 'SA_REP'
OR job_id = 'AD_PRES'
AND salary > 15000;
# 이렇게 되면 AND 가 OR 보다 우선 순위에 있으므로 "직원이 사장 이면서 $15,000가 넘는 급여를 받거나 직원이 판매 담당자인 경우의 행을 선택하라는 말이 됩니다.
SELECT last_name, job_id, salary
FROM employees
WHERE (job_id = 'SA_REP' OR job_id = 'AD_PRES')
AND salary > 15000;
#이렇게 하게 되면 괄호로 우선순위를 바꾸었기 때문에 AND가 가장 마지막 순위가 되게 됩니다.
-ORDER BY 절 사용
• ORDER BY 절을 사용하여 검색된 행을 정렬합니다.
– ASC: 오름차순, 기본값
– DESC: 내림차순
• ORDER BY 절은 SELECT 문의 맨 마지막에 옵니다.
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date ;
# 기본적으로 오름차순으로 정렬되고, ORDER BY hire_date desc;하면 내림차순으로 정렬됩니다.
desc가 테이블 구조를 설명하는데 사용되는 DESC키워드와 혼동에 주의해야 합니다.
• 열의 숫자 위치를 사용하여 정렬
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY 3;
#3번째 열로 지정한 hire_date기준으로 오름차순 정렬합니다.
• 여러 열을 기준으로 정렬
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
# department_id를 기준으로 오름차순으로 정렬되며 또한 salary를 기준으로 내림차순으로 정렬됩니다.
치환 변수
-단일 앰퍼샌드 치환 변수 사용
단일 앰퍼샌드(&) 치환 변수를 사용하여 값을 임시로 저장할 수 있습니다. 또한 DEFINE 명령을 사용하여 변수를 미리 정의할 수도 있습니다. DEFINE은 변수를 생성하고 값을 할당합니다.
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num ;
-문자 및 날짜 값을 치환 변수로 지정
날짜 값 및 문자 값에 대해 작은 따옴표를 사용합니다.
SELECT last_name, department_id, salary*12 FROM employees
WHERE job_id = '&job_title' ;
#날짜와 문자는 반드시 ‘’로 감싸도록 합니다.
-열 이름 , 표현식 및 텍스트 지정
SELECT employee_id, last_name, job_id,&column_name
FROM employees
WHERE &condition
ORDER BY &order_column ;
#슬라이드의 예제는 EMPLOYEES 테이블에서 사원 번호, 성, 직책 및 런타임 시 유저가 지정한 기타 열을 표시합니다. SELECT 문의 각 치환 변수에 대해 값을 입력하도록 요청하면 OK를 눌러 계속 진행합니다.
치환 변수는 SQL 문의 WHERE 절에 사용할 수 있을 뿐만 아니라 열 이름 , 표현식 또는 텍스트를 치환하는 데 사용할 수도 있습니다.
-이중 앰퍼샌드 치환 변수 사용
유저가 매번 값을 입력할 필요 없이 변수 값을 재사용하려는 경우 이중 앰퍼샌드(&&)를 사용합니다. 유저는 값을 한 번만 입력하면 됩니다.
SELECT employee_id, last_name, job_id, &&column_name
FROM employees
ORDER BY &column_name ;
유저가 제공하는 값(department_id)은 데이터를 표시하고 순서를 지정하는 데 사용됩니다. query를 다시 실행하면 유저에게 해당 변수 값을 입력하라고 요청하지 않습니다.
SQL Developer는 DEFINE 명령을 사용하여 제공한 값을 저장한 다음 변수 이름이 참조될 때마다 다시 사용합니다. 유저 변수가 배치된 후에 다음과 같이 UNDEFINE 명령을 사용하여 삭제해야 합니다.
-DEFINE 명령 사용
• DEFINE 명령을 사용하여 변수를 생성하고 값을 할당합니다.
• UNDEFINE 명령을 사용하여 변수를 제거합니다.
DEFINE employee_num = 200
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE employee_id = &employee_num ;
UNDEFINE employee_num
DEFINE 명령을 사용하여 생성되기 때문에 유저에게 사원 번호에 대한 값을 입력하도록 요청하지 않습니다. 대신 정의된 변수 값이 SELECT 문에서 자동으로 치환됩니다. EMPLOYEE_NUM 치환 변수는 유저가 해당 변수의 정의를 해제하거나 SQL Developer 세션을 종료할 때까지 세션에 남아 있습니다.
-VERIFY 명령 사용
VERIFY 명령을 사용하여 SQL Developer가 치환 변수를 값으로 바꾸기 전후에 치환 변수의 표시를 토글합니다.
SET VERIFY ON SELECT employee_id, last_name, salary
FROM employees
WHERE employee_id = &employee_num;
SET VERIFY를 ON으로 설정하면 SQL Developer가 치환 변수를 값으로 바꾼 후의 명령 텍스트가 표시됩니다. VERIFY 출력을 보려면 SQL Worksheet에서 Run Script(F5) 아이콘을 사용해야 합니다. SQL Developer는 치환 변수를 값으로 바꾼 후 슬라이드에 나오는 것처럼 Script Output 탭에 명령 텍스트를 표시합니다.
'ORACLE' 카테고리의 다른 글
6. [Oracle] 조인을 사용하여 여러 테이블의 데이터 표시해보자. (0) | 2020.01.06 |
---|---|
5. [Oracle] 그룹함수를 사용해보자. (0) | 2019.12.28 |
4. [Oracle] 변환 함수와 조건부 표현식을 사용해보자. (0) | 2019.12.28 |
3.[Oracle] 단일 행 함수를 사용하여 출력 커스터마이즈를 해보자. (0) | 2019.12.28 |
1. [Oracle] SELECT문을 사용해 보자. (0) | 2019.12.28 |