[SQL] 조건 검색

오라클/SQL 2010. 8. 10. 00:58

◆ 조건 검색 방법

SQL> select column
   from table_name
   where condition;
where절 이후에 원하는 조건을 써주면 된다.


◆ 비교 연산자
 연산자  의미
 =  같다.
 !=, <>  같지 않다.
 >  크다.
 >=  크거나 같다.
 <  작다.
 <=  작거나 같다.


◆ 논리 연산자
 연산자  의미
 AND  모든 조건이 참일 때 참값을 반환
 OR  모든 조건 중 하나라도 참일 때 참값을 반환
 NOT  조건과 반대되는 결과를 반환


◆ 연산자 우선순위
 우선순위  연산자
 1  비교연산자(=, !=, <>, >, >=, <, <=)
 SQL연산자(BETWEEN, IN, LIKE, IS NULL)
 2  NOT
 3  AND
 4  OR


◆ BETWEEN 연산자
  - 특정 컬럼의 데이터 값이 하한값과 상한값 사이에 포함되는 행을 검색하기 위한 연산자
SQL> select column
   from table_name
   where condition_column between 하한값 and 상한값;
나중에 튜닝을 배우면 알겠지만, between 연산자를 쓰는 것보다는 비교연산자(>=, <= 등)를 쓰는 것이 훨씬 더 빠른 속도를 보장한다.


◆ IN 연산자
  - 특정 컬럼의 데이터 값이 a, b, c, ... 중에 하나라도 일치하면 참이 되는 연산자
SQL> select column
   from table_name
   where condition_column in (a, b, c, ...);


◆ LIKE 연산자
  - 컬럼에 저장된 문자열 중에서 지정한 문자패턴과 부분적으로 일치하면 참이 되는 연산자.
  - % : 임의의 길이의 문자열(길이가 0인 경우도 포함)에 대한 와일드 문자. 윈도에서의 *와 같은 의미.
  - _ : 임의의 한 문자에 대한 와일드 문자. 윈도에서의 ?와 동일한 의미.
SQL> select column
   from table_name
   where condition_column like 'pattern';
[문제] 성 부분에 'ㅇ' 으로 시작하는 학생의 이름을 출력하라.

SCOTT> select name
  2   from student
  3   where name between '아%' and '자%';

NAME
----------
이동훈
오유석
임유진
윤진욱
이광훈
한글일 경우에는 2바이트 문자이므로 절대 자음, 모음만으로는 출력 불가능하다. 위와 같은 방식으로 ㅇ의 범위를 지정해야 한다.


◆ NULL 연산자
널은 값이 정해져 있지 않고 어떤 값인지 모른다를 뜻함.(숫자 0이나 공백 문자와는 다른 의미임)
널값에 무슨 짓을 해도 그 결과값은 널이다.
is null : 컬럼 값 중에서 널을 포함하는 행을 검색하기 위해 사용
is not null : 컬럼 값 중에서 널을 포함하지 않는 행을 검색하기 위해 사용
SQL> select column
   from table_name
   where condition_column1 is null
   and condition_column2 is not null;


◆ 집합 연산자
 연산자  의미
 UNION  두 집합에 대해 중복되는 행을 제외한 합집합
 UNION ALL  두 집합에 대해 중복되는 행을 포함한 합집합
 MINUS  두 집합간의 차집합
 INTERSECT  두 집합간의 교집합
SQL> select statement1
         [UNION | UNION ALL | INTERSECT | MINUS]
         select statement2;
UNION ALL은 정렬을 하지 않아 속도는 빠르나 결과값에 중복이 있다.
UNION은 정렬을 해주어 속도는 느리나 결과값에 중복은 없다.
INTERSECT는 정렬을 해준 후 두 집합에서 같은 부분만 추출하는 형식으로 동작함.
MINUS는 두 문장간의 순서를 주의해서 사용해야 함.


◆ 정렬
SQL문에서 데이터를 정렬하기 위해서는 ORDER BY절을 사용한다.
ORDER BY절은 모든 쿼리문에서 가장 마지막에 들어간다.
DISTINCT같은 경우는 하나의 컬럼에 적용해도 모두 적용되는데, ORDER BY는 컬럼별로 적용한다.
ORDER BY는 성능에 안좋은 영향을 주는 요인 중의 하나로써, 나중에 ORDER BY를 안쓰고도 정렬된 결과를 내게끔 하는 방법을 배운다.
문자값 : 알파벳 순으로 출력. 한글은 가나다 순으로 출력
숫자값 : 가장 작은 값부터 먼저 출력
날짜값 : 과거의 날짜부터 출력
SQL> select column
   from table_name
   order by {column, expression} [ASC | DESC]

SQL> select column1, column2
   from table_name
   order by column2 desc, 1 asc;
ORDER BY절에는 컬럼이나 표현식이 들어갈 수 있다.
ASC는 오름차순으로 생략시 기본값이다.
DESC는 내림차순이다.
ORDER BY는 다중컬럼에서도 적용 가능한데, 컬럼끼리 콤마로 구분하고 select에서 써준 컬럼의 위치순서에 따라 정렬할 수도 있다.

'오라클 > SQL' 카테고리의 다른 글

[SQL] 그룹함수  (0) 2010.08.16
[SQL] SQL 함수  (0) 2010.08.11
[SQL] 오라클 데이터 타입  (0) 2010.08.09
[SQL] SELECT 문장 사용 방법  (0) 2010.08.09
[SQL] SQL의 기본 흐름  (0) 2010.08.09
Posted by 겨울섬
,