데이터베이스

DATABASE STEP 5 - Where

2023. 3. 16. 23:39
728x90

★ Where 절

  • 레코드를 검색한다.
  • 원하는 행만 추출하는 역할 > 결과셋 반환

 

★ Where절 검색 순서

select 컬럼리스트    -- 3. 컬럼 지정
from 테이블           -- 1. 테이블 지정
where 조건;           -- 2. 조건 지정

 

★ where 절 응용

select *
    from tblCountry
        where Name = '대한민국';
    
select *
    from tblCountry
        where Continent = 'AS';

select *
    from tblInsa
        where basicpay > 2000000; -- 19명
        
select *
    from tblInsa
        where basicpay < 2000000; -- 41명
    
select *
    from tblInsa
        where buseo = '개발부';
    
select *
    from tblInsa
        where buseo <> '개발부';

select *
    from tblInsa
        where buseo = '개발부' and jikwi = '부장';

select *
    from tblInsa
        where city = '서울' and city = '경기';

select *
    from tblInsa
        where not buseo = '개발부';

 

★ where문 응용 요구사항

1. 몸무게가 60kg 이상이고, 키가 170cm 미만인 사람을 가져오시오.

select *
    from tblComedian
        where weight > 60 and height <170;

2. 몸무게가 70kg 이하인 여자만 가져오시오.

select *
    from tblComedian
        where weight <70 and  gender = 'f';

3. 부서가 '개발부'이고, 급여(basicpay)를 150만원 이상 받는 직원을 가져오시오.

select *
    from tblInsa
        where buseo = '개발부' and basicpay >= 1500000;

4. 급여(basicpay) + 수당(sudang)을 합한 금액이 200만원 이상 받는 직원을 가져오시오.

select *
    from tblInsa
        where (basicpay + sudang) >= 2000000;

 

★ between

  • dwhere 절에서 사용 > 조건으로 사용
  • 컬럼명 between 최솟값 and 최댓값
  • 범위 조건
  • 가독성(***)
  • 최솟값, 최댓값 > 포함

★ between 응용

select *
    from tblcomedian
        where height >=170 and height <=180;

select *
    from tblcomedian
        where height between 172 and 178;

-- 비교 연산
-- 1. 숫자형
select * 
    from tblInsa 
        where basicpay >= 1500000 and basicpay <=2000000;

select *
    from tblInsa
        where basicpay between 1500000 and 2000000;

-- 2. 문자형
select * 
    from tblInsa
        where name >= '박';
        
select *
    from tblInsa
        where name >= '박' and name <= '유';
    
select *
    from tblInsa
        where name between '박' and '유';
        
--3. 날짜 시간형
select *
    from tblInsa
        where ibsadate >= '2000-01-01'; --2000년 이후에 입사한 직원들
        
select *
    from tblInsa
        where ibsadate >= '2000-01-01' and ibsadate <= '2000-12-31'; --2000년 이후에 입사한 직원들
        
select *
    from tblInsa
        where ibsadate between '2000-01-01' and '2000-12-31';

 

★ in 

  • where 절에서 사용 > 조건으로 사용
  • 열거형 조건
  • 컬럼명 in (값, 값, 값..)
  • 가독성

 

★ in 응용

-- 홍보부 or 개발부
select *
    from tblInsa
        where buseo = '홍보부' or buseo = '개발부' or buseo = '총무부';

select *
    from tblInsa
        where buseo in('홍보부', '개발부', '총무부');
        
select *
    from tblInsa
        where jikwi in('과장', '부장') and city in ('서울', '인천') and basicpay between 2500000 and 3000000;

 

★ like

  • where절에서 사용 > 조건으로 사용
  • 패턴 비교
  • 컬럼명 like '패턴 문자열'
  • 정규 표현식 초간단 버전
  • 패턴 문자열 구성요소
    • 1. _ : 임의의 문자 1개(.)
    • 2. % : 임의의 문자 N개 0~무한대(.*)

 

★ like 응용

-- 김OO
select name 
    from tblInsa
        where name like '김__';
        
select name 
    from tblInsa
        where name like '__수'; --OO수

select name 
    from tblInsa
        where name like '_길_'; --O길O
        
select name 
    from tblInsa
        where name like '김%'; --김~
        
select *
    from tblAddressBook;
    
