본문 바로가기
Oracle SQL Developer

SQL WHERE

by wanttosleep1111 2023. 1. 23.

SQL WHERE

 

※ 연습 데이터

makeData.sql
0.01MB

 

WHERE : 테이블에서 내가 원하는 튜플만 조건에 따라 뽑아옴

비교 조건 =, !=, >, <, >=, <= 등
논리 조건 AND, OR, NOT
산술 조건 +, -, *, /
결합 조건 ||
NULL 조건 IS NULL, IS NOT NULL
SQL 연산자 IN, LIKE, BETWEEN

 


 

1. 비교 조건

 

① 성별이 '남'인 직원들의 정보를 모두 출력

SELECT *
  FROM 직원
 WHERE 성별 = '남';

 

② 연봉이 8000이상인 직원들의 직원ID, 이름, 나이, 입사일시 출력

SELECT 직원ID
     , 이름
     , 나이
     , 입사일시
  FROM 직원
 WHERE 연봉 >= 8000 ;

 

③ 연봉이 9000보다 큰 직원들의 직원ID, 이름, 나이, 입사일시 출력

SELECT 직원ID
     , 이름
     , 나이
     , 입사일시
  FROM 직원
 WHERE 연봉 > 9000 ;

 

④ 이름이 '이현정'인 직원의 정보를 모두 출력

SELECT *
  FROM 직원
  WHERE 이름 = '이현정';

 

⑤ 패스워드 길이가 6이하인 대상을 모두 출력

SELECT *
  FROM 직원
  WHERE length(패스워드) <= 6;

 


 

2. 논리 조건

 

① 연봉이 5000 이상이면서 연봉이 7000 이하인 직원들의 정보를 모두 출력

SELECT *
  FROM 직원
 WHERE 연봉 >= 5000
   AND 연봉 <= 7000 ;

 

② 연봉이 5000 이상이면서 연봉이 7000 이하인 직원이면서 부서ID 가 ‘D005’인 대상을 모두 출력

SELECT *
  FROM 직원
 WHERE 연봉 >= 5000
   AND 연봉 <= 7000
   AND 부서ID = 'D005' ;

 

③ 직원 테이블에서 부서가 D001 이거나 D002인 직원을 모두 출력

SELECT *
  FROM 직원
 WHERE 부서ID = 'D001'
    OR 부서ID = 'D002' ;

 

④ 이름이 “이현정“ 이 아닌 직원의 정보를 모두 출력

SELECT *
  FROM 직원
 WHERE NOT 이름 = '이현정';
SELECT *
  FROM 직원
 WHERE 이름 != '이현정';

 

※ 논리 조건 AND와 OR가 함께 사용되면 AND가 우선 실행된다.(OR를 실행하고 싶으면 괄호를 사용)

SELECT *
  FROM 직원
 WHERE 부서ID = 'D001'
    OR 부서ID = 'D002'
   AND 이름 = '김철수' ;

 

SELECT *
  FROM 직원
 WHERE (부서ID = 'D001'
    OR 부서ID = 'D002')
   AND 이름 = '김철수' ;

 


 

3. NULL 조건

 

① 나이 값이 정해지지 않은(NULL) 직원을 추출

SELECT *
  FROM 직원
 WHERE 나이 IS NULL ;

 

② 부서ID가 ‘D003’ 이면서 나이 값이 정해지지 않은(NULL) 직원을 추출

SELECT *
  FROM 직원
 WHERE 나이 IS NULL
   AND 부서ID = 'D003' ;

 


 

4. IN / BETWEEN / LIKE 조건 (SQL 연산자)

  • IN : 뒤에 나열된 파라미터를 OR 조건으로 출력, NULL은 무시
  • NOT IN : 뒤에 나열된 파라미터를 제외한 대상을 출력
  • BETWEEN : 범위 연산
  • LIKE : _, %를 이용하여 특정값을 찾는 매칭 연산 가능

 

① 직원 테이블에서 직원ID가 ‘A0001’ , ‘A0003’ , ‘A0005’ , ‘A0010’ 인 대상을 출력

SELECT *
  FROM 직원
 WHERE 직원ID IN ('A0001', 'A0003', 'A0005', 'A0010');

 

② 직원 테이블에서 직원ID가 ‘A0001’ , ‘A0003’ , ‘A0005’ , ‘A0010’ 이 아닌 대상을 출력

SELECT *
  FROM 직원
 WHERE 직원ID NOT IN ('A0001', 'A0003', 'A0005', 'A0010');

 

