[프로그래밍] DataBase

[DATABASE] ORACLE 연산자

JHVan 2024. 11. 11. 13:38

데이터베이스 쿼리에서 값을 조작하거나 비교하기 위해 사용

주요 연산자

1. 산술 연산자 : 수학적 계산 수행

종류 : + , - , * , / 

 

2. 비교 연산자 : 두 값의 비교를 통해 조건을 평가

종류 : = , <> , != , > , < , >= , <=

 

3. 논리 연산자 : 여러 조건을 결합하거나 논리적 평가 수행

종류 : AND , OR , NOT

 

4. BETWEEN 연산자 : 특정 번위 내의 값을 확인

예시

SELECT * FROM Patients WHERE birth_date BETWEEN '1990-01-01' AND '2000-12-31';

 

5. IN 연산자 : 열 값이 지정된 값 목록 중 하나와 일치하는지 확인

예시

SELECT * FROM Patients WHERE gender IN ('M', 'F');

 

6. LIKE 연산자 : 특정 패턴과 일치하는지 확인

예시

SELECT * FROM Patients WHERE first_name LIKE 'J%';
-- 'J'로 시작하는 이름을 찾습니다.

 

7. IS NULL 연산자 : 열 값이 NULL 인지 확인

예시

SELECT * FROM Patients WHERE contact_number IS NULL;

 

8. 계층형 쿼리 연산자 : 계층 구조(트리 구조)를 표현할 때 사용되며, 조직도, 카테고리 트리 등의 계층적 데이터를 처리할 때 사용

주요 연산자 : CONNECT BY, START WITH

예시

-- 병원 조직에서 의사와 인턴의 계층 구조를 조회
SELECT doctor_id, name, supervisor_id, LEVEL
FROM Doctors
START WITH supervisor_id IS NULL  -- 최고 책임자(예: 병원장)를 기준으로 시작
CONNECT BY PRIOR doctor_id = supervisor_id;  -- 상사 ID를 기준으로 계층적 관계를 설정
  • LEVEL : 현재 행의 계층 수준을 나타매는 가상 열
  • PRIOR : 연결 조건에서 사용되며 부모와 자식 노드를 정의

8. SET 연산자 : 두 개 이상의 SQL 쿼리 결과를 합치거나 비교할 때 사용

주요 연산자 : 

 

  • UNION: 두 쿼리의 결과를 합집합으로 반환하며, 중복된 행은 제거
  • UNION ALL: 두 쿼리의 결과를 합집합으로 반환하지만 중복된 행도 포함
  • INTERSECT: 두 쿼리의 결과에 모두 존재하는 행을 반환
  • MINUS (또는 EXCEPT): 첫 번째 쿼리 결과에서 두 번째 쿼리 결과에 포함되지 않은 행을 반환

사용예:

-- General 부서와 Cardiology 부서의 모든 환자 목록을 중복 없이 조회
SELECT patient_id, name FROM Patients WHERE department = 'General'
UNION
SELECT patient_id, name FROM Patients WHERE department = 'Cardiology';

-- General 부서와 Cardiology 부서의 모든 환자 목록을 중복 포함 조회
SELECT patient_id, name FROM Patients WHERE department = 'General'
UNION ALL
SELECT patient_id, name FROM Patients WHERE department = 'Cardiology';

-- General 부서와 Cardiology 부서에 모두 포함된 환자 조회
SELECT patient_id, name FROM Patients WHERE department = 'General'
INTERSECT
SELECT patient_id, name FROM Patients WHERE department = 'Cardiology';

-- General 부서에만 있고 Cardiology 부서에는 없는 환자 조회
SELECT patient_id, name FROM Patients WHERE department = 'General'
MINUS
SELECT patient_id, name FROM Patients WHERE department = 'Cardiology';

 

'[프로그래밍] DataBase' 카테고리의 다른 글

[DATABASE] ORACLE JOIN  (0) 2024.11.11
[DATABASE] ORACLE 함수와 표현식  (0) 2024.11.11
[DATABASE] ORACLE SQL  (3) 2024.11.11
[DataBase] SQL 구문  (0) 2024.05.15
[DataBase] SQL  (0) 2024.05.15