create table emp(
empno int PRIMARY KEY,
ename varchar(20),
job varchar(30),
mgr int,
hiredate datetime,
sal int,
comm int,
deptno varchar(2)
);
create table dept(
deptno varchar(2),
dname varchar(20),
loc varchar(20)
);
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7369','SMITH','CLERK','7902','1980-12-17','800',NULL,'20');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7499','ALLEN','SALESMAN','7698','1981-02-20','1600',300,'30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7521','WARD','SALESMAN','7698','1981-02-22','1250',500,'30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7566','JONES','MANAGER','7839','1981-04-02','2975',NULL,'20');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7654','MARTIN','SALESMAN','7698','1981-09-28','1250',1400,'30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7698','BLAKE','MANAGER','7839','1981-05-01','2850',NULL,'30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7782','CLARK','MANAGER','7839','1981-06-09','2450',NULL,'10');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7788','SCOTT','ANALYST','7566','1982-12-09','3000',NULL,'20');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7839','KING','PRESIDENT',null,'1981-11-17','5000',NULL,'10');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7844','TURNER','SALESMAN','7698','1981-09-08','1500','0','30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7876','ADAMS','CLERK','7788','1983-01-12','1100',NULL,'20');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7900','JAMES','CLERK','7698','1981-12-03','950',NULL,'30');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7902','FORD','ANALYST','7566','1981-12-03','3000',NULL,'20');
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values('7934','MILLER','CLERK','7782','1982-01-23','1300',NULL,'10');
insert into dept(deptno,dname,loc) values('10','ACCOUNTING','NEW YORK');
insert into dept(deptno,dname,loc) values('20','RESEARCH','DALLAS');
insert into dept(deptno,dname,loc) values('30','SALES','CHICAGO');
insert into dept(deptno,dname,loc) values('40','OPERATIONS','BOSTON');
insert into dept(deptno,dname,loc) values('50','DEVELOPER','KOREA');
사원테이블과 부서테이블 조회
select * from emp;
select * from dept;
-- 1. 부서번호가 10번인 부서의 사람 중 사원번호, 이름, 월급을 출력하세요
select empno, ename, sal
from emp
where deptno=10;
-- 2. 사원번호가 7369인 사람 중 이름, 입사일, 부서번호를 출력하세요.
select ename, hiredate, deptno
from emp
where empno=7369;
-- 3. 이름이 ALLEN인 사람의 모든 정보를 출력하세요.
select *
from emp
where ename = "ALLEN";
-- 4. 입사일이 83/01/12인 사람의 이름, 부서번호,월급을 출력하세요.
select ename, deptno, sal
from emp
where hiredate = '1983-01-12';
-- 5. 직업이 MANAGER가 아닌 사람의 모든 정보를 출력하세요.
select *
from emp
where job != 'MANAGER';
-- select * from emp where job <> 'MANAGER'; 로 작성해도 OK
-- 6. 이름이 K로 시작하는 사람보다 높은 이름을 가진 사람의 모든 정보를 출력하세요.
select *
from emp
where ename > 'K%';
-- 7. 입사일이 81/04/02 보다 늦고 82/12/09 보다 빠른 사원의 이름, 월급, 부서번호를 출력하세요.
select ename, sal, deptno
from emp
where (hiredate > '1981-04-02') AND (hiredate < '1982-12-09');
-- 8. 이름 중 S자가 들어가 있는 사람만의 모든 정보를 출력하세요.
select *
from emp
where ename LIKE '%S%';
-- 9. 이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력하세요(단 이름은 전체 5자리)
select *
from emp
where ename LIKE 'S___T';
-- 10. 첫 번째 문자는 관계없고 두 번재 문자가 A인 사람의 정보를 출력하세요.
select *
from emp
where ename LIKE '_A%';
-- 11. 이름의 첫 글자가 K로 시작하거나 부서번호가 30인 사람의 사원번호, 이름, 부서번호를 출력하세요.
select empno, ename, deptno
from emp
where (ename LIKE 'K%') OR (deptno=30);
-- 12. 급여가 1500이상이고, 부서번호가 30번인 사원 중 직업이 MANAGER인 사람의 정보를 출력하세요.
select *
from emp
where (sal >= 1500 AND deptno=30) AND job = 'MANAGER';
-- 13. 사원번호가 7654와 7782 사이 이외의 사원의 모든 정보를 출력하세요. -- ★
select *
from emp
where NOT empno between 7654 AND 7782;
-- select * from emp where not (empno >= 7654 AND empno <= 7782);
-- 14. 이름이 B와 J사이의 모든 사원의 정보를 출력하세요.
select *
from emp
where ename between 'B' AND 'J';
-- select * from emp where ename >= 'B%' and ename <= 'J%';
-- 15. 입사일이 81년 이외에 입사한 모든 정보를 출력하세요.
select *
from emp
where NOT hiredate between '1981-01-01' AND '1981-12-31';
-- select * from emp where not(hiredate >= ''1981-01-01' and hiredate <= '1981-12-31');
-- 16. 직업이 MANAGER와 SALESMAN인 사람의 모든 정보를 출력하세요. ★
select *
from emp
where job in ('MANAGER','SALESMAN');
-- select * from emp where job = 'MANAGER' or job = 'SALESMAN';
-- 17. 부서번호와 20,30번을 제외한 모든 사람의 이름, 사원번호, 부서번호를 출력하세요.
select ename, empno, deptno
from emp
where NOT deptno in (20,30);
-- select ename, empno, deptno from emp where not (deptno = '20' or deptno = '30');
-- 18. 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일, 부서번호를 출력하세요.
select empno, ename, hiredate, deptno
from emp
where ename Like 'S%';
-- 19. 입사일이 81년도인 사람의 모든 정보를 출력하세요.
select *
from emp
where hiredate between '1981-01-01' and '1981-12-31';
-- select * from emp where hiredate >= '1981-01-01' and hiredate <= '1981-12-31';
-- 20. 이름 중 S자가 들어가 있는 사람인 모든 정보를 출력하세요.
select *
from emp
where ename Like '%S%';
-- 21. 이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력하세요(단 이름은 전체 5자리이다.)
select *
from emp
where ename LIKE ('S___T');
-- 22. 첫 번째 문자는 관계없고 두 번재 문자가 A인 사람의 정보를 출력하세요.
select *
from emp
where ename LIKE '_A%';
-- 23. 커미션이 NULL인 사람의 정보를 출력하세요
select *
from emp
where comm is null;
-- 24. 커미션이 NULL이 아닌 사람의 모든 정보를 출력하세요.
select *
from emp
where comm is not null;
-- 25. 부서가 30번 부서이고, 급여가 1500 이상인 사람의 이름, 부서, 월급을 출력하세요.
select ename, deptno, sal
from emp
where (deptno = 30) AND (sal >= 1500);
-- 26. 이름의 첫 글자가 K로 시작하거나 부서번호가 30인 사람의 사원번호, 이름, 부서번호를 출력하세요.
select empno, ename, deptno
from emp
where (ename LIKE 'K%') OR (deptno = 30);
-- 27. 급여가 1500이상이고, 부서번호가 30번인 사원 중 직업이 MANAGER인 사람의 정보를 출력하세요.
select *
from emp
where (sal >= 1500 AND deptno = 30) AND job = 'MANAGER';