공부/Database 복습

2.Database WHERE

ChoiDooSic 2021. 7. 18. 01:04

/*
    # SELECT 컬럼명 FROM 테이블명 WHERE 조건절;
    
     - SELECT문에 조건을 추가하여 해당 조건을 만족하는 행들만 조회할 수 있다
     
    # 비교 연산자
     = : 같다
     <, >, <=, >= : 비교
     !=, <>, ^= : 다르다
*/

SELECT * FROM employees WHERE salary = 7000;
SELECT * FROM employees WHERE salary > 7000;
SELECT * FROM employees WHERE 7000 < salary;
SELECT * FROM employees WHERE salary <> 7000;

SELECT * FROM employees WHERE salary = 7000; 을 실행한 결과이다.


--오라클의 문자열 리터럴은 ''만 허용한다
SELECT * FROM employees WHERE first_name = 'Oliver';
SELECT * FROM employees WHERE first_name = 'OLiver';
SELECT * FROM employees WHERE first_name > 'Oliver';

SELECT * FROM employees WHERE first_name > 'Oliver'; 의 실행결과 편리하게 문자열의 값도 계산해준다.


SELECT * FROM employees WHERE hire_date = '03/06/17';
SELECT * FROM employees WHERE hire_date < '03/06/17';
SELECT * FROM employees WHERE hire_date > '03/06/17';

--AND, OR, NOT    엔드 =>&& , 올 =>||
SELECT * FROM employees WHERE hire_date < '03/06/17' AND hire_date > '02/01/01';

SELECT * FROM employees WHERE hire_date < '03/06/17' AND hire_date > '02/01/01';의 실행결과이다  3년6월17일보다 작고 2월1월1일보다 큰 값들만 출력해주었다.


/*
    연습1: 2000에서 3000사이의 월급을 받는 사원들의 모든 정보를 조회해보세요
    
    연습2: 부서번호가 30번이거나 60번이거나 90번인 사원들의
        이름/직책/이메일을 조회해보세요

*/
SELECT * FROM employees WHERE salary >= 2000 AND salary <= 3000;

-- COLUMN BETWEEN A AND B : 해당 컬럼 값이 A이상 B이하인 경우
SELECT * FROM employees WHERE salaary BETWEEN 2000 AND 3000;

SELECT 
    first_name,
    job_id,
    email
FROM 
    employees
WHERE department_id = 30 OR department_id =60 OR department_id =90;

--COLUMN IN (A, B, ...) : ()안의 내용 중 하나인 경우 참
SELECT * FROM employees WHERE department_id IN (30,60,90);

SELECT * FROM employees WHERE department_id IN (30,60,90); 의 실행 결과이다.


-- commission_pct가 null인 사원을 모두 조회
SELECT * FROM employees WHERE commission_pct = null;
SELECT * FROM employees WHERE commission_pct != null;

--NULL은 값이 아니기 때문에 어떤 값과도 크기 비교가 불가능하다
SELECT * FROM employees WHERE commission_pct IS NULL;
SELECT * FROM employees WHERE commission_pct IS NOT NULL;
SELECT * FROM employees WHERE NOT commission_pct IS NULL;

--NOT의 위치는 자유롭다
SELECT * FROM employees WHERE department_id NOT IN (30,60,90);
SELECT * FROM employees WHERE NOT department_id IN (30,60,90);

/*
    # LIKE
    
     - 데이터의 일부분으로 원하는 내용을 검색할 수 있는 문법
     - 문자 타입과 날짜 타입에 모두 사용할 수 있다
     - % : 길이 제한 없이 아무 문자열이나 와도 되는 자리 (없는 것도 됨)
     - _ : 하나의 아무 문자나 와도 되는 자리
*/
SELECT last_name FROM employees WHERE last_name LIKE 'G%';
SELECT last_name FROM employees WHERE last_name LIKE 'G____';
SELECT last_name FROM employees WHERE last_name LIKE '_r%'; --두번째 글자가 r인 애들
SELECT last_name FROM employees WHERE last_name LIKE '%r__'; --뒤에서 세번째 글자가r인 애들

SELECT last_name FROM employees WHERE last_name LIKE 'G%'; 를 실행한 결과이다 라스트 네임의 첫 글자가 G인 사람들만 출력되었디.


/*
    연습1: 이름이 a로 끝나는 모든 사원을 조회
    
    연습2: 이름에 e가 두개 이상 포함된 모든 사원을 조회
    
    연습3: 이름이 다섯 글자면서 가운데에 a또는 e가 들어가는 모든 사원을 조회
*/
SELECT * FROM employees WHERE first_name LIKE '%A';
SELECT * FROM employees WHERE first_name LIKE '%e%e%';
SELECT * FROM employees WHERE first_name LIKE '__a__' OR first_name LIKE '__e__';

SELECT
    *
FROM
    employees
WHERE
    first_name LIKE '__a__'
    OR first_name LIKE '__e__';

--UNION ALL : 두 쿼리문의 합집합
SELECT first_name, salary FROM employees WHERE first_name LIKE '__a__'
UNION ALL
SELECT first_name, salary FROM employees WHERE first_name LIKE '__g__';

SELECT first_name, salary FROM employees WHERE first_name LIKE '__a__' UNION ALL SELECT first_name, salary FROM employees WHERE first_name LIKE '__g__'; 의 실행결과이다 5글자이며 가운데 글자가 a와 g인 사람들의 월급이 출력되었다.


-- INTERSECT : 두 쿼리문의 교집함 // 공통되는 값
SELECT * FROM employees WHERE first_name LIKE '%%%a%'
INTERSECT
SELECT * FROM employees WHERE first_name LIKE '%%%e%';

SELECT * FROM employees WHERE first_name LIKE '__a__'
UNION ALL
SELECT * FROM employees WHERE first_name LIKE '__e__'
INTERSECT
SELECT * FROM employees WHERE first_name LIKE '__a__';

--MINUS : 차집합
SELECT * FROM employees WHERE first_name LIKE '__a__'
MINUS
SELECT * FROM employees WHERE first_name LIKE '__e__';

'공부 > Database 복습' 카테고리의 다른 글

6.Database 조인  (0) 2021.08.01
5.Database 정렬  (0) 2021.07.26
4.Database 그룹 함수  (0) 2021.07.19
3.Database 함수  (0) 2021.07.19
1.데이터베이스 SELECT  (0) 2021.07.17