SQL - DML의 WHERE 사용법 - 23.11.16~17

songmin jeon·2023년 11월 16일
0

1.WHERE


조건을 걸어 해당 데이터를 걸러낸다.

1.1 비교조건

실습문제(WHERE)

1.직원 중에 연봉이 9000 보다 많은 직원들의 직원ID, 이름, 나이, 입사일시를 출력해주세요.
    SELECT  직원ID, 이름, 나이, 입사일시
    FROM    직원
    WHERE  연봉 > 9000;

2.직원 중에 이름이 "이현정"인 직원의 정보를 모두 출력해주세요.
    SELECT  *
    FROM    직원
    WHERE   이름='이현정';

3.직원연락처 테이블에서 연락처가 '010-1231-1234'인 직원의 정보를 모두 출력해주세요.
    SELECT  *
    FROM    직원연락처
    WHERE   연락처 = '010-1231-1234';
    
4.부서 테이블에서 근무지가 서울인 부서명을 출력해주세요.
    SELECT 부서명
    FROM 부서
    WHERE 근무지 = '서울';

5. 직원주소 테이블에서 직원ID가 'A0007'인 직원의 주소를 출력해주세요.
    SELECT  주소
    FROM    직원주소
    WHERE   직원ID = 'A0007';

1.2 논리조건

참(TRUE), 거짓(FALSE)를 기준으로 논리조건을 따진다.

AND : 하나라도 FALSE 면 FALSE
OR : 하나라도 TRUE 면 TRUE

실습문제(AND, OR)
1.직원연락처 테이블에서 직원ID가 'A0001'인 직원의 집 전화 연락처를 출력해주세요.
SELECT  연락처
FROM    직원연락처
WHERE  직원ID = 'A0001' AND 구분코드 = '집전화';

2.소속된 부서의 ID가 'D0003'인 여직원 중 나이가 30대 이상인 직원의 모든 정보를 출력해주세요.
SELECT  *
FROM    직원
WHERE   성별 = '여' AND 나이 > 30;

3. 직원ID 가 'A0001'이거나 'A0005'이거나 'A0007'인 직원의 정보를 모두 출력해주세요.
SELECT  *
FROM    직원
WHERE   직원ID =  'A0001' OR 직원ID = 'A0005' OR 직원ID ='A0007';

연산자 우선순위

조건문에도 순서가 있다.
WHERE절에서 AND가 우선 OR이 다음!


2.IN, BETWEEN, LIKE 조건(SQL 연산자)


2.1 IN 연산자

여러 조건을 WHERE IN(data1, data2, data3, ...)

실습 문제를 보다 효율적으로 찾아보기! (WHERE절 참고)

3. 직원ID 가 'A0001'이거나 'A0005'이거나 'A0007'인 직원의 정보를 모두 출력해주세요.

  SELECT  *
  FROM    직원

  WHERE   직원ID =  'A0001' OR 직원ID = 'A0005' OR 직원ID ='A0007';WHERE 직원ID IN('A0001', 'A0003','A0005'); 


2.2 BETWEEN 연산자

data1 이상 부터 data2 이하까지 데이터를 찾을때 사용! (data1 가 data2 보다 값이 적어야함)

SELECT *
FROM 직원
WHERE 연봉 BETWEEN 2800 AND 5000;


2.3 LIKE 연산자

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

  • 알아두기 !
    '%민%' 했을시 앞 뒤로 "김민성" 또는 "이해민"을 찾아 출력한다.

실습문제(LIKE, BETWEEN)
--1 .직원 테이블에서 이름에 ' 철' 이 포함되는 직원의 직원ID, 이름, 나이를 출력해주세요.
    SELECT  직원ID, 이름, 나이
    FROM    직원
    WHERE   이름 LIKE '%철%';

--2. 직원 중에 연봉이 7000 ~ 9000 사이인 직원들의 직원ID, 연봉, 입사일시를 출력해주세요.
    SELECT  직원ID, 연봉, 입사일시
    FROM    직원
    WHERE   연봉 BETWEEN 7000 AND 9000;

--3. 직원주소 테이블에서 주소가 '동구' 로 시작하는 모든 데이터를 출력해주세요.
    SELECT  *
    FROM    직원주소
    WHERE   주소 LIKE '동구%';
    
--4.(보너스 문제) 입사를 11월에 한 직원들의 정보를 모두 출력해주세요!
    SELECT  *
    FROM    직원
    WHERE  입사일시 LIKE '%/11/%';
    
    		또는 WHERE...
            
    WHERE  입사일시 LIKE '%_11_%';
        		
             또는 WHERE...
            
    WHERE  입사일시 LIKE '___11___';


3. = 를 사용하지 않는 WHERE 연산자!


  SELECT *
  FROM  테이블 명
  
  WHERE 칼럼명 IS NULL;

  WHERE 칼럼명 IS NOT NULL;

  WHERE 칼럼명 LIKE '패턴%';

  WHERE 칼럼명 IN ('값1', '값2', '값3');

  WHERE 칼럼명 BETWEEN 10 AND 20;

  WHERE 칼럼명 <> '값';

  WHERE 칼럼명 > 10;
profile
제가 한 번 해보겠습니다.

0개의 댓글