Goals
- DELETE, TRUNCATE, DROP
- DML, DDL
- Transaction, SESSION, LOCK
- ALTER vs 사용자 계정 unlock 전환
- CREATE USER
- CREATE/DROP SEQUENCE
Notes
DELETE, TRUNCATE, DROP
DELETE FROM 테이블이름;
➢ 테이블의 모든 행(row)의 데이터를 삭제, 테이블 크기가 줄어들 지는 않음. 사용했던 메모리 공간이 남아있음. --> ROLLBACK 가능
TRUNCATE TABLE 테이블이름;
➢ 테이블의 모든 행(row)의 데이터를 삭제하고, 행(row) 자체도 삭제 --> ROLLBACK 불가능
DROP TABLE 테이블이름;
➢ 테이블 자체를 DBMS에서 삭제
- DML (Data manipulation language) : insert, update, delete
-- commit을 명시적으로 수행한 경우에만 데이터베이스에 영구히 저장
--ROLLBACK을 통해서 최종 COMMIT 상태로 되돌릴 수 있음.
SELECT * from order_items;
delete from order_items;
rollback;
- DDL ( Data Definition Language) : create, alter, truncate, drop
-- DDL 문장은 자동으로 COMMIT 됨.
truncate table order_items;
>>시스템 메세지 :
- 주의
--> Transaction 시작 :
insert into A .....
update B ....
create table ... // 자동으로 insert/update 도 commit된다.
- Transaction
-- 더 이상 분할할 수 없는 최소 수행단위. 한 개 이상의 DML
-- ALL OR NOTHING
- 세션이란?
○ 데이터베이스 접속을 시작으로 접속을 종료하기까지 전체 기간
○ 하나의 세션에는 여러 개의 트랜잭션이 존재
○ 특정 세션에서 수행하는 데이터의 변경이 확정되기 전까지, 다른 세션에서는 본래의 데이터를 보여줌.
- Session, Transaction, Lock
SQL 종류 (진)
- DML(Data manipulation language : 데이터 조작 언어
--> insert update delete
- DDF(Data Definition Language) : 데이터 정의 언어(테이블을 정의하는 것)
--> create, alter, truncate, drop
- DQL(Data Query Langauge) : 데이터 쿼리(질의) 언어. Select
- TCL(TransactionControlLANGUAGE) : 트랜잭션 관리 언어. COMMIT, ROLLBACK
LOCK
● LOCK이란?
○ 데이터 잠금
○ 조작중인 데이터를 다른 세션이 조작할 수 없음
● LOCK 종류
○ 행 레벨 LOCK
■ 조작중인 행에 LOCK
○ 테이블 레벨 LOCK
■ DML를 사용하여 데이터가 변경중인 테이블에 LOCK
■ 데이터정의어(DDL) 사용 불가
ALTER
ALTER TABLE 테이블이름 RENAME COLUMN 변경전컬럼이름 TO 변경후컬럼이름;
➢ 테이블의 컬럼 이름 변경
ALTER TABLE 테이블이름 MODIFY 컬럼이름 데이터타입;
➢ 테이블의 데이터 타입 변경
ALTER TABLE 테이블이름 ADD 컬럼이름 데이터타입;
➢ 테이블에 새로운 컬럼을 추가
ALTER TABLE 테이블이름 DROP COLUMN 컬럼이름;
➢ 테이블의 컬럼을 삭제
ALTER TABLE 테이블이름 ADD CONTSTRAINTS 제약조건이름;
➢ 테이블에 제약 조건을 추가
ALTER TABLE 테이블이름 DROP CONTSTRAINTS 제약조건이름;
➢ 테이블에서 제약 조건을 삭제
-- 테이블의 컬럼 이름 변경
alter table ex2
rename to ex02;
-- 테이블의 컬럼 데이터 타입 변경
alter table ex02
modify ex_text varchar2(100);
-- 테이블에 새로운 컬럼 추가
alter table ex02
add ex_date date;
-- 테이블에서 컬럼 삭제
alter table ex02
drop column ex_date;
--제약조건 추가
alter table ex02
add constraint pk_ex02 primary key (eid);
--not null로 제약조건 변경
alter table ex02
add constraint nn_ex02 check (ex_text is not null);
--제약조건 삭제
alter table ex02
drop constraint pk_ex02;
-- 계정 unlock으로 전환 (sysdba계정)
alter user scott identified by tiger account unlock;
-- 계정 삭제
drop user scott
- CREATE USER 아이디 IDENTIFIED BY 비밀번호;
➢ 새로운 생성자 생성
SQL> CREATE USER scott IDENTIFIED BY tiger;
GRANT 권한, … TO 사용자 아이디;
➢ 생성된 사용자에게 권한 부여
SQL> GRANT connect , resource TO scott;
COMMIT;
➢ DB에 변경 내용 저장
- CREATE / DROP SEQUENCE
시퀀스 : 어떤 규칙에 맞는 / 연속된 숫자들을 / 자동으로 생성해 주는 객체
CREATE SEQUENCE 시퀀스이름
[INCREMENT BY 정수]
[START WITH 정수]
[MAXVALUE 정수 | NOMAXVALUE]
[MINVALUE 정수 | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE 정수 | NOCACHE]
[ORDER | NOORDER];
DROP SEQUENCE 시퀀스이름;
기본값
○ INCREMENT BY: 1
○ START WITH: 1
○ MAXVALUE 정수: NOMAXVALE (1027, -1)
○ MINVALUE 정수: NOMINVALUE (1, -1026)
○ CYCLE: NOCYCLE
○ CACHE: 20
○ ORDER: NOORDER
시퀀스의 사용
'DB > Oracle' 카테고리의 다른 글
Oracle DB10_ PL/SQL 조건문,반복문,데이터타입 (0) | 2019.09.30 |
---|---|
Oracle DB9_PL/SQL 시작 (0) | 2019.09.26 |
Oracle DB7_DDL, DML, 제약조건, EXCEL문서 SQL에 삽입하기 (0) | 2019.09.23 |
Oracle DB6_ 고유키,외래키,Join (0) | 2019.09.22 |
Oracle DB5_ 그룹함수, 서브쿼리 (0) | 2019.09.20 |