DATA 전문가로 가는 길

[Oracle 10g] 조건 검색 및 행의 정렬 본문

Data Architecture/Beginner

[Oracle 10g] 조건 검색 및 행의 정렬

EstenPark 2009. 12. 9. 21:41
 1. WHERE 절


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;

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 참조)로 수행
    SELECT last_name, job_id
    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는 오름 차순으로 정렬하고 급여는 내림차순으로 정렬

 

 


Comments