문1. 사원명과 부서명을 조회하시오.
select E.ENAME, D.DNAME
from emp e
inner join dept d on E.DEPTNO = D.DEPTNO
문2. 이름, 월급여, 월급여 등급을 조회하시오.
select E.ENAME, E.SAL, S.GRADE
from emp e , salgrade s
where E.SAL >= S.LOSAL and E.SAL <= S.HISAL
=> EMP와 SALGRADE는 서로 이어진 외래키가 존재하지않지만 WHERE을 통해 서로를 이어줄 수 있다.
문3. 이름, 부서명, 월급여등급을 조회하시오.
SELECT E.ENAME,D.DNAME, s.grade
FROM EMP E,DEPT D, salgrade s
WHERE E.DEPTNO = D.DEPTNO
AND E.SAL BETWEEN S.LOSAL AND S.HISAL
=> 일반 right와 left join문과는 다르게 from 으로 가져올 쿼리를 지정한 다음 where로 연결할 수 도 있다.
문4. 이름, 직속상사 이름을 조회하시오
SELECT E.ENAME, M.ENAME
FROM EMP E
EMP M WHERE E.MGR = M.EMPNO
=> MGR: 사수의 사원 번호/ EMPNO: 사원번호 가 기재되어있다. 그래서 "E.MGR = M.EMPNO"를 통해 해당 사수 이름을 알 수 있다.
from emp e
left join emp m on e.mgr = m.EMPNO ;
=> 단, 회장은 사수가 없다. 그래서 Null값인 회장은 아까의 쿼리 결과에 포함되지않았다. 회장까지 포함시키려면 Left join 문으로 쿼리를 만들어준다.
문5. 부서번호가 30번인 사원들의 이름, 직급, 부서번호, 부서위치를 조회하시오.
SELECT ENAME,JOB,E.DEPTNO,LOC
FROM EMP E,DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND D.DEPTNO = 30;
select ENAME , JOB , e.DEPTNO , loc
from emp e
inner join dept d on e.DEPTNO = d.DEPTNO
where d.DEPTNO = 30;
문6. 커미션을 받는 사원의 이름, 커미션, 부서이름, 부서위치를 조회하시오.
SELECT ENAME,COMM,DNAME,LOC
FROM EMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
AND EMP.COMM IS NOT NULL AND EMP.COMM <> 0;
SELECT ENAME,COMM,DNAME,LOC
FROM EMP
INNER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO
WHERE EMP.COMM IS NOT NULL AND EMP.COMM <> 0;
문7. DALLAS에서 근무하는 사원의 이름, 직급, 부서번호, 부서명을 조회하시오 .
SELECT E.ENAME,E.JOB,D.DEPTNO,D.DNAME
FROM EMP E,DEPT D
WHERE E.DEPTNO = D.DEPTNO
AND D.LOC = 'DALLAS';
SELECT E.ENAME,E.JOB,D.DEPTNO,D.DNAME
FROM EMP E
INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE D.LOC = 'DALLAS';
문8.이름에 A가 들어가는 사원의 이름, 부서명을 조회하시오.
select ENAME , DNAME
from emp e , dept d
where e.DEPTNO = d.DEPTNO
and e.ENAME like "%A%" ;
select e.ENAME , d.DNAME
from emp e
left join dept d on e.DEPTNO = d.DEPTNO
where e.ENAME like "%A%";
문9. 이름, 직급, 월급여, 월급여등급을 조회하시오.
SELECT E.ENAME,E.JOB,E.SAL,S.GRADE
FROM EMP E,SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
문10. ALLEN과 같은 부서에 근무하는 사원의 이름, 부서번호를 조회하시오.
SELECT C.ENAME,C.DEPTNO
FROM EMP E,EMP C
WHERE E.EMPNO <> C.EMPNO AND E.DEPTNO = C.DEPTNO
AND E.ENAME = 'ALLEN' ORDER BY C.ENAME;
SELECT C.ENAME,C.DEPTNO
FROM EMP E
INNER JOIN EMP C ON E.DEPTNO = C.DEPTNO
WHERE E.EMPNO <> C.EMPNO
AND E.ENAME = 'ALLEN' ORDER BY C.ENAME;
*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 연습문제(WHERE) (0) | 2022.05.16 |
데이터베이스(Oracle)_서브쿼리(subQuery) 연습문제 (0) | 2022.04.18 |
데이터베이스(Oracle)_조인(JOIN) 연습문제 (0) | 2022.04.15 |
데이터베이스(Oracle)_Select 연습문제 (0) | 2022.04.08 |