<SELECT-WHERE 절의 IN, NOT IN 연산자>

 

  • employees테이블에서 직원중에 salary가 4000이거나 3000이거나 2700인 직원정보를 출력한다.

1
2
3
4
SELECT *
FROM employees
WHERE salary = 4000
OR salary = 3000 OR salary = 2700;
cs

 

 

 

  • IN연산자는 연산을 줄여준다.

1
2
3
SELECT *
FROM employees
WHERE salary IN (400030002700);
cs

 

 

 

 

 

 

<IN 예제>

 

  • employees테이블에서 salary가 10000, 17000, 24000인 직원정보를 출력

1
2
3
SELECT *
FROM employees
WHERE salary IN (100001700024000);
cs

 

 

 

  • employees테이블에서 department_ID가 30, 50, 80, 100, 110이 아닌 직원정보를 출력

1
2
3
SELECT *
FROM employees
WHERE department_id NOT IN (305080100110);
cs

 

 

 

 

'Learning > SQL' 카테고리의 다른 글

LIKE 연산자  (0) 2020.06.15
BETWEEN  (0) 2020.06.12
AND, OR  (0) 2020.06.12
SELECT-WHERE 절  (0) 2020.06.12
SELECT 문  (0) 2020.06.12

<SELECT-WHERE절의 AND, OR>

 

  • employees테이블에서 department_id가 60이거나 (department_id가 80이면서 salary가 10000이상)인 직원정보 출력

1
2
3
4
SELECT *
FROM employees
WHERE department_id=60 OR
(department_id=80 AND salary >= 10000);
cs

 

괄호에 의해 'department_id가 80이면서 salary가 10000이상'인 직원정보와 department_id가 60인 직원정보가 출력된다.

 

 

 

  • employees테이블에서 (department_id가 60이거나 department_id가 80)이고 salary가 10000이상인 직원정보 출력

1
2
3
4
SELECT *
FROM employees
WHERE ( department_id=60 OR
department_id=80) AND salary >= 10000;
cs

 

괄호에 의해 department_id가 60이거나 80이고 salary가 10000이상인 직원정보가 출력된다. salary가 10000이상이면서 department_id가 60인 직원은 없다.

 

 

 

 

  • employees테이블에서 hire_date가 2008년 4월 4일 이후이거나 salary가 13000이상이고 job_id가 AD_VP인 직원 정보 출력

1
2
3
4
SELECT *
FROM employees
WHERE hire_date > '08/04/04' OR salary >= 13000
AND job_id = 'AD_VP';
cs

 

괄호가 없는 경우 AND가 먼저 계산된다.

salary가 13000이상이거나 job_id가  AD_VP인 직원정보와, hire_date가 2008년 4월 4일인 직원정보가 출력된다.

 

 

 

 

  • employees테이블에서 hire_date가 2004년 1월 1일 이전이고 salary가 5000이하인 직원정보를 출력

1
2
3
4
SELECT *
FROM employees
WHERE NOT(hire_date > '04/01/01' OR salary > 5000);
--(hire_date<='04/01/01' AND salary <=5000)
cs

 

hire_date가 2004년 1월 1일 이전이고 salary가 5000이하인 직원정보가 출력된다.

 

 

 

 

 

<AND OR 예제>

 

  • employees테이블에서 salary가 4000을 초과하면서, job_id가 IT_PROG인 직원정보를 출력

1
2
3
SELECT *
FROM employees
WHERE salary > 4000 AND job_id='IT_PROG';
cs

 

 

 

  • employees테이블에서 salary가 4000을 초과하면서, job_id가 IT_PROG이거나 FI_ACCOUNT인 직원정보를 출력

1
2
3
SELECT *
FROM employees
WHERE salary > 4000 AND (job_id='IT_PROG' OR job_id='FI_ACCOUNT');
cs

 

 

 

 

'Learning > SQL' 카테고리의 다른 글

BETWEEN  (0) 2020.06.12
IN, NOT IN  (0) 2020.06.12
SELECT-WHERE 절  (0) 2020.06.12
SELECT 문  (0) 2020.06.12
오라클 XE, SQL Developer 설치 후 설정  (0) 2020.06.12
    • WHERE절은 FROM절 다음에 위치한다.

 

    • employees테이블에서 department_id가 90인 직원정보를 출력

1
2
3
SELECT *
FROM employees
WHERE department_id=90;
cs

 

 

 

 

  • employees테이블에서 salary가 24000인 직원정보를 출력
1
2
3
SELECT *
FROM employees
WHERE salary=24000;
cs

 

 

 

  • WHERE절 사용시 주의점

    • 문자(String)과 날짜(Date) 값은 항상 작은따옴표(')로 표시

    • 명령어는 대소문자를 구분하지 않지만 문자열은 대소문자를 구분한다. (Case-Sensitive)

    • 날짜값은 날짜포맷에 벗어나지 않도록 (Format-Sensitive)

    • 오라클의 날짜포맷은 RR/MM/DD (RR은 2자리 년도)

 

 

1.WHERE+문자열

  • employees테이블에서 first_name이 Steven인 직원정보를 출력
1
2
3
SELECT employee_id, first_name, last_name, job_id
FROM employees
WHERE first_name='Steven';
cs

 

 

 

  • first_name은 자료형이 문자열이기 때문에 Steven에는 작은따옴표를 써줘야한다.

 

 

 

2.WHERE+날짜

  • employees테이블에서 hire_date가 2003년 6월 17일 이후인 직원정보를 출력
1
2
3
SELECT *
FROM employees
WHERE hire_date>='03/06/17'--년도/월/날짜
cs

 

 

 

 

3.WHERE절 비교연산자

    • 날짜 비교

1
2
3
SELECT *
FROM employees
WHERE hire_date>='03/06/32'--년도/월/날짜
cs

 

(32일은 없기 때문에 에러가 난다.)

 

    • 숫자비교

  • employees테이블에서 salary가 10000이상인 직원정보를 출력
1
2
3
SELECT *
FROM employees
WHERE salary>=10000;
cs

 

 

    • 문자비교 (알파벳순)

  • employees테이블에서 first_name이 King보다 큰 직원정보를 출력 (l, m, n, o, p, q...)
1
2
3
SELECT *
FROM employees
WHERE first_name>'King';
cs

 

 

예제)

    • employees테이블에서 employee_id가 100인 직원 정보 출력

1
2
3
SELECT *
FROM employees
WHERE employee_id=100;
cs

 

 

    • employees테이블에서 first_name이 David인 직원 정보를 출력

1
2
3
SELECT *
FROM employees
WHERE first_name='David';
cs

 

 

    • employees테이블에서 employee_id가 105 이하인 직원 정보를 출력

1
2
3
SELECT *
FROM employees
WHERE employee_id<=105;
cs

 

 

    • job_history테이블에서 start_date가 2006년 3월 3일 이후인 정보를 출력

1
2
3
SELECT *
FROM job_history
WHERE start_date>'06/3/3';
cs

 

 

    • departments테이블에서 location_id가 1700이 아닌 모든 부서를 출력

1
2
3
SELECT *
FROM departments
WHERE location_id<>1700--!=1700
cs

 



 

'Learning > SQL' 카테고리의 다른 글

BETWEEN  (0) 2020.06.12
IN, NOT IN  (0) 2020.06.12
AND, OR  (0) 2020.06.12
SELECT 문  (0) 2020.06.12
오라클 XE, SQL Developer 설치 후 설정  (0) 2020.06.12

+ Recent posts