본문 바로가기

GSITM_하이미디어/MySQL

MySQL 연습문제 #2

※ Query Quiz_ MySQL 연습문제 #1 이어서

Q31. 직원 중 '놀기만'과 '류별나'의 부서 ID를 40으로 변경
A. update employee set dep_no=40 where emp_name in ('류별나', '놀기만');


Q32. 직원 중 '놀기만'의 급여와 직급을 '공부해'의 급여와 직급으로 변경 (단, subquery 사용할 것)
A. update employee 
     set salary = (

         select salary from (select salary from employee where emp_name='공부해') as aa

     ), 
     position = (

         select position from (select position from employee where emp_name='공부해') as bb

     )
     where emp_name='놀기만';

 

Q33. 아래 내용을 부서 테이블과 직원 테이블에 추가
· 부서: 50, '기획부', '제주’
· 직원: '말똥이', 50, '과장', 4200,'1993-01-03','8911232452719', '01990084876', 13
A. insert into dept values(60, '기획부', '제주’);


A. insert into employee values ('말똥이', 50, '과장', 4200,'1993-01-03','8911232452719', '01990084876', 13);


Q34. 부서의 지역이 제주인 직원 데이터 삭제 (단, subquery 사용할 것)
A. delete from employee where dep_no = (select dep_no from dept where loc='제주');


Q35. 직원의 이름과 부서명과 지역 출력
A. select e.emp_name, d.dep_name, d.loc from employee e
     inner join dept d
     where e.dep_no = d.dep_no;


Q36. 담당 직원이 있는 고객에 한하여 고객 이름, 담당자 이름, 담당자 직급, 부서명을 순서대로 출력
A. select c.cus_name, e.emp_name, e.position, d.dep_name from employee e
     inner join customer c
     on e.emp_no = c.emp_no
     inner join dept d
     where e.dep_no = d.dep_no;

 

Q37. 고객이 할당되어 있는 직원의 이름을 한 번만 출력 (단, 내림차순 정렬하고 distinct 키워드 사용할 것)
A. select distinct e.emp_name from employee e
     inner join customer c
     on e.emp_no = c.emp_no
     order by e.emp_name desc;

 

Q38. 지역별로 근무 중인 직원들의 수와 지역명 출력
A. select d.loc as '지역', count(e.emp_no) as '직원수' from employee e
     inner join dept d
     on e.dep_no = d.dep_no
     group by d.dep_no;


Q39. 직급별로 각 지역에 근무하는 직원들의 수와 지역명, 직급 출력
A. select d.loc as '지역', count(e.emp_no) as '근무자 수', e.position as '직위' from employee e
     inner join dept d
     on e.dep_no = d.dep_no
     group by e.position, d.loc;


Q40. 영업부의 연도별 입사한 직원들의 수를 출력 
※ 단, 연도를 기준으로 내림차순 정렬하고 필드명: 입사년도, 입사자 수 형태로 출력
A. select year(e.hire_date) as '입사년도', count(e.emp_no) as '입사자 수' from employee e
     inner join dept d
     on e.dep_no = d.dep_no
     where d.dep_name = '영업부'
     group by 입사년도 
     order by 입사년도 desc;


Q41. 담당 직원이 있는 고객 중 고객 이름과 고객이 방문해야 할 지역 출력 (필드명: 고객명, 방문지역)
A. select c.cus_name as '고객명', d.loc as '방문지역' from employee e
     inner join customer c
     on e.emp_no = c.emp_no
     inner join dept d
     on e.dep_no = d.dep_no;


Q42. 직원의 이름과 해당 직원의 담당 매니저 이름, 담당 매니저 직급 출력 (selfjoin)
A. select e.emp_name as '직원', m.emp_name as '담당 매니저', m.position from employee e
     inner join employee m
     on e.mgr_emp_no = m.emp_no;


Q43. 트랜잭션 시작 → 부서 테이블 (1000, '인사부', '서울') 데이터 추가 후 → RollBack
A. start transaction; 
     insert into dept(dep_no, dep_name, loc) values (1000, '인사부', '서울');
     select * from dept;
     rollback;
     select * from dept;


Q44. salary_grade 테이블 맨 마지막 위치에 'bigo' 컬럼 추가 (필드 타입: varchar(255))
A. alter table salary_grade add column
     bigo varchar(255) after max_sal;

 

 

 

 

 

'GSITM_하이미디어 > MySQL' 카테고리의 다른 글

MySQL 연습문제 #1  (0) 2024.09.05
MySQL 서브 쿼리와 트랜잭션  (4) 2024.09.04
MySQL 제약 조건과 JOIN  (0) 2024.09.04
MySQL 내장 함수 종류  (0) 2024.09.03
MySQL 활용 기초편  (0) 2024.09.02