데이터조작어(DML) / 트랜잭션(Transaction) / 치환변수

gummy·2023년 1월 5일
0

국비일지

목록 보기
24/30

230105 목요일

1. 데이터조작어(DML)

📚 테이블에 새로운 행 추가(insert)

insert into 테이블명[컬럼명]
values ();
  • 한 행씩 삽입
  • 컬럼명 생략가능, 대신 값을 기본 컬럼 순서대로 작성해야 한다.
  • 컬럼명1, 컬럼명2, 컬럼명3, ... ➡ 값1, 값2, 값3, ...
  • null값은 해당되는 값에 null을 적으면 된다.

서브쿼리 활용

insert into 테이블명[컬럼명]
    select 컬럼명
    from 테이블명
    where 조건문;
  • 여러 행 삽입

📚 테이블의 기존 행 수정(update)

update 테이블명
set 컬럼 =where 조건문;

📚 테이블의 기존 행 삭제(delete)

  • 특정 행 삭제
delete from 테이블명
where 조건문;
  • 모든 행 삭제
delete from 테이블명;

2. 트랜잭션(Transaction)

  • 논리적인 작업 단위
  • 여러 DML [insert, update, delete] 이 모여서 하나의 트랜잭션이 구성된다.
  • DML 작업 후 commit, rollback으로 트랜잭션 종료해한다.
  • 하나의 DDL [create, alter, drop, truncate] 구문 (autocommit 내포) 이 하나의 트랜잭션을 구성한다.
  • 하나의 DCL [grant, revoke] 구문 (autocommit 내포) 이 하나의 트랜잭션을 구성한다.

📚 트랜잭션 제어 명령어(TCL)

  • COMMIT : 트랜잭션을 영구히 저장한다.
    - 변경 작업을 DB에 영구히 저장하는 명령어
    - 트랜잭션이 종료되는 명령어
SQL> commit;
  • ROLLBACK : 트랜잭션 처음으로 되돌린다.
    - 변경 작업을 트랜잭션 처음으로 되돌리는(취소) 명령어
    - 트랜잭션이 종료되는 명령어
SQL> rollback;
  • SAVEPOINT : 트랜잭션 진행 중 되돌아갈 지점(기점, 포인트)을 생성한다.
    - 트랜잭션 진행 중 되돌아갈 지점(기점,포인트)을 만드는 명령어
    - 트랜잭션 진행 중 원하는 지점에 원하는 포인트명으로 여러개 생성 가능
    - 단, 포인트의 위치, 이름을 기억하고 있어야 사용가능하다.

▪ 저장점 생성

SQL> savepoint 포인트명;

▪ 저장점으로 롤백

SQL> rollback to 포인트명;

- 트랜잭션 종료와는 상관없다. 여전히 트랜잭션 진행 중 상태이다.
- commit, rollback으로 트랜잭션 종료 시 자동 지워진다.

📚 트랜잭션 시작 및 종료

⏩트랜잭션 시작
update ---;
insert ---;
update ---;
commit;
⏹트랜잭션 종료

⏩트랜잭션 시작
insert ---;
delete ---;
rollback; → 시작부분으로 돌아감
⏹트랜잭션 종료

⏩트랜잭션 시작
create table ---; (DDL)
(autocommit 내포)
⏹트랜잭션 종료

⏩트랜잭션 시작
grant table ---; (DDL)
(autocommit 내포)
⏹트랜잭션 종료

⏩트랜잭션 시작
update ---;
update ---;
insert ---;
create table ---; (DDL)
(autocommit 내포)
⏹트랜잭션 종료

⏩트랜잭션 시작
delete ---;
update ---;
SQLPlus 또는 SQL Developer를 정상 종료함.
(autocommit)
⏹트랜잭션 종료

⏩트랜잭션 시작
delete ---;
update ---;
SQLPlus 또는 SQL Developer를 비정상 종료함.
(autorollback)
⏹트랜잭션 종료

3. 치환변수

select 컬럼명
from 테이블명
where 컬럼명 = &emp_id (&변수명)
  • 쿼리구문을 실행할때마다 ( /엔터 ) 값을 물어봄.
  • 쿼리구문 어디든 들어갈 수 있다.
select employee_id, last_name, job_id
from employees
where lower(job_id)=lower('&job');
  • 대소문자 구분한다.
  • 대문자인지 소문자인지 모르니까 lower을 사용하기!
insert into 테이블명
values (&변수명, '&변수명', &변수명,...);
  • 문자를 쓰는 내용일 때는 '   ' 사용

🙆‍♀️ 치환변수를 사용한 구문을 스크립트 파일로 만들어놓고 쓰고 싶을때마다 꺼내 쓸 수 있다 !!

📚 SQL Plus로 스크립트 파일 생성 및 실행

  • 스크립트 파일에 파일 생성하기
SQL> save /home/oracle/이름.sql(원하는 위치(경로), 원하는 이름)


스크립트 파일에 저장되는 구문은 바로 앞에서 작성된 것이다.

new_dept.sql이 만들어져 있는 것을 볼 수 있다!

  • 스크립트에 저장된 구문 보기
SQL> cat 이름.sql

  • SQL Plus에서 스크립트 파일 불러와서 실행하기
SQL> @/home/oracle/이름.sql


차례대로 나오는 값을 입력하면 행이 추가된다.

📚 SQL Developer로 스크립트 파일 생성 및 실행



0개의 댓글