select *
    from tblAddressBook
        where address like '서울특별시%';
        
select *
    from tblAddressBook
        where address like '%동대문구%';
        
select *
    from tblAddressBook
        where name like '이%';
        
select *
    from tblAddressBook
        where name like '%이';
        
select *
    from tblAddressBook
        where name like '%이%';

-- 주민등록번호
-- 여직원만
select *
    from tblInsa;

select *
    from tblInsa
        where ssn like '%-2%';

 

★ null

  • 자바의 null 유사
  • 컬럼 값(셀)이 비어있는 상태
  • null 상수 제공
  • 대부분의 언어는 null은 연산의 대상이 될 수 없다.

 

★ null 응용

-- 인구수가 미기재된 나라? 
select *
    from tblCountry
        where population is null;

-- 인구수가 기재된 나라?
select *
    from tblCountry
        where not population is null;
        
select *
    from tblCountry
        where population is not null; --선호도 높음(가독성)

select *
    from tblInsa
        where tel is not null;

-- 아직 완료하지 않은 일
select *
    from tblTodo
        where CompleteDate is null;
        
-- 완료한 일
select *
    from tblTodo
        where CompleteDate is not null;
        
-- 도서관 > 대여 테이블(속성 : 대여 날짜, 반납 날짜)

-- 아직 반납을 안한 사람은?
select *
    from 도서대여
        where 반납날짜 is null;
        
-- 반납이 완료된 사람은?
select *
    from 도서대여
        where 반납날짜 is not null;

select * from tblTodo;

 

★ 종합 요구사항 모음

-- 요구사항.001.tblCountry
-- 모든 행과 모든 컬럼을 가져오시오.
select *
    from tblCountry
    
-- 요구사항.002.tblCountry
-- 국가명과 수도명을 가져오시오.
select name, capital
    from tblCountry;
    
-- 요구사항.003.tblCountry
-- 아래와 같이 가져오시오
-- [국가명]    [수도명]   [인구수]   [면적]    [대륙] <- 컬럼명
-- 대한민국   서울        4403       101       AS     <- 데이터

select name as 국가명, capital as 수도명, population as 인구수 , continent as 면적 , Area as 대륙 
    from tblCountry
    
--요구사항.004.tblCountry
--아래와 같이 가져오시오
-- [국가정보] <- 컬럼명
-- 국가명: 대한민국, 수도명: 서울, 인구수: 4403   <- 데이터

select '국가명 : ' || name || ', 수도명 : ' || capital || ', 인구수 : '|| population as 국가정보
    from tblCountry
        where name = '대한민국';

--요구사항.005
--아래와 같이 가져오시오.employees
-- [이름]                 [이메일]                 [연락처]            [급여]
-- Steven King           SKING@gmail.com   515.123.4567      $24000
select first_name||Last_name as 이름, email as 이메일, phone_number as 연락처, salary as 급여
    from employees
        where phone_number = '515.123.4567'

--요구사항.006.tblCountry
--면적(area)이 100이하인 국가의 이름과 면적을 가져오시오.
select name, Area
    from tblCountry
        where area <=100;

--요구사항.007.tblCountry
--아시아와 유럽 대륙에 속한 나라를 가져오시오.
select *
    from tblCountry
    where continent = 'AS' or continent = 'US';

--요구사항.008.employees
--직업(job_id)이 프로그래머(it_prog)인 직원의 이름(풀네임)과 연락처 가져오시오.
select first_name||last_name as 이름, phone_number
    from employees 
        where job_id = 'IT_PROG';

--요구사항.009.employees
--last_name이 'Grant'인 직원의 이름, 연락처, 고용날짜를 가져오시오.
select first_name||last_name as 이름, phone_number, hire_date
    from employees
    where last_name = 'Grant';

--요구사항.010.employees
--특정 매니저(manager_id: 120)이 관리하는 직원의 이름, 급여, 연락처를 가져오시오.
select first_name||last_name as 이름, salary, phone_number
    from employees
        where manager_id = 120

--요구사항.011.employees
--특정 부서(60, 80, 100)에 속한 직원들의 이름, 연락처, 이메일, 부서ID 가져오시오.
select first_name||last_name as 이름, phone_number, email, department_id
    from employees
        where department_id in(60, 80, 100);

--요구사항.012.tblInsa
--기획부 직원들 가져오시오.
select *
    from tblInsa
        where buseo = '기획부';

