SQL의 종류
1. QUERY문 :select
from
where
group by
having
order by
2. DML문 : Data Manipulation Language
insert, update, delete, merge
3. DDL문
4. DCL문
5. TCL문
78. 데이터 입력하기(INSERT)
-- 예제78. 다음과 같이 사원테이블에 데이터를 입력하세요.
insert into emp ( empno, ename, sal, job, hiredate )
values ( 2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05', 'RRRR/MM/DD') ) ;
select * from emp ;
/* 예제78_문제1. 부서테이블에 아래의 데이터를 입력하세요
부서번호 : 50번 / 부서이름 : RESERCH / 부서위치 : SEOUL */
select * from dept ;
insert into dept (deptno, dname, loc)
values ( 50, 'RESEARCH', 'SEOUL' ) ;
79. 데이터 수정하기(UPDATE)
-- 예제79. SCOTT 의 월급을 3200 으로 수정하세요.
select *
from emp
where ename = 'SCOTT' ;
update emp
set sal = 3200
where ename = 'SCOTT' ;
-- 예제79_문제1. 직업이 SALESMAN 인 사원들의 커미션을 7000 으로 수정하세요.
select *
from emp
where job = 'SALESMAN' ;
update emp
set comm = 7000
where job = 'SALESMAN' ;
1. delete : delete from 테이블명; // 데이터 삭제 / 저장공간 유지 / 저장구조 유지
2. truncate : truncate table 테이블명; // 데이터 삭제 / 저장공간 삭제 / 저장구조 유지
3. drop : drop table 테이블명; // 데이터 삭제 / 저장공간 삭제 / 저장구조 삭제
80. 데이터 삭제하기(DELETE, TRUNCATE, DROP)
-- 예제80. SCOTT 의 데이터를 삭제하세요.
delete from emp
where ename = 'SCOTT' ; -- where 절 없이 사용시 모든 데이터가 삭제 되니 주의 할것.
select *
from emp;
-- 예제80_문제1. 월급이 3000 이상인 사원들을 삭제하세요.
delete from emp
where sal >= 3000 ;
-- 예제80_문제2. 부서테이블 지우는데 구조만 남기고 다 삭제하세요.
truncate table dept ; -- commit도 동시에 가능하다.
select *
from dept ;
81. 데이터 저장 및 취소하기(COMMIT, ROLLBACK)
-- 예제81. 데이터 입력 작업을 영구히 저장하거나 취소하세요
select * from emp ;
insert into emp (empno, ename, sal, deptno)
values( 9382, 'jack', 3000, 10 );
rollback;
82. 데이터 입력, 수정, 삭제 한번에 하기(MERGE)
-- 예제82. 사원테이블에서 부서위치 컬럼을 생성하세요. 또한 동시에 부서 테이블만 있는 부서번호를 사원테이블에 입력하세요
alter table emp
add loc varchar2(10) ; -- 문자형
select *
from emp ;
merge into emp e
using dept d
on ( e.deptno = d.deptno )
when matched then
update set e.loc = d.loc
when not matched then
insert ( e.empno, e.deptno, e.loc ) values (1111, d.deptno, d.loc) ;
select * from emp ;
-- 예제82_문제1. 사원테이블에 부서명 컬럼을 추가하고 해당 사원의 부서명을 값을 갱신하세요.
alter table emp
add dname varchar2(10) ;
merge into emp e
using dept d
on ( e.deptno = d.deptno )
when matched then
update set e.dname = d.dname ;
select * from emp ;
83. 락(ROCK) 이해하기
-- 예제83. 2개의 창으로 확인하기
select * from emp ;
-- 첫번째 창
update emp
set sal = 9000
where ename = 'JONES' ;
commit; -- 저장을 하기 전까지는 두번째 창에서 로딩만 될 뿐 update가 되지 않음.
-- 두번째 창
update emp
set sal = 0
where ename = 'JONES' ;
select *
from emp ; -- 'JONES'의 월급을 확인 했을 때, 9000으로 확인.
84. SELECT FOR UPDATE절 이해하기
/* select fro update절 */
-- 예제84.
select ename, sal, deptno
from emp
where ename = 'JONES'
for update ;
-- 예제84_문제1. 부서번호가 10, 20번인 사원들의 이름과 직업과 부서번호를 조회하는 동안 그 누구도 부서번호 10번, 20번인 사원들의 데이터를 갱신하지 못하도록 하시오.
select ename, job, deptno
from emp
where deptno in( 10, 20 )
for update ;
85. 서브 쿼리를 사용하여 데이터 입력하기
-- 예제85. 사원테이블과 같은 구조의 새로운 테이블을 생성하고 사원 테이블에서 부서번호가 10번인 사원들의 사원번호, 이름, 월급, 부서번호를 생성한 테이블에 입력하세요.
create table emp2
as -- 데이터와 구조를 백업하고 싶을 때에는 사용하는 것.
select *
from emp
where 1 =2 ;
select * from emp2 ;
drop table emp2 ;
select *
from emp
where 1 =2 ; -- emp 데이터없고 구조만 생성
insert into emp2 (empno, ename, sal, deptno) -- values 를 사용하게 되면 하나의 행만 update가 된다.
select empno, ename, sal, deptno -- 필요한 컬럼명만 작성
from emp
where deptno = 10 ;
select * from emp2 ;
-- 예제85_문제1. 부서테이블과 같은 구조의 테이블의 DEPT2 라는 이름으로 생성하고 부서번호가 20번, 30번의 모든 컬럼의 데이터를 DEPT2에 입력하시오.
create table dept2
as
select *
from dept
where 1 = 2;
select * from dept;
select * from dept2 ;
insert into dept2
select *
from dept
where deptno in (20, 30) ;
86. 서브 쿼리를 사용하여 데이터 수정하기
-- 예제86. 직업이 SALESMAN 인 사원들의 월급을 ALLEN의 월급으로 수정하세요.
select *
from emp ;
update emp
set sal =
( select sal
from emp
where ename = 'ALLEN' )
where job = 'SALESMAN' ;
-- 예제86_문제1. 부서번호가 30번인 사원들의 직업을 MARTIN의 직업으로 변경하세요.
select * from emp ;
update emp
set job =
( select job
from emp
where ename = 'MARTIN' )
where deptno = 30 ;
87. 서브 쿼리를 사용하여 데이터 삭제하기
-- 예제87. SCOTT 보다 더 많은 월급을 받는 사원들을 삭제하세요.
delete from emp
where sal >
( select sal
from emp
where ename = 'SCOTT' ) ;
select * from emp ;
-- 예제87_문제1. ALLEN 보다 늦게 입사한 사원들의 모든 행을 지우세요.
delete from emp
where hiredate >
( select hiredate
from emp
where ename = 'ALLEN' ) ;
select * from emp ;
'SQL 기초 실무 > 중급편Ⅰ, Ⅱ' 카테고리의 다른 글
23.09.27. SQL Developer 예제 93 ~ 110번 (2) | 2023.10.02 |
---|---|
23.09.25. SQL Developer 예제 88 ~ 92번 (0) | 2023.09.28 |
23.09.22. SQL Developer 예제 67 ~ 77번 (0) | 2023.09.27 |
23.09.20. SQL Developer 예제 56 ~ 66번 (0) | 2023.09.20 |