now is better than never
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 14 - 16 본문
SQL/초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡)
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 14 - 16
김초송 2022. 11. 17. 20:06-- 데이터 입력하기 (insert)
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
select *
from emp;
rollback;
insert into dept
values (50, 'RESEARCH', 'SEOUL');
select *
from dept;
rollback;
-- 데이터 저장 및 취소하기 (commit, rollback)
-- rollback: 했던 모든 작업을 취소
update emp
set sal=0
select * from emp;
delete from emp
select * from emp;
rollback;
select * from emp;
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
commit;
-- commit을 한 이후에는 rollback 안 됨
select * from emp;
-- 데이터 수정하기 (update)
update emp
set sal = 3200
where ename='SCOTT';
select * from emp;
update emp
set comm = 7000
where job = 'SALESMAN';
rollback;
-- 데이터 삭제하기 (delete, truncate, drop)
delete from emp
where ename = 'SCOTT';
-- where 절 없으면 테이블 전체 삭제
select * from emp;
truncate table dept;
rollback;
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
commit;
-- 데이터 입력, 수정, 삭제 한번에 하기 (merge)
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;
alter table emp
add dname varchar2(10);
merge into emp e
usting dept d
on (e.deptno = d.deptno)
when matched then
update set e.dname = d.dname;
-- rock: DML 문을 작성할 때 커밋 전에 다른 세션에서 값을 수정/갱신할 수 없게 행을 잠그는 기능
-- 데이터의 일관성을 유지하기 위해
-- update를 실행하자 마자 rock이 걸림
-- select for update절
-- 검색하는 동안 누구도 내가 조회하는 데이터를 갱신할 수 없게 함
-- 롤백이나 커밋해야 다른 세션에서 update 가능
select ename, sal, deptno
from emp
where ename = 'JONES'
for update;
rollback;
-- 서브쿼리를 사용하여 데이터 입력하기
-- 새로운 테이블을 만들고 데이터 입력하기
-- emp 테이블과 똑같은 테이블 만들기 -> 백업하고 싶을 때
create table emp2
as
select *
from emp;
-- emp 테이블의 구조만 갖고오기
create table emp2
as
select *
from emp
where 1=2;
select * from emp2;
-- 다른 테이블의 데이터를 가져와서 한꺼번에 입력
insert into emp2 (empno, ename, sal, deptno)
select empno, ename, sal, deptno
from emp
where deptno=10;
-- 서브쿼리를 사용해서 데이터 수정하기
update emp
set sal = (
select sal
from emp
where ename = 'ALLEN')
where job = 'SALESMAN';
rollback;
-- 서브쿼리를 사용하여 데이터 삭제하기
delete from emp
where sal > (select sal
from emp
where ename='SCOTT');
rollback;
-- 서브쿼리를 사용하여 데이터 합치기
alter table dept
add sumsal number(10);
merge into dept d
using (select deptno, sum(sal) as sumsal
from emp
group by deptno) v
on (d.deptno = v.deptno)
when matched then
update set d.sumsal = v.sumsal;
select * from dept;
rollback;
-- 연습문제: cnt컬럼을 만들고 부서별 인원 수 넣기
-- 데이터 입력하기 (insert)
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
select *
from emp;
rollback;
insert into dept
values (50, 'RESEARCH', 'SEOUL');
select *
from dept;
rollback;
-- 데이터 저장 및 취소하기 (commit, rollback)
-- rollback: 했던 모든 작업을 취소
update emp
set sal=0
select * from emp;
delete from emp
select * from emp;
rollback;
select * from emp;
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
commit;
-- commit을 한 이후에는 rollback 안 됨
select * from emp;
-- 데이터 수정하기 (update)
update emp
set sal = 3200
where ename='SCOTT';
select * from emp;
update emp
set comm = 7000
where job = 'SALESMAN';
rollback;
-- 데이터 삭제하기 (delete, truncate, drop)
delete from emp
where ename = 'SCOTT';
-- where 절 없으면 테이블 전체 삭제
select * from emp;
truncate table dept;
rollback;
insert into emp(empno, ename, sal, job, hiredate)
values (2812, 'JACK', 3500, 'ANALYST', to_date('2019/06/05','RRRR/MM/DD') );
commit;
SQL문의 종류
- QUERY문
select, from, where, group by, having, order by - DML문 (Data Manipulation Languae) : insert, update, delete, merge
- DDL문
- DCL문
- TCL문
- 데이터 삭제하기
* truncate: rollback 되지 않음, 실행과 동시에 commit = 테이블 영구히 삭제
* drop은 휴지통 기능있어서 회수할 수 있음.
명령어 | 데이터 | 저장공간 | 저장구조 |
delete | 삭제 | 유지 | 유지 |
truncate | 삭제 | 삭제 | 유지 |
drop | 삭제 | 삭제 | 삭제 |
'SQL > 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡)' 카테고리의 다른 글
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 23 - 25 (0) | 2022.11.27 |
---|---|
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 22 (0) | 2022.11.26 |
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 17 - 20 (0) | 2022.11.23 |
[easyupclass] 초심자를 위한 데이터베이스 및 빅데이터 플랫폼 구축과정(SQL, 하둡) 9 - 13차시 (0) | 2022.11.17 |