INSERT INTO sales_reps(id, name, salary, commission_pct) SELECT employee_id, last_name, salary, commission_pct FROM employees WHERE job_id LIKE '%REP%'; => 잡id 입력받아서 그잡id에해당대는 행을 입력
UPDATE employees SET job_id = (SELECT job_id FROM employees WHERE employee_id = 205) ,salary = (SELECT salary FROM employees WHERE employee_id = 205) WHERE employee_id = 114;
employee_id 114번 위치의 job_id ,salary 에 205번의job_id ,salary 값이들어감
UPDATE copy_emp SET department_id = (SELECT department_id FROM employees WHERE employee_id = 100) WHERE job_id = (SELECT job_id FROM employees WHERE employee_id = 200);
job_id = 200인곳을 department_id =100으로 바꿔라 업데이트에 join은 사용할수없슴 서브쿼리로 데이터 불러오는 방식을 지원함
delete 서브쿼리를 이용해서 다른쪽값을이용해서 삭제
DELETE FROM employees WHERE department_id = (SELECT department_id FROM departments WHERE department_name LIKE '%Public%');
%Public% 이들어가는 department_name 의 행들의 department_id 삭제
가공이나 묶을땐 열단위 추가삭제변경은 전부 행단위 업데이트 범위를찾아서 열값을찾아 행을넣음
transactions 트랜잭션 mvrc
done->commit wait->wait cancel->rollback -> 가장 마지막 commit 자리로이동 (exit=commit)
리더는 라이터를 막지않고 라이터는 리더를 막지않음
oracle 장점 다중동시사용자지원 - 동시성 - 같은테이블 동시작업가능 단점 명확성의 문제 - 같은 행을 작업하면 문제점발생할 가능성
lock 작업을걸고있는 행은 잠금을걸음
savepoint
rollback
-테이블 만들고 삽입하고 업데이트 연습- create table a (id int); insert into a values( 값); update set id=1 where id=3