250x250
Recent Posts
Notice
Today
Total
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
관리 메뉴

코딩알파

DB/mysql SELECT 연습문제 연습하기 본문

Database

DB/mysql SELECT 연습문제 연습하기

코딩알파 2021. 8. 29. 22:47
728x90

테이블 데이터

CREATE TABLE DEPT

(DEPTNO INT(2),

DNAME VARCHAR(20),

LOC VARCHAR(13),

primary key(deptno) ) ;

INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');

INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');

INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');

INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');

-----------------------------------------------------------------------------------------------------

 

CREATE TABLE EMP

(EMPNO INT(4),

ENAME VARCHAR(10),

JOB VARCHAR(9),

MGR INT(4),

HIREDATE DATE,

SAL DOUBLE(7,2),

COMM DOUBLE(7,2),

DEPTNO INT(2),

primary key(empno),

foreign key(deptno) REFERENCES DEPT(deptno));

INSERT INTO EMP VALUES (7369,'SMITH','CLERK', 7902,STR_TO_DATE('17-12-1980','%d-%m-%Y'),800,NULL,20);

INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN', 7698,STR_TO_DATE('20-2-1981', '%d-%m-%Y'),1600,300,30);

INSERT INTO EMP VALUES (7521,'WARD','SALESMAN', 7698,STR_TO_DATE('22-2-1981', '%d-%m-%Y'),1250,500,30);

INSERT INTO EMP VALUES (7566,'JONES','MANAGER', 7839,STR_TO_DATE('2-4-1981', '%d-%m-%Y'),2975,NULL,20);

INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,STR_TO_DATE('28-9-1981', '%d-%m-%Y'),1250,1400,30);

INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER', 7839,STR_TO_DATE('1-5-1981', '%d-%m-%Y'),2850,NULL,30);

INSERT INTO EMP VALUES (7782,'CLARK','MANAGER', 7839,STR_TO_DATE('9-6-1981', '%d-%m-%Y'),2450,NULL,10);

INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST', 7566,STR_TO_DATE('13-07-1987', '%d-%m-%Y'),3000,NULL,20);

INSERT INTO EMP VALUES (7839,'KING','PRESIDENT', NULL,STR_TO_DATE('17-11-1981','%d-%m-%Y'),5000,NULL,10);

INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,STR_TO_DATE('8-9-1981', '%d-%m-%Y'),1500,0,30);

INSERT INTO EMP VALUES (7876,'ADAMS','CLERK', 7788,STR_TO_DATE('13-07-1987', '%d-%m-%Y'),1100,NULL,20);

INSERT INTO EMP VALUES (7900,'JAMES','CLERK', 7698,STR_TO_DATE('3-12-1981', '%d-%m-%Y'),950,NULL,30);

INSERT INTO EMP VALUES (7902,'FORD','ANALYST', 7566,STR_TO_DATE('3-12-1981', '%d-%m-%Y'),3000,NULL,20);

INSERT INTO EMP VALUES (7934,'MILLER','CLERK', 7782,STR_TO_DATE('23-1-1982', '%d-%m-%Y'),1300,NULL,10);

 

----------------------------------------------------------------------------------------------------------------------------------

<문제>

 

문제의 답은 맨아래 있습니다.

 

<<1>> 부서 번호가 10번인 부서의 사람 중 사원번호, 이름, 급여를 출력하라.

 

<<2>> 사원번호가 7639인 사람 중 이름, 입사일자, 부서번호를 출력하라.

 

<<3>> 이름이 ALLEN인 사람의 모든 정보를 출력하라.

 

<<4>> 입사일자가 83/01/12인 사원의 이름, 부서 번호, 급여를 출력하라.

 

<<5>> 직업이 MANAGER가 아닌 사람의 모든 정보를 출력하라.

 

<<6>> 입사일자가 81/04/02 이후에 입사한 사원의 정보를 출력하라.

 

<<7>> 급여가 $800이상인 사람의 이름, 급여, 부서 번호를 출력하라.

 

<<8>> 부서번호가 20번 이상인 사원의 모든 정보를 출력하라.

 

<<9>> 성명이 K로 시작하는 사람보다 높은 이름을 가진 사람의 모든 정보를 출력하라.

 

<<10>> 입사일자가 81/12/09 보다 먼저 입사한 사람들의 모든 정보를 출력하라.

 

<<11>> 입사번호가 7698 보다 작거나 같은 사람들의 입사번호와 이름을 출력하라.

 

<<12>> 입사일자가 81/04/02 보다 늦고 82/12/09 보다 빠른 사원의 이름, 월급, 부서 번호를 출력하라.

 

<<13>> 급여가 1,600 보다 크고 $3,000보다 작은 사람은 이름, 직무, 급여를 출력하라.

 

<<14>> 사원번호가 7654와 7782 사이 이외의 사원의 모든 정보를 출력하라.

<<15>> 이름이 B와 J 사이의 모든 사원의 정보를 출력하라.

 

<<16>> 입사일자가 81년 이외에 입사한 사람의 모든 정보를 출력하라.

 

<<17>> 직무가 MANAGER와 SALESMAN인 사람의 모든 정보를 출력하라.

 

<<18>> 부서 번호가 20,30번을 제외한 모든 사람의 이름, 사원번호, 부서 번호를 출력하라.

 

<<19>> 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일자, 부서번호를 출력하라.

 

<<20>> 입사일자가 81년도인 사람의 모든 정보를 출력하라.

%m-%d') like '1981%';ate, 'yy/mm/dd'>> not like '81%';

<<21>> 이름 중 S자가 들어가 있는 사람만 모든 정보를 출력하라.

 

