2017년 11월 23일 목요일

데이터베이스 기초지식...

데이터 정의 언어 (DDL : Data Definition Language)
데이터 조작 언어 (DML : Data Manipulation Language)
데이터 제어 언어 (DCL : Data Control Language)

UPDATE USER_MASTER
SET
    DEPT_NO = '0004',
    MODIFIED_ON = SYSDATE
WHERE
     USER_ID = '0001'

DELETE
  FROM USER_MASTER
 WHERE USER_ID IN ('0020', '0019');


DDL(데이터 정의 언어) 문(Transact-SQL)
Data Definition Language, DDL


문서 형식 정의(Document Type Definition, DTD)

データ定義言語 / DDL (Data Definition Language)
DDL ができること

スキーマ オブジェクトの作成、変更および削除 ( CREATE、DROP 、TRUNCATE、ALTER(※1) 、etc)
権限およびロールの操作 (GRANT、REVOKE)
スキーマ オブジェクトの分析 (ANALYZE(※2))
監査の定義 (AUDIT)
スキーマへのコメントの追加(COMMENT)
(※1) ALTER SESSION (および SET ROLE)、ALTER SYSTEM は、それぞれ セッション制御文、システム制御文 という特別な位置付けがされている。 そして双方とも DDL の特徴である 暗黙コミット が発生しないため DDL ではないか、または、例外事項と思われる。

(※2) DBMS_STATS パッケージはストアドパッケージなので、DDL とは呼べないが、実験してみたところ、 先行したトランザクションを ロールバック できなかったので、どこかでコミットはされている。 自律型トランザクション のプロシージャではないようである。(Oracle 10g 時点)

SQL DDL コマンド一覧

ALTER 〜 すべて (=セッション、システム制御文を含むかどうかわかりません)
ANALYZE
ASSOCIATE STATISTICS / DISASSOCIATE STATISTICS
AUDIT
COMMENT

CREATE 〜 すべて
DROP 〜 すべて
TRUNCATE
FLASHBACK 〜 すべて
PURGE
RENAME

GRANT
REVOKE
NOAUDIT

データ操作言語 / DML (Data Manipulation Language)
Oracle において DML とは Data ( access and ) Manipulation Language となっている。

SQL DML コマンド一覧

SELECT (≠ Manipulate) / SELECT FOR UPDATE
INSERT
DELETE
UPDATE
MERGE Oracle 9i

CALL
LOCK TABLE

EXPLAIN PLAN


データ制御言語 / DCL (Data Control Language)
Oracle のマニュアルにおいて DCL という文言は(おそらく)存在していない。
何故かは知りませんが推測すると DCL 表記(標準SQL「しばり」)を Oracle を持ち込んでしまうと Oracle 固有の命令も含まれたりして「美しくない」&「後追いの標準によって面倒」なことになってしまうのを避けているのだろう。

DCL とは 標準SQLや他のベンダの DBMS をみると GRANT、REVOKE、トランザクション制御文と記されてるドキュメントが多いです。
ちなみに Oracle では GRANT、REVOKE は 「Data Definition Language 文」 に含まれ、COMMT や ROLLBACK は「トランザクション制御文」である。つまり、どちらのコマンドも DCL の一部という表記もありません。

SELECT * FROM table1 WHERE EXISTS ( SELECT /*+ NO_UNNEST */ * FROM table2 〜 )

댓글 없음:

댓글 쓰기