Oracle (101) 썸네일형 리스트형 SQL Select 절에 LOCK 을 거는 For Update LOCK 은 UPDATE 문을 수행할때 필요한 것. → 내가 변경하고자 하는 데이터를 다른 세션이 변경하지 못하도록 막을때 필요 SELECT 절에도 LOCK 을 걸 수 있다. → 마지막 절에 for update 라고 작성해 주면 select 절에 lock 이 걸린다. 왜 select 절에도 lock 이 필요할까? → 내가 만약 밤 12 시에 오늘의 총 매출 집계를 하고싶고 지금 select 하는 그 시점의 데이터로 집계하고 싶을때 누구도 내가 집계하려는 데이터를 변경하면 안된다. ~ 그래서 그 누구도 데이터를 갱신하지 못하게 할때 for update 를 사용한다. 예시 select ename, sal from emp where ename = 'KING' FOR UPDATE ; -> 마지막 문장에 for .. SQL 쿼리에 LOCK이 걸리는 경우 특정'행'을 갱신을 하는 update 문장이 있다면, 그 update 문장을 수행하는 session 은 update 하는 '행'에lock 을 건다. 그리고 그 lock은 commit 이나 rollback 을 할때까지 유지 됩니다. lock 을 거는 이유는? 내가 변경하고 있는 데이터를 다른사람이 변경하지 못하도록 하기 위해서. update 하는 '행' 전체에 lock 을 건다. → 만약 내가 king 의 월급을 변경했다면 다른 session 들은 king 의 월급 외에도 다른 어떤 컬럼의 데이터도 변경 할 수 없다. → king 말고 allen 의 데이터는 변경 가능하다 SQL [TCL] COMMIT / ROLLBACK COMMIT : 지금까지 작업한 DML 작업 (insert, update, delete, merge ) 를 데이터 베이스에 영구히 저장하겠다. rollback : 지금까지 작업한 DML 작업(insert, update, delete, merge) 를 모두 취소하겠다. insert.............어쩌고저쩌고 insert.................어쩌고저쩌고 입력한 작업물들 을 commit................ —————→ 여기까지는 모두 저장이 된것이고 insert................ update................. rollback ; ----------------> commit 다음 insert 문부터 전부다 rollback 이 된다. 문제 사원테이블의 월급을 모두 .. SQL 자동커밋 기능 활성화 시키기 자동커밋 상태 확인하기 SHOW AUTOCOMMIT ; 자동커밋기능 활성화 시키기 set autocommit on ; → autocommit IMMEDIATE 문장 나옴 자동커밋 기능을 활성화 시키면 DML 문장이 실행 될 때마다 자동 커밋 된다. 자동커밋기능 비활성화 시키기 set autocommit off ; SQL [DML문] MERGE 데이터 삽입,수정,삭제 한번에 1. 현업에서는 업데이트 문장을 빠르게 수행 하고싶을때, 튜닝의 용도로 많이 사용합니다. 2. INSERT, UPDATE, DELETE 를 한번에 수행하는 SQL 이고, 3. 주로 대용량 데이터를 한번에 UPDATE 하여 SQL 성능을 개선하기 위해서 사용됩니다. 예제 : emp 와dept 조인하여 사원이름, 부서위치 출력 select e.ename, d.loc from emp e, dept d where e.deptno = d.deptno; 예제 emp 와 dept 를 조인하지 않고 그냥 emp 테이블에서 부서위치에 대한 데이터도 보기위해 emp 테이블에 loc 컬럼을 추가 alter table emp add loc varchar2(10); 예제 : loc 에 각각 update 를 해야하는데 updat.. SQL [TCL] COMMIT 과 ROLLBACK 이 암시적으로 수행되는 경우 commit 1. 정상 종료 했을때다시 delete 후 rollback 하지 않고 exit 을 했을때 다시 들어가서 select 해보면 다 삭제 되어있다. —> 정상종료 되지 않으면 (exit ) 2. ddl 문을 실행 했을때 (create, alter, drop, truncate, rename) --> delete, update 문 실행후 그다음 ddl 문을 실행 하게 되면 앞의 delete, update 문은 암시적으로 commit 이 수행 되게 된다. 3. dcl 문을 실행했을때 ( grant , revoke ) rollback delete 했는데 갑자기 컴퓨터가 비정상적으로 종료되었을때 ex ) exit 없이 그냥 창을 닫거나, 컴퓨터가 그냥 꺼지거나 하는 모든 상황 SQL table backup emp_backup 이라는 이름으로 emp 테이블과 똑같은 테이블을 생성합니다. create table emp_backup as select * from emp; → select * from emp_backup; ——→ 확인 SQLdeveloper 로 백업하는 방법 엑셀이나 csv 로 생성해 놓는다. 백업 방법 오른쪽 버튼 - 데이터 익스포트 형식을 csv 또는 엑셀로 변경 해 준다. 다름이름 저장 의 단일파일을 → 별도의 파일로 선택 저장위치 내가원하는위치 설정 저장위치 데스크탑에서 디렉토리이름 백업을 생성하여 저장해 준다. (다른방법으로해도됨) 보면 메모장으로 생성되어있음 SQL [DML문] Drop - 수행되면서 암시적으로 commit 전부 다 지운다. 취소여부 - 불가능 플래쉬백 여부 - 가능 수행이 되면서 commit 이 자동적으로 수행된다. → 그래서 rollback 안됨. drop table emp; rollback; ———————> 안됨. 도스창에서 휴지통 보는법 show recyclebin; 도스창에서 휴지통 비우기 purge recyclebin 오라클에서 휴지통 보는법 select * from user_recyclebin; 휴지통에서 emp 테이블을 복구하기 flashback table emp to before drop ; select * from emp; —————————> 다시 나타남. 이전 1 2 3 4 5 6 7 8 ··· 13 다음