③ 직원들 중에 나이가 30세 이상 40세 이하인 직원들을 모두 출력

SELECT *
  FROM 직원
 WHERE 나이 BETWEEN 30 AND 40;

 

④ 직원들 중 이름이 ‘강’ 으로 시작하는 모든 대상을 출력

SELECT *
  FROM 직원
 WHERE 이름 LIKE '강%';

 

⑤ 직원들 중 이름 가운데에 ‘홍’ 이 포함된 모든 대상을 출력

SELECT *
  FROM 직원
 WHERE 이름 LIKE '%홍%';

 

⑥ 직원들 중 패스워드가 ‘123’ 으로 끝나는 모든 대상을 출력

SELECT *
  FROM 직원
 WHERE 패스워드 LIKE '%123';

 

⑦ 직원들 중 이름의 세번째 글자가 ‘수’ 인 세글자인 모든 대상을 출력

SELECT *
  FROM 직원
 WHERE 이름 LIKE '__수';

 

⑧ 직원들 중 주민등록번호의 7번째 자리가 1인 대상을 모두 출력

SELECT *
  FROM 직원
 WHERE 주민등록번호 LIKE '_______1%';

 

⑨ 직원들 중 2015년에 입사한 대상을 출력

SELECT *
  FROM 직원
 WHERE 입사일시 >= TO_DATE('20150101')
   AND 입사일시 < TO_DATE('20160101');
SELECT *
  FROM 직원
 WHERE TO_CHAR(입사일시, 'YYYY') = '2015';

 


▶ 실습

 

① 직원 테이블에서 이름에 '철' 이 포함되는 직원의 직원ID, 이름, 나이 를 출력

SELECT 직원ID
     , 이름
     , 나이
  FROM 직원
 WHERE 이름 LIKE '%철%';

 

② 직원 테이블에서 나이가 아직 정해지지 않은 회원들의 모든 정보를 출력

SELECT *
  FROM 직원
 WHERE 나이 IS NULL ;

 

③ 직원 중에 2015년도에 입사를 했거나, 입사일시가 정해지지 않은 직원의 모든 정보를 출력

SELECT *
  FROM 직원
 WHERE 입사일시 IS NULL
    OR TO_CHAR(입사일시, 'YYYY') = 2015;

 

④ 직원 중에 연봉이 7000 ~ 9000 사이인 직원들의 다음 정보를 출력

출력할 컬럼 : 직원ID, 패스워드, 이름, 주민등록번호 앞 6자리를 추출해 AS 생년월일로 표현

SELECT 직원ID
     , 패스워드
     , 이름
     , SUBSTR(주민등록번호, 1, 6) AS 생년월일
     FROM 직원
 WHERE 연봉 BETWEEN 7000 AND 9000 ;

 

⑤ 직원 중에 성별이 '남' 이면서 나이가 20대인 직원의 모든 정보를 출력

SELECT *
  FROM 직원
 WHERE 성별 = '남'
   AND 나이 BETWEEN 20 AND 29;

 

⑥ 2017년부터 지금까지 입사한 모든 직원을 출력

SELECT *
  FROM 직원
 WHERE TO_CHAR(입사일시, 'YYYY') >= 2017;

 

⑦ 직원 중에 직원ID 가 'A0001' , 'A0002' , 'A0003' 이 아닌 직원들을 모두 출력

SELECT *
  FROM 직원
 WHERE 직원ID NOT IN ('A0001', 'A0002', 'A0003') ;

 

⑧ 직원주소 테이블에서 주소가 '동구' 로 시작하는 모든 데이터를 출력

SELECT *
  FROM 직원주소
 WHERE 주소 LIKE '동구%' ;

 

⑨ 직원 패스워드 길이가 8글자 이하인 대상은 패스워드를 다시 설정해야 합니다. 
패스워드 길이가 8글자 이하인 대상을 모두 추출해주세요.

SELECT *
  FROM 직원
 WHERE LENGTH(패스워드) <= 8 ;

'Oracle SQL Developer' 카테고리의 다른 글

SQL GROUP BY, HAVING, ORDER BY  (0) 2023.01.24
SQL FROM, JOIN  (0) 2023.01.24
SQL SELECT 연산, 내장형 함수  (0) 2023.01.09
SQL 기본  (0) 2023.01.08
DB 데이터 모델링(Data Modeling)  (0) 2023.01.05

댓글