데이터 정의 언어 (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 〜 )
댓글 없음:
댓글 쓰기