[WHERE]
문1. 사원 테이블의 모든 레코드를 조회하시오.
select *
from emp
문2. 사원명과 입사일을 조회하시오.
select ENAME,HIREDATE
from emp
문3. 사원번호와 이름을 조회하시오.
select DEPTNO , ENAME
from emp e
문4. 사원테이블에 있는 직책의 목록을 조회하시오.
SELECT DISTINCT JOB
FROM EMP
=> DISTINCT: 중복제거
문5. 총 사원수를 구하시오
SELECT COUNT(EMPNO)
FROM EMP
=> COUNT(컬럼명): 중복없는 NULL이 아닌 레코드수/ COUNT(*): 중복없는 NULL을 포함한 레코드 수
문7. 부서번호가 10인 사원을 구하시오
select *
from emp e
where DEPTNO = 10
문8. 월급여가 2500이상 되는 사원을 조회하시오.
select *
from emp e
where SAL >= 2500
문9. 이름이 'KING'인 사원을 조회하시오.
select *
from emp e
where ENAME = 'KING'
=> ORACLE과는 달리 MYSQL은 대소문자를 구별한다. 그래서 'king'이라고 입력하면 오류가 발생한다.
문10. 사원들 중 이름이 S로 시작하는 사원의 사원번호와 이름을 조회하시오.
select DEPTNO, ENAME
from emp e
where ENAME like 'S%'
문11. 커미션이 300, 500, 1400인 사원의 사번, 이름, 커미션을 조회하시오.
select EMPNO , ENAME , COMM
from emp e
where COMM IN(300,500,1400)
문12. 월급여가 1200에서 3500 사이의 사원의 사번, 이름, 월급여를 조회하시오 .
select EMPNO , ENAME , SAL
from emp e
where SAL between 1200 and 3500
문13. 직급이 매니저이고 부서번호가 30번인 사원의 이름, 사번, 직급, 부서번호를 조회하시오.
select ENAME , EMPNO , JOB , DEPTNO
from emp e
where JOB = 'MANAGER'
and DEPTNO = 30
문14. 부서번호가 30이 아닌 사원의 사번,이름,부서번호를 조회하시오.
select EMPNO , ENAME, DEPTNO
from emp e
where not DEPTNO = 30
=> WHERE NOT 컬럼 = 값 // WHERE 컬럼 != 값 // WHERE 컬럼 <> 값 모두 가능하다.
문15. 커미션이 300, 500, 1400이 모두 아닌 사원의 사번, 이름, 커미션을 조회하시오.
select EMPNO, ENAME, COMM
from emp e
where not COMM IN(300,500,1400)
문16. 이름에 S가 포함되지 않는 사원의 사번, 이름을 조회하시오.
select EMPNO , ENAME
from emp e
where not ENAME LIKE '%S%'
문17. 이름에 S가 포함되지 않는 사원의 사번, 이름을 조회하시오.
select EMPNO , ENAME
from emp e
where not ENAME LIKE '%S%'
문18. 급여가 1200보다 미만이거나 3700 초과하는 사원의 사번, 이름, 월급여를 조회하시오.
select EMPNO , ENAME , SAL
from emp e
where not SAL between 1200 and 3700
문19. 직속상사가 NULL인 사원의 이름과 직급을 조회하시오.
select ENAME, JOB
from emp e
where MGR is null
=> IS NULL, IS NOT NULL 을 사용한다.
[GROUP BY]
문1. 부서별 평균 월 급여를 구하라.
select DEPTNO, AVG(SAL)
from emp e
group by DEPTNO
문2. 부서별 전체 사원수와 커미션을 받는 사원들의 수를 구하시오.
select DEPTNO , COUNT(*), COUNT(COMM)
from EMP
group by DEPTNO
문3. 부서별 최대 급여와 최소 급여를 구하는 쿼리
select DEPTNO , MAX(SAL), MIN(SAL)
from emp e
group by DEPTNO
문4. 부서별로 급여 평균을 구하라. (단, 부서별 급여 평균이 2000이상만)
select DEPTNO , AVG(SAL)
from EMP
group by DEPTNO
having AVG(SAL) >= 2000
=> GROUP BY의 조건을 HAVING으로 처리해준다.
문5. 월급여가 1000이상인 사원만을 대상으로 부서별로 월급여 평균을 구하라.
단, 평균값이 2000이상인 레코드만 구하라.
select DEPTNO, AVG(SAL)
from EMP
where SAL >=1000
group by DEPTNO
having AVG(SAL) >= 2000
=> WHERE: 테이블에서 데이터를 가져올 때 특정 조건에 부합하는 레코드만 가져올 때
HAVING: GROUP BY 구문을 사용하여 구한 레코드 중 원하는 조건에 맞는 레코드만 가져올 때
[ORDER BY]
문1. 급여가 높은 순으로 조회하되 급여가 같을 경우 이름의 철자가 빠른 사원순으로 사번, 이름, 월급여를 조회하시오.
select EMPNO,ENAME, SAL
from emp e
order by SAL desc, ENAME asc
=> ASC: 오름차순(생략가능) / DESC: 내림차순
*Reference
https://junetudie.tistory.com/11
mysql 샘플 테이블 + 쿼리 연습 문제
http://java-school.net/jdbc/SQL-SELECT-Statement CREATE TABLE DEPT ( DEPTNO DECIMAL(2), DNAME VARCHAR(14), LOC VARCHAR(13), CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO) );..
junetudie.tistory.com
'오답노트 > DBMS' 카테고리의 다른 글
MySQL_서브쿼리(SubQuery) ,UPDATE,INSERT 연습문제 (0) | 2022.05.20 |
---|---|
MySQL 연습문제(JOIN) (0) | 2022.05.18 |
데이터베이스(Oracle)_서브쿼리(subQuery) 연습문제 (0) | 2022.04.18 |
데이터베이스(Oracle)_조인(JOIN) 연습문제 (0) | 2022.04.15 |
데이터베이스(Oracle)_Select 연습문제 (0) | 2022.04.08 |