연산자(Operator)
WHERE 절에서 사용할 수 있는 연산자의 종류
한가지 주의할 점은 NULL을 비교하기 위해서 '=' 연산자를 사용하지 않고 대신 'IS NULL' 연산자를 사용한다. 만약 '=' 연산자를 사용하면 컬럼 값 중에 'NULL'이라는 문자열 데이터를 가진 행을 검색하므로 주의해야 한다. 그리고 NULL이 아닌 행을 검색할 때는 IS NOT NULL 연산자를 사용한다.비교 연산자 비교 연산자는 where절에서 숫자, 문자, 날짜의 크기나 순서를 비교하는 연산자이다. 논리 연산자 WHERE 절에서 여러 개의 조건을 결합할 경우 SQL 연산자 비교연산자와 논리 연산자는 프로그래밍 언어의 IF 문에서도 지원되는 연산자이지만, SQL 연산자는 SQL 언어에서만 제공하는 편리한 기능이다.
SQL 연산자는 BETWEEN a AND b, IN, LIKE, IS NULL 연산자가 있으며, 모든 데이터 타입에 대해 사용할 수 있다.NULL 연산자 NULL은 미확인 값이나 아직 적용되지 않은 값을 의미하는 연산자이다 SET(집합) 연산자 SQL에서 제공하는 집합 연산자는 합집합(UNION, UNION ALL), 차집합(MINUS), 교집합(INTERSECT) 연산자가 있다. 한가지 주의할 점은 수학에서는 두 집합을 구성하는 원소의 종류가 서로 다르더라도 집합 연산이 가능하지만, SQL 문에서 집합 연산자를 사용하기 위해서는 집합 연산의 대상이 되는 두 테이블의 컬럼 수가 같고, 대응되는 컬럼끼리 데이터 타입이 동일해야 한다
컬럼 이름은 달라도 상관 없으며, 집합 연산의 결과로 출력되는 컬럼의 이름은 첫 번째 SELECT 절의 컬럼 이름을 따른다.UNION 첫 쿼리와 둘 째 쿼리에서 중복되지 않게 모든 행을 추출 UNION ALL 첫 쿼리와 둘 째 쿼리에서 중복을 허용한 모든 행을 추출 INTERSECT 첫 쿼리와 둘 째 쿼리에서 중복되는 행만 추출 MINUS 첫 쿼리중 둘 째 쿼리에 없는 행만 추출 multiset 연산자 두 개의 nested table을 하나의 nested table로 combine하는 것 MULTISET EXCEPT 첫 nested 테이블에 있는 것중에서 둘 째 nested 테이블에 있는 것은 제외 MULTISET INTERSECT 두 nested 테이블에 공통으로 있는 것만 MULTISET UNION 두 nested 테이블에 중복되지 않게 있는 모든 것 계층적 질의 연산자 PRIOR, CONNECT_BY_ROOT가 계층적 질의 연산자임 연결 연산자(¦¦) 합성(concatenation) 연산자 '¦¦'는 하나의 컬럼과 다른 컬럼, 산술 표현식 또는 상수 값과 연결하여 하나의 컬럼처럼 출력할 경우에 사용하는 연산자이다. 산술 연산자
(가감승제)비교되는 컬럼을 *, /, +, -와 같은 산술 표현식을 사용할 수 있다. 산술연산자의 우선순위는 곱셈, 나눗셈, 덧셈, 뺄셈과 같으며, 동일 우선순위는 왼쪽에서 오른쪽으로 계산한다. 사용자 정의 연산자 CREATE OPERATOR 문으로 연산자를 생성할 수 있음 연산자 우선 순위 WHERE 절에서 두 개 이상의 연산자를 결합하여 조건절을 구성할 수 있다. 결과 값은 연산자의 우선 순위에 따라 결정된다.
연산 순서는 우선 순위가 높은 순에서 낮은 순으로 수행하고 동일한 우선 순위를 가진 연산자는 왼쪽에서 오른쪽으로 수행한다. 그리고 괄호를 사용하여 연산자의 우선 순위를 변경할 수 있다.floating-point condition IS [NOT] NAN, IS [NOT] INFINITE
'Oracle' 카테고리의 다른 글
오라클 총정리 파일 (0) | 2012.04.24 |
---|---|
연습문제 (0) | 2012.04.09 |
SQLPuls 기본 명령어 (0) | 2012.04.07 |