robots(default)
SQL コマンド一覧 (SQL の種類)
構造化問い合わせ言語 SQL(えすきゅーえる、しーくえる、しーくぇる、しーける) とは Structured Query Language が語源、その起源は IBM System R に実装された SEQUEL (しーくぇる、しーける(※1): Structured English QUEry Language) である。(1974 年〜 1977 年には現在の SQL の土台が既に完成している)
SQL の規格は ANSI によって 1992 年末にようやくメジャーバージョンとして標準化され現在では ISO でも認定されている。
標準 SQL 規格
- SQL 92 : メジャーバージョン
- SQL 99 : オブジェクト指向を取り入れる
- SQL 2003 : XML 連携
(※1) SEQUEL は英語の sequel (結果=検索結果)にあてた洒落た略語です。
略語にはよくある事ですが、日本ではその発音とは異なった読み方がされています。
ルーツがわからないので和風読みになっただけかもしれません。
日本の一部のユーザーでも SQL : シークェル派が少なくないようです(えすきゅーえる は日本仕様?(※2)
GNU(GNU's Not UNIX):も似たようなものなのでしょうか。ヌーでなくグニューと読んでくださいと 公式ページで主張しています。
(※2) 原文(Oracle 10g) では「SEQUEL later became SQL (still pronounced "sequel")」 発音はそのままですよ。
と書かれています。(Oracle 8i あたりの日本語訳から意思をもって削除しているように見える… JIS で えすきゅーえる と読みなさいと言っていたかも)
また Oracle マイナートリビア?として、昔のそのまた昔 Oracle では IBM に対抗して SQL とは呼ばず UFI (user-Friendly-Interface) と読んでいたらしく、今でも良く目にする EDIT コマンド の保存ファイル名 afiedt.buf にその名残りがある。
データ定義言語 / 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 コマンド一覧
データ制御言語 / DCL (Data Control Language)
Oracle のマニュアルにおいて DCL という文言は(おそらく)存在していない。
何故かは知りませんが推測すると DCL 表記(標準SQL「しばり」)を Oracle を持ち込んでしまうと Oracle 固有の命令も含まれたりして「美しくない」&「後追いの標準化によって面倒」なことになってしまうのを避けているのだろう。
標準SQLや他のベンダの DBMS をみると GRANT、REVOKE、トランザクション制御文と記されてるドキュメントが多いです。
トランザクション制御文
トランザクション制御文 = 一般的に DCL に含まれているもの。
- COMMIT
- ROLLBACK
- SET TRANSACTION
- SAVEPOINT
セッション制御文 ( ALTER SESSION / SET ROLE )
セッションのプロパティを設定する。(暗黙コミットは発生しない)
- ALTER SESSION
- ADVISE { COMMIT|ROLLBACK | NOTHING }
- CLOSE DATABASE LINK dblink
- { ENABLE | DISABLE } COMMIT IN PROCEDURE
- { ENABLE | DISABLE } GUARD
- { ENABLE | DISABLE | FORCE } PARALLEL { DML | DDL |QUERY} [ PARALLEL integer ]
- ENABLE RESUMABLE [ TIMEOUT integer ] [ NAME string ]
- DISABLE RESUMABLE
- SET parameter = value [, value, ...]
- SET ROLE
- NONE
- ALL [ EXCEPT { role | role_list } ]
- role IDENTIFIED BY password
システム制御文 ( ALTER SYSTEM )
インスタンスのプロパティを設定する。(暗黙コミットは発生しない)
- ALTER SYSTEM
- ARCHIVE LOG 〜
- CHECKPOINT [ GLOBAL | LOCAL ]
- CHECK DATAFILES [ GLOBAL | LOCAL ]
- { ENABLE | DISABLE } DISTRIBUTED RECOVERY
- ALTER SYSTEM セッション操作
- DISCONNECT SESSION ' SID , SERIAL# ' [ POST_TRANSACTION ] [ IMMEDIATE ] (※)
- KILL SESSION ' SID , SERIAL# ' [ IMMEDIATE ]
(※) SID, SERIAL# は V$SESSION における値を指定する。
- ALTER SYSTEM データベースの静止(≠停止)
- QUIESCE RESTRICTED
- UNQUIESCE
- ALTER SYSTEM セキュリティ設定
- { ENABLE | DISABLE } RESTRICTED SESSION
- SET ENCRYPTION 〜
- ALTER SYSTEM ディスパッチャー停止
- SHUTDOWN [ IMMEDIATE ] dispatcher_name
- ALTER SYSTEM 初期化パラメータ設定、リセット
- SET parameter = value [, value, ...] [ COMMENT = string ] [ DEFERRED ]
[ SCOPE = {SPFILE | MEMORY | BOTH} ] [ SID = {'*' | sid} ]
- RESET parameter
[ SCOPE = {SPFILE | MEMORY | BOTH} ] [ SID = {'*' | sid} ]