--요구사항.013.tblInsa
--서울에 있는 직원들 중 직위가 부장인 사람의 이름, 직위, 전화번호 가져오시오.
select name, jikwi, tel
    from tblInsa
        where jikwi = '부장'

--요구사항.014.tblInsa
--기본급여 + 수당 합쳐서 150만원 이상인 직원 중 서울에 직원만 가져오시오.
select *
    from tblInsa
        where (Basicpay+sudang) >= 1500000 and city = '서울'

--요구사항.015.tblInsa
--수당이 15만원 이하인 직원 중 직위가 사원, 대리만 가져오시오.
select *
    from tblInsa
        where sudang <= 150000 and jikwi in ('사원', '대리');

--요구사항.016.tblInsa
--수당을 제외한 기본 연봉이 2천만원 이상, 서울, 직위 과장(부장)만 가져오시오.
select *
    from tblInsa
        where (basicpay*12) >= 20000000 and city = '서울' and jikwi in ('과장', '부장');

--요구사항.017.tblCountry
--국가명 'O국'인 나라를 가져오시오.
select *
    from tblCountry
        where name like '_국';

--요구사항.018.employees
--연락처가 515로 시작하는 직원들 가져오시오.
select *
    from employees
        where phone_number like '515.%.%';

--요구사항.019.employees
--직업 ID가 SA로 시작하는 직원들 가져오시오.
select *
    from employees
        where job_id like 'SA_%';

--요구사항.020.employees
--first_name에 'de'가 들어간 직원들 가져오시오.
select *
    from employees
        where first_name like '%de%';

--요구사항.021.tblInsa
--남자 직원만 가져오시오.
select *
    from tblInsa
        where ssn like '%-1%';

-- 요구사항.022.tblInsa
--여자 직원만 가져오시오.   
select *
    from tblInsa
        where ssn like '%-2%';
        
--요구사항.023.tblInsa
--여름에(7,8,9월) 태어난 직원들 가져오시오.
select *
    from tblInsa
    where ssn like '__07%' or  ssn like '__08%' or  ssn like '__09%'
    
--요구사항.024.tblInsa
--서울, 인천에 사는 김씨만 가져오시오.    
select *
    from tblInsa
        where city in ('서울', '인천') and name like '김%';

--요구사항.025.tblInsa
--영업부/총무부/개발부 직원 중 사원급(사원/대리) 중에 010을 사용하는 직원들을 가져오시오.
select *
    from tblInsa
        where Buseo in ('영업부', '총무부', '개발부') and tel like '010-%-%';

--요구사항.026.tblInsa
--서울/인천/경기에 살고 입사일이 1998~2000년 사이인 직원들을 가져오시오.
select *
    from tblInsa
        where city in('서울','인천','경기') and ibsadate between '1998-01-01' and '2000-12-31';

--요구사항.027.employees
--부서가 아직 배정 안된 직원들을 가져오시오. (department_id가 없는 직원)
select *
    from employees
        where department_id is null;
728x90
저작자표시 비영리 변경금지 (새창열림)

'데이터베이스' 카테고리의 다른 글

DATABASE STEP 7 - Order  (0) 2023.03.17
DATABASE STEP 6 - Column  (0) 2023.03.17
DATABASE STEP 4 - Operator  (0) 2023.03.16
DATABASE STEP 3 - select  (0) 2023.03.16
DATABASE STEP 2 - datatype  (0) 2023.03.16
'데이터베이스' 카테고리의 다른 글
  • DATABASE STEP 7 - Order
  • DATABASE STEP 6 - Column
  • DATABASE STEP 4 - Operator
  • DATABASE STEP 3 - select
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • ajax
  • 백준
  • JavaScript
  • 정보처리기사필기
  • jsp
  • 정보보안전문가
  • DBA
  • IT자격증공부
  • html
  • 프론트엔드
  • 웹페이지
  • 데이터베이스
  • IT개발자
  • 웹개발
  • jquery
  • it
  • React
  • 자바
  • 백엔드
  • 코딩테스트
  • 앱개발자
  • java
  • 정보처리기사
  • 개발블로그
  • IT자격증
  • 개발자
  • 알고리즘
  • 웹개발자
  • css
  • DB

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
DATABASE STEP 5 - Where
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.