제목 3번에서는 오라클에서 부르는 DML, DDL, DCL에 대해서 간단히 알아보고 무엇이 다른지 비교를 해보겠습니다.
DML은 ( Data Manipulation Language ) 데이터 조작어
DDL은 ( Data Definition Language ) 데이터 정의어
DCL은 ( Data Control Languae ) 데이터 제의어
그 외에도 [ Commit, RollBack, SavePoint ]를 포함하고 있는 트랜잭션 제어도 존재하지만 가장 정리할 부분이 많은 위 3가지를 중점적으로 살펴보려고 합니다. 일단 각각 하나씩 정리해보고 마지막에 비교를 해볼게요.
■ DML ( Insert / Update / Delete )
▶▶ Insert ( 데이터 입력 )
▲ INSERT 실제 출력화면
인서트는 테이블안의 칼럼에 데이터를 생성하는 명령어입니다.
데이터타입에 알맞게 숫자면 숫자, 문자면 문자를
넣어줘야 오류가 생기지 않습니다.
▶▶ Update ( 데이터 수정 )
업데이트는 칼럼에 저장된 데이터를 변경하는 명령어입니다.
미리 이렇게 값을 주어놓고 UPDATE 구문을 실행하여 값을 변경합니다.
여기서는 SEQ값 2를 기준으로
Name의 [길동→길동변경]
Hobby의 [축구→축구변경]
변경해보았습니다.
▼
▼
▲ UPDATE 실제 출력화면
이처럼 WHERE에 기준점을 잡고
변경할 칼럼 = 변경할 데이터
를 적어 실행시키면 데이터가 변경됩니다.
▶▶ Delete ( 데이터 삭제 )
▲ DELETE 실제 출력화면
마찬가지로 해당하는 칼럼과 데이타를 WHERE절에 적어주면
위 사진과 같이 삭제가 완료됩니다.
■ DDL ( Create / Alter / Drop / Rename / Truncate )
▶▶ Create ( 데이터베이스 생성 )
▲ CREATE 실제 출력화면
테스트를 하기 위해 제일 먼저 해야되는 절차가 데이터베이스를 만드는거죠.
테이블안에 생성할 칼럼과 데이타입을 명시하고,
null값과 PrimaryKey값등을 추가로 지정할 수 있습니다.
▶▶ Alter ( 데이터베이스 변경 )
▲ Alter [컬럼 생성] 실제 출력화면
초반에 Alter 명령어를 숙지하지 못한다면 컬럼을 추가하지 못할때 헤멜수도 있습니다.
제가 아까전까지도 그랬거든요.
Alter는 테이블을 생성하거나 삭제하거나 변경할 수 있는 유용한 명령어입니다.
▲ Alter [컬럼 변경] 실제 출력화면
이번엔 데이타타입이나 null값등을 변경해보았습니다.
아까 AGE는 number의 데이터타입을 가지고 있었지만
varchar2 타입으로 변경해준거죠.
▲ Alter [컬럼 삭제] 실제 출력화면
테스트를 해봤으니 2개의 컬럼은 지워봐야겠죠??
Alter 안의 drop 명령으로 age와 phone의 컬럼을
삭제해주었습니다.
▶▶ Drop ( 데이터베이스 삭제)
▲ Drop 실제 출력화면
이번엔 테이블 자체를 삭제해버리는 무서운 명령어입니다.
절대 delete와 착각해서는 안되는 이유가
delete = 테이블 내부의 데이터 삭제
drop = 테이블 영구삭제
이며 드롭으로 테이블을 삭제하면 안에 있는 데이터들도 모두 삭제되는 동시에
Rollback으로 복원시킬수 없으니 신중히 사용해야 됩니다.
만약에 Foriegn key 제약조건을 가진 테이블을 제거할 경우
cascade constraint 옵션을 붙입니다.
▶▶ Rename ( 데이터베이스 객체 이름변경 )
▲ Rename 테이블명 변경 실제 출력화면
이름을 변경하는 리네임은 테이블이름과 칼럼명 2개를 변경할 수 있습니다.
먼저 테이블이름을 변경하는방법은
[ rename to 변경할이름 ] 으로 사용하시면 됩니다.
▲ Rename 칼럼명 변경 실제 출력화면
다음은 칼럼명 이름을 변경한 화면입니다.
[ rename column 기존칼럼 to 변경할칼럼] 으로 사용합니다.
▶▶ Truncate ( 데이터베이스 저장공간 삭제 )
▲ Truncate 실제 출력화면
데이타를 삭제하는 방법은 delete도 있지만 truncate 명령어도 있습니다.
대신 truncate는 데이터를 전체삭제하며
자동 commit기능이 되어 rollback으로 데이터를 복구할 수 없습니다.
■ DCL ( Grant / Revoke )
▶▶Grant ( 데이터베이스에 대한 일련권한 부여)
▲ 관리자모드로 hunit 유저에 권한부여
Grant는 유저(사용자)에게
접속권한, 오브젝트 생성권한, dba 권한부여등을 수행할 수 있는 명령어입니다.
유저를 만들기 위해서 관리자모드에서 쿼리문을 실행하였습니다.
▲ HR계정에서 hunit 유저가 test_table을 사용할 수 있도록 객체권한부여
또한 유저에게 select, insert, delete, update등
쿼리문을 실행할 수 있는 객체권한을 부여 할 수 있습니다.
한가지 더하면 Grant create table to 유저명; 을 입력하면
유저가 테이블을 생성할 수 있도록 권한을 줍니다.
▶▶Revoke ( 데이터베이스에 대한 일련권한 취소)
Revoke는 앞에 Grant와 명령어가 비슷하므로 따로 사진을 찍지 않았습니다.
대신 강조해야 되는 부분이 있어 글로 적어볼게요.
- 권한부여와 권한취소의 차이-
Grant select, insert, delete, update on 테이블명 to 유저이름;
Revoke select, insert, delete, update on 테이블명 from 유저이름;
Grant create table to 유저이름;
Revoke create table from 유저이름;
무엇이 다른지 아시겠나요?? 권한을 부여할때는 to를 쓰고, 취소를 할때는 from을 씁니다.
■ DML / DDL / DCL 비교
드디어 머리아픈 사진을 벗어나 글로 정리하게 되었습니다.. 사실 DML과 DDL, DCL 이것들이 요약된 영어로만 이루어져서 그렇지 오라클의 기초인만큼 알고보면 쉬워요.
[ DML ] 데이타조작어는 SQL문으로 처리의 절차에 대한 정보를 얻거나 SQL모듈을 호출하는 작업을 합니다. 쉽게 정리하면 데이터베이스 안의 값들을 입력(Insert),변경(Update),삭제(Delete) 역활을 해요.
[ DDL ] 데이터정의어는 데이터베이스의 스키마 객체를 생성(Create)하고, 변경(Alter)하고, 제거(Drop)하며, 데이터를 버리는(Truncate)들로 이루어져 있죠.
[ DCL ] 데이터제의어는 유저의 권한을 부여(Grant)하거나, 박탈(Revoke)하는등 좀 책임감이 막중한 역활을 합니다. 한마디로 DB를 접근하는 유저들에 대한 문지기죠.
[트랜잭션제어]는 Commit(변경사항 저장) , Rollback(되돌리기), Savepoint(저장된 시점으로 되돌리기)의 명령어들을 가지고 있고 보통 쿼리문을 작성한 다음 마지막에 이 명령어 들을 써주게 되죠.
'프로그래밍 > DataBase' 카테고리의 다른 글
오라클〃[공부]7. Oracle 날짜 내장함수 (0) | 2015.12.20 |
---|---|
오라클〃[공부]6. Oracle 문자 내장함수 (0) | 2015.12.20 |
오라클〃[공부]5. Oracle 숫자 내장함수(Function) (0) | 2015.12.20 |
오라클〃[공부]4. Oracle Select 총 정리 (0) | 2015.12.18 |
오라클〃[공부]2. Oracle 기본 데이터 타입 (0) | 2015.12.17 |
오라클〃[공부]1. 간단한 기초 정리 (0) | 2015.12.17 |
오라클〃OracleServiceORCL 편하게 끄는 방법 (0) | 2015.12.17 |
MySQL〃오라클의 nextval을 MySQL에서 사용하기 (1) | 2015.12.08 |