<<22>> 이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를 출력하라 (단, 이름은 전체 5자리이다.>>

 

<<23>> 첫 번째 문자는 관계없고 두 번째 문자가 A인 사람의 정보를 출력하라.

 

<<24>> 커미션이 NULL인 사람의 정보를 출력하라.

 

<<25>> 커미션이 NULL이 아닌 사람의 모든 정보를 출력하라.

 

<<26>> 부서가 30번 부서이고 급여가 $1,500 이상인 사람의 이름, 부서, 월급을 출력하라.

SQL> select ename, deptno, sal

<<27>> 이름의 첫 글자가 K로 시작하거나 부서 번호가 30인 사람의 사원번호, 이름, 부서 번호를 출력하라.

 

<<28>> 급여가 $1,500이상이고 부서 번호가 30번인 사워 중 직업이 MANAGER인 사람의 정보를 출력하라.

 

<<29>> 부서 번호가 30인 사람 중 사원번호를 SORT 하라.

SQL> select 

<<30>> 급여가 많은 순으로 SORT하라.

 

<<31>> 부서 번호로 ASCENDING SORT한 후 급여가 많은 사람 순으로 출력하라.

 

<<32>> 부서 번호로 DESCENDING SORT하고 이름 순으로 ASCENDING SORT, 급여 순으로 DESCENDING SORT하라.

SQL> 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';

6. 문제) 입사일이 81/04/02 이후에 입사한 사원의 정보를 출력하라.

select * from emp where hiredate > '1981-04-02';

7. 문제) 급여가 $800 이상인 사람의 이름, 급여, 부서번호를 출력하라.

select ename, sal, deptno from emp where sal >800;

8. 문제) 부서번호가 20번 이상인 사원의 모든 정보를 출력하라.

select * from emp where deptno>=20;

9. 문제) 이름이 K로 시작하는 사람보다 높은 이름을 가진 사람의 모든

정보를 출력하라.

select * from emp where ename >= 'l';

10. 문제) 입사일이 81/12/09 보다 먼저 입사한 사람들의 모든 정보를

출력하라.

select * from emp where hiredate <'1981-12-09';

11. 문제) 입사번호가 7698보다 작거나 같은 사람들의 입사번호와 이름을

출력하라.

select empno, ename from emp where empno<7698;

12. 문제) 입사일이 81/04/02 보다 늦고 82/12/09 보다 빠른 사원의 이름,

월급, 부서번호를 출력하라.

select ename, sal, deptno from emp where hiredate < '1982-12-09' and hiredate > '1981-12-09';

13. 문제) 급여가 $1,600보다 크고 $3,000보다 작은 사람의 이름, 직업,

급여를 출력하라.

select ename, job, sal from emp where sal between 1600 and 3000;

14. 문제) 사원번호가 7654와 7782 사이 이외의 사원의 모든 정보를

출력하라.

select * from emp where empno between 7654 and 7782;

15. 문제) 이름이 B와 J 사이의 모든 사원의 정보를 출력하라.

select * from emp where ename between 'b' and 'j';

16. 문제) 입사일이 81년 이외에 입사한 사람의 모든 정보를 출력하라.

select * from emp where year(hiredate) <> '1981';

17. 문제) 직업이 MANAGER와 SALESMAN인 사람의 모든 정보를 출력하라.

select * from emp where job ='manager' or job ='salesman';

18. 문제) 부서번호와 20, 30번을 제외한 모든 사람의 이름, 사원번호, 부서번호를 출력하라.

select ename, empno, deptno from emp where deptno <> 20 and deptno <> 30;

19. 문제) 이름이 S로 시작하는 사원의 사원번호, 이름, 입사일, 부서번호

를 출력하라.

select ename, hiredate, empno, deptno from emp where ename like 's%';

20. 문제) 입사일이 81년도인 사람의 모든 정보를 출력하라

select * from emp where year(hiredate) = '1981';

21. 문제) 이름 중 S자가 들어가 있는 사람만 모든 정보를 출력하라.

select * from emp where ename like '%s%';

22. 문제) 이름이 S로 시작하고 마지막 글자가 T인 사람의 모든 정보를

출력하라(단, 이름은 전체 5자리이다)

select * from emp where ename like 's%' and ename like '%t';

23. 문제) 첫 번째 문자는 관계없고, 두 번째 문자가 A인 사람의 정보를

출력하라.

select * from emp where ename like '_a%';

24. 문제) 커미션이 NULL인 사람의 정보를 출력하라.

select * from emp where comm is null;

25. 문제) 커미션이 NULL이 아닌 사람의 모든 정보를 출력하라.

select * from emp where comm is not null;

26. 문제) 부서가 30번 부서이고 급여가 $1,500 이상인 사람의 이름,

부서 ,월급을 출력하라.

select ename, deptno, sal from emp where deptno =30 and sal>= 1500;

27. 문제) 이름의 첫 글자가 K로 시작하거나 부서번호가 30인 사람의

사원번호, 이름, 부서번호를 출력하라.

select empno,ename, deptno from emp where ename like 'k%'or deptno =30;

28. 문제) 급여가 $1,500 이상이고 부서번호가 30번인 사원 중 직업이

MANAGER인 사람의 정보를 출력하라

select * from emp where sal>=1500 and deptno=30 and job='manager';

29. 문제) 부서번호가 30인 사람 중 사원번호 SORT하라.

select * from emp where deptno=30 order by empno;

30. 문제) 급여가 많은 순으로 SORT하라.

select * from emp order by sal desc;

31. 문제) 부서번호로 ASCENDING SORT한 후 급여가 많은 사람 순으로

출력하라.

select *from emp order by deptno asc, sal desc;

32. 문제) 부서번호가 DESCENDING SORT하고, 이름 순으로 ASCENDING SORT,

급여 순으로 DESCENDING SORT 하라.

select *from emp order by deptno desc, ename asc, sal desc;

728x90
Comments