일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- mariaDB
- perl one-liner
- solaris
- SQL
- memory
- sqlplus
- 연산자
- prompt
- Oracle RAC
- MySQL
- cygwin
- fdisk
- php5
- perl + 정규표현식
- grid
- PERL
- oracle install
- bash
- command & perl
- RHEL4
- oracle
- dba
- perl string
- Linux
- patch
- Unix
- rac
- 오라클
- solaris network
- Network
Archives
- Today
- Total
DATA 전문가로 가는 길
[Oracle 10g] 조건 검색 및 행의 정렬 본문
1. WHERE 절
1-2-4 연산자 우선 순위
WHERE 절은 FROM 절 다음에 위치하며 WHERE 절을 사용하여 반환 되는 행의 제한 함.
문자열 및 날짜 값은 작은 따옴표(' ')로 묶음
문자 값은 대소문자를 구분하여 날짜 값은 날짜 형식을 구분함
1-2. 연산자(Operator)
종류 | 연산자 |
산술 연산자 | + - * / mod |
연결 연산자 | || |
비교 연산자 | < <= > >= <> |
BETWEEN ..AND...IN LIKE IS NULL | |
논리 연산자 | NOT AND OR |
- 단항 연산자
- 피연산자의 개수가 1개를 필요로 하는 연산자 표현방식은 연산자 op 1
- salary : 음수
- 이항 연산자
- 피연산자의 개수가 2개를 필요로 하는 연산자 표현방식은 op1 연산자 op2
- salary - 3 : 빼기 연산
1-2-1 산술연산자
연산자 | 설명 |
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
- 산술 연산자를 사용하여 숫자 및 날짜 데이터에 대한 표현식을 작성
- 표현식(Expression)
- 표현식은 연산자, 컬럼 이름, 상수 숫자 값, 문자 값 등을 포함
- 계산 및 비교 등을 위한 수식을 의미 즉, 다양한 연산자를 사용하여 새로운 값을 만들어 내는 문장을 말함
- 12 * salary => 산술
- 'My name is '||ast_name => 문자식
- 널 값 처리 방법
- 만약 산술 연산자를 사용하여 게산식을 하면 값이 없는 부분은 NULL로 처리
- SELECT last_name, salary + 300 FROM employees
- 위와같이 salary의 모든 행에 대한 필드 값을 모두 300을 더하는데 값이 없는 필드는 NULL로 표시
- 이러한 문제점을 해결하는 방법은 NVL 함수를 활용
- NVL(expr1, expr2)
- NVL(salary+3, 0)
- SELECT last_name, NVL(salary+3, 0) FROM employees
- 만약 salary의 필드 값이 NULL이면 0으로 대입
1-2-2 연결 연산자
컬럼 또는 문자열을 다른 컬럼에 연결
두 개의 파이프라인(키보드에서는 버티컬 바라고함) || 사용
문자식(Character Expression)에 해당하는 결과 컬럼 생성
좌우에 있는 컬럼이 결합되어 하나의 컬럼으로 출력 됨
SELECT '사번' || employee_id || '의 성명 : ' || last_name
AS "사원 상세 정보"
FROM employees;
AS "사원 상세 정보"
FROM employees;
1-2-3 비교 연산자
연산자 | 의미 |
= | 같음 |
> | 보다 큼 |
>= | 크거나 같음 |
< | 보다 작음 |
<= | 작거나 같음 |
<> | 같지 않음 |
BETWEEN AND | 두 값 사이(지정한 값 포함) |
IN | 값 목록 중의 값과 일치 |
LIKE | 문자 패턴 일치 |
IS NULL | 널값 |
IS NOT NULL | 널이 아닌 경우 |
- LIKE 조건
- 검색 할 값을 정확하게 알지 못하는 경우에 사용하며 wildcard를 사용하여 문자열 검색을 한다.
- % : 모든 내용을 검색
- _ : 문자 한자를 의미
- 응용 1 : LIKE 'lo_E'
- lovE로 된 필드의 값을 출력
- 응용 2 : LIKE 'Mc%'
- Mc로 시작하는 내용을 모두 출력
1-2-3 논리 연산자
연산자 | 의미 |
AMD | 구성 요소 조건이 모두 TRUE이면 TRUE를 반환 |
OR | 구성 요소 조건 중 하나라도 TRUE면 TRUE를 반환 |
NOT | 뒤따르는 조건이 FALSE면 TRUE를 반환 |
1-2-4 연산자 우선 순위
우선순위 | 연산자 |
1 | 산술 연산자 |
2 | 연결 연산자 |
3 | 비교 조건 |
4 | IS[NOT] NULL, LIKE, [NULL], IN |
5 | [NOT] BETWEEN |
6 | NOT 논리 조건 |
7 | AND 논리 조건 |
8 | OR 논리 조건 |
단, 괄호를 사용하면 우선순위가 변경 된다.
SELECT last_name, job_id
FROM employees
WHERE job_id = 'SA_REP'
OR job_ID = 'AD_PRES'
AND salary > 15000;
* 파란색이 첫번째(표:7 참조)로 수행하고 주황색이 두번째(표: 8 참조)로 수행
FROM employees
WHERE job_id = 'SA_REP'
OR job_ID = 'AD_PRES'
AND salary > 15000;
* 파란색이 첫번째(표:7 참조)로 수행하고 주황색이 두번째(표: 8 참조)로 수행
SELECT last_name, job_id
FROM employees
WHERE ( job_id = 'SA_REP'
OR job_ID = 'AD_PRES' )
AND salary > 15000;
* 괄호( () )를 사용 할 경우는 반대로 주항색이 첫번째로 수행하고 파란색이 두번째로 수행
FROM employees
WHERE ( job_id = 'SA_REP'
OR job_ID = 'AD_PRES' )
AND salary > 15000;
* 괄호( () )를 사용 할 경우는 반대로 주항색이 첫번째로 수행하고 파란색이 두번째로 수행
2. 결과 행의 정렬
원하는 방법대로 정렬 하고 싶을때 사용 한다.
2-1 ORDER BY절
- 행 정렬
- ASC : 오름 차순, 기본값(default)
- DESC : 내림차순
- SELECT 문의 가장 끝에 위치
- 입사한 사원 순으로 정렬 한다면..
SELECT ** 널 값은 오름 차순에서는 마지막이고, 내림차순에서는 처음에 표시
FROM employees
ORDER BY hire_date DESC;
- 여러가지 컬럼을 기준으로 정렬
SELECT *
FROM employees
ORDER BY department_id, salary DESC;
* 내용을 보면 부서ID는 오름 차순으로 정렬하고 급여는 내림차순으로 정렬
'Data Architecture > Beginner' 카테고리의 다른 글
[ Oracle ] SQLPLUS(SQL*PLUS) 프롬프트 변경하기, 환경설정 및 명령어 사용 방법 (0) | 2011.01.19 |
---|---|
[ Oracle ] SQLPLUS 방향키 자유롭게 사용하는 방법 [LINUX, Solaris10 적용 가이드] (1) | 2011.01.11 |
[ Oracle - SQL ] 관계형 데이터베이스 개념 (2) | 2011.01.10 |
[Oracle] SQL 함수의 정의 (0) | 2009.12.21 |
Comments