brograming
[Oracle] 8강_Day16 본문
데이터 질의어 - select
DDL - 데이터 정의어. db 객체 생성, 수정, 삭제 (테이블 구조, 테이블 자체)
creat table,alter table, drop table ...
DDL 명령어 하나가 트랜잭션 하나다
DML - 데이터 조작어. 추가, 수정, 삭제 (테이블에 들어가 있는 데이터)
insert, update, delete ...
DCL - 데이터 제어어. 권한 부여, 빼앗는 명령. grant, revoke ...
1. INSERT
--Table emp 생성, 테이블 구조만 복사해서 만들기
create table emp
as
select employee_id emp_id, last_name name, salary, hire_date, department_id dept_id
from employees
where 1 = 0; -- 줄은 복사 x, 값이 복사가 안됨.
desc emp;
select * from emp; -- 값이 복사가 안된걸 확인 할 수 있음
기본키, 외래키 추가






2. UPDATE
수정

3. delete

4. 커밋 / 롤백

- 코드
--Table emp 생성, 테이블 구조만 복사해서 만들기
create table emp
as
select employee_id emp_id, last_name name, salary, hire_date, department_id dept_id
from employees
where 1 = 0; -- 줄은 복사 x, 값이 복사가 안됨.
desc emp;
select * from emp; -- 값이 복사가 안된걸 확인 할 수 있음
insert into emp values(1, 'aaaa', 1000, sysdate, 10);
insert into emp values(2, 'aaaa', 1000, sysdate, 10);
insert into emp values(3, 'bbb', 2000, sysdate, 30);
insert into emp values(4, 'ccc', null, sysdate, null );
insert into emp(emp_id, name, hire_date) values(5, 'ddd', sysdate);
insert into emp values(6, 'eee', 4500, '22/10/05', 50);
-- 서브쿼리 이용해서 행 복사
insert into emp
select employee_id emp_id, last_name name, salary, hire_date, department_id dept_id
from employees
where job_id like '%REP%';
-- 수정
-- where절 없으면 모든 행 salary를 3000원으로 수정
update emp set salary = 3000 where emp_id = 4; -- pk로 조건 검색
update emp set salary = 5000 where name = 'aaaa'; -- name으로 조건 검색
-- 여러 데이터 한번에 수정
update emp set emp_id = 10, name = 'asdf', salary = 3500, hire_date = '12/08/23', dept_id = 40
where emp_id = 1;
update emp set salary = 6500, dept_id = 20
where emp_id = 5;
-- 서브쿼리 이용해서 2열 수정
/*emp의 10번 사원 dept_id, salasry를
employees의 사번 205번 사람과 동일하게 수정 */
update emp
set dept_id = (select department_id
from employees
where employee_id = 205),
salary = (select salary
from employees
where employee_id = 205)
where emp_id = 10;
--삭제
delete from emp where emp_id = 10;
select * from emp;
commit; -- 트랜잭션을 쓰기 완료.
-- 새 트랜잭션 실행 -------
delete from emp; -- 롤백가능
rollback; -- 현재 트랜잭션의 쓰기 작업 취소
select * from emp;
delete emp where dept_id = 80;
select * from departments;
insert into departments values(280, 'dept1', 100, 2500);
insert into departments values(290, 'dept2', 205, 1700);
insert into emp values(11, 'abc', 1000, sysdate, 280);
delete departments where department_id = 280; -- emp에 참조하는 행이 있어서 삭제 안됨
delete departments where department_id = 290; -- emp에 참조하는 행이 없어서 삭제 됨
'Kosta' 카테고리의 다른 글
| [JAVA, Oracle] emp vo, dao, main Day16 (0) | 2023.03.08 |
|---|---|
| [Oracle]JDBC_Day16 (0) | 2023.03.08 |
| [Oracle] 4 ~ 6장_Day15 (0) | 2023.03.07 |
| [Oracle]1 ~ 3장_Day14 (0) | 2023.03.06 |
| [JAVA] 예외처리, 입출력 스트림_Day12 (0) | 2023.03.02 |