※ 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 |