SQL_SELECT 연습문제

jjinny_0609·2023년 3월 13일
0

데이터베이스

목록 보기
14/17
post-custom-banner

사원(emp) 테이블 만들기

create table emp(
	empno int PRIMARY KEY,
    ename varchar(20),
    job varchar(30),
    mgr int,
    hiredate datetime,
    sal int,
    comm int,
    deptno varchar(2)
);

부서(dept) 테이블만들기

create table dept(
	deptno varchar(2),
    dname varchar(20),
    loc varchar(20)
);

사원(emp) 테이블에 튜플 삽입

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;

SELECT 연습 문제 시작

-- 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';
profile
뉴비 개발자 입니다. velog 주소 : https://velog.io/@jjinny_0609 Github 주소 :
post-custom-banner

0개의 댓글