오라클〃[공부]3. DML / DDL / DCL 비교

반응형

제목 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(저장된 시점으로 되돌리기)의 명령어들을 가지고 있고 보통 쿼리문을 작성한 다음 마지막에 이 명령어 들을 써주게 되죠.




반응형