sqlについて、調べてみた件

SQL( エ ス キ ュ ー エ ル  ( 音 声 フ ァ イ ル )、 シ ー ク ェ ル  ( 音 声 フ ァ イ ル )、 シ ー ケ ル ) は 、 関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) に お い て 、 デ ー タ の 操 作 や 定 義 を 行 う た め の デ ー タ ベ ー ス 言 語 ( 問 い 合 わ せ 言 語 ) 、 ド メ イ ン 固 有 言 語 で あ る 。 エ ド ガ ー ・ F・ コ ッ ド に よ っ て 考 案 さ れ た 関 係 デ ー タ ベ ー ス の 関 係 モ デ ル に お け る 演 算 体 系 で あ る 、 関 係 代 数 と 関 係 論 理 ( 関 係 計 算 ) に あ る 程 度 基 づ い て い る 。  デ ー タ ベ ー ス 言 語 の 国 際 標 準 と し て の SQLは 何 か の 略 語 で は な い 。 

SQLは 、 シ ー ク ェ ル  と 読 ま れ る こ と も あ る 。 こ れ は 、 SQLの 元 と な っ た デ ー タ ベ ー ス 言 語 が 、 IBMが 開 発 し た RDBMSの 実 験 実 装 で あ る System Rの 操 作 言 語 「 SEQUEL (Structured English Query Language)」 で あ っ た こ と が 由 来 で あ る 。 

SQLに 対 し て は 、 関 係 代 数 と 関 係 論 理 に 忠 実 に 準 拠 し て い な い と し て 批 判 す る 意 見 が あ る ( The Third Manifesto – ク リ ス ・ デ イ ト 、 ヒ ュ ー ・ ダ ー ウ ェ ン ) 。 

標 準 SQL規 格 

当 初 は 特 に 統 一 標 準 規 格 が 存 在 し な い 状 況 で 、 各 関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) ベ ン ダ ー ご と に さ ま ざ ま な 拡 張 が な さ れ て き た 。  近 年 に な っ て ANSI、 後 に ISOで 言 語 仕 様 の 標 準 化 が 行 わ れ て お り 、 制 定 さ れ た 年 ご と に SQL86、 SQL89、 SQL92、 SQL:1999、 SQL:2003、 SQL:2006、 SQL:2008、 SQL:2011な ど の 規 格 が あ る が 、 対 応 の 程 度 は ベ ン ダ ー ご と に バ ラ バ ラ で あ る 。 こ れ は 標 準 SQL策 定 に 時 間 が か か り す ぎ た こ と に よ り 、 ビ ジ ネ ス の 現 状 か ら 早 期 の 機 能 拡 張 が 迫 ら れ た ベ ン ダ ー の 都 合 と 、 独 自 構 文 を 頻 繁 に 利 用 し て い た ユ ー ザ に 対 し 、 互 換 性 保 持 を 保 証 す る 必 要 も あ っ た た め で あ る 。 

SQL規 格 は 非 常 に 多 く の 改 正 が 行 わ れ た 。 制 定 年 度 順 に 代 表 的 な 規 格 を 以 下 に 挙 げ る 。 

  • デ ー タ 操 作 言 語  (DML) 仕 様 策 定 : COBOL、 FORTRAN、 PL/Iな ど 、 親 言 語 ( 母 言 語 、 ホ ス ト 言 語 と も 言 う ) へ の 埋 込 み SQL文 仕 様 策 定 
  • デ ー タ 定 義 言 語  (DDL) 仕 様 策 定  ( CREATE TABLE文 、 CREATE VIEW文 、 GRANT文 。 た だ し 、 DROP文 、 ALTER文 、 REVOKE文 は な し ) 
  • 制 約 お よ び 整 合 性 機 能 を 追 加  ( DEFAULT、 UNIQUE制 約 、 NOT NULL制 約 、 PRIMARY KEY制 約 、 CHECK制 約 、 参 照 整 合 性 制 約 ) 
  • C言 語 へ の 埋 込 み SQL文 仕 様 の 追 加 
  • 直 交 性 の 改 善  ( 表 式 ) 
  • デ ー タ 型 の 拡 張  ( 可 変 長 文 字 列 、 ビ ッ ト 、 文 字 集 合 、 日 付 ・ 時 刻 ・ 時 間 間 隔  (DATE, TIME, TIMESTAMP, INTERVAL)) 
  • 外 部 結 合  (OUTER JOIN)
  • 定 義 域  (DOMAIN)
  • 表 明  (ASSERTION)
  • 一 時 表  ( TEMPORARY TABLE: 永 続 化 し な い デ ー タ を 格 納 ) 
  • DDL仕 様 追 加  ( DROP文 、 ALTER文 ) 
  • 動 的 SQL仕 様 
  • 前 方 ・ 後 方 ス ク ロ ー ル 可 能 な カ ー ソ ル サ ポ ー ト 
  • ク ラ イ ア ン ト /サ ー バ シ ス テ ム の た め の CONNECT/DISCONNECT文 
  • 正 規 表 現 に よ る 値 照 合 
  • 共 通 表 式 (WITH句 )
  • 再 帰 ク エ リ 
  • OLAP (ROLLUP、 CUBE、 GROUPING SETS)
  • ユ ニ オ ン  (UNION)・ 結 合 経 由 の 更 新 
  • カ ー ソ ル 操 作 の 機 能 強 化  ( ト ラ ン ザ ク シ ョ ン 完 了 後 の オ ー プ ン 状 態 保 持 ) ・ ユ ー ザ 定 義 権 限  (ROLE)・ ト ラ ン ザ ク シ ョ ン 管 理 の 新 機 能  (SAVEPOINT)
  • SQL/PSM強 化  ( 制 御 構 文  ( IF、 WHILEな ど )  サ ポ ー ト な ど ) 
  • SQLJ ( Javaを 親 言 語 と す る 埋 め 込 み SQL規 格 ) 
  • デ ー タ ベ ー ス ト リ ガ 
  • ユ ー ザ 定 義 関 数  ( ス ト ア ド フ ァ ン ク シ ョ ン ) 
  • 非 ス カ ラ ー 型 の 新 し い デ ー タ 型 : 真 理 値  (BOOLEAN) 型 と 配 列  (ARRAY) 型 、 LOB (Large Object)、 ユ ー ザ 定 義 型 、 構 造 型 
  • 上 位 表 と 下 位 表  ( ス ー パ ー テ ー ブ ル と サ ブ テ ー ブ ル ) 
  • オ ブ ジ ェ ク ト 指 向 の 考 え 方 を 取 り 入 れ た オ ブ ジ ェ ク ト 関 係 デ ー タ ベ ー ス 技 術  (ORDB)。 配 列 型 や ユ ー ザ 定 義 型 、 ユ ー ザ 定 義 関 数 と 上 位 表 /下 位 表 仕 様 に よ り 実 現 さ れ て い る 。 
  • SQL/MM ( マ ル チ メ デ ィ ア : フ レ ー ム ワ ー ク 、 全 文 検 索 、 空 間 デ ー タ  (Spatial)、 静 止 画 像 ) 
  • SQL/MED ( 外 部 デ ー タ 管 理 : 非 関 係 デ ー タ  ( 順 編 成 フ ァ イ ル や 階 層 型 デ ー タ ベ ー ス な ど )  や 他 社 の 関 係 デ ー タ を SQLで ア ク セ ス す る た め の 規 格 ) 
  • SQL/OLB ( オ ブ ジ ェ ク ト 言 語 バ イ ン デ ィ ン グ : SQLJを 標 準 化 す る 。 Javaプ ロ グ ラ ム に 埋 め 込 む SQL文 ) 
  • XML関 連 の 機 能 
  • ウ ィ ン ド ウ 関 数 
  • 順 序 ( シ ー ケ ン ス ) の 標 準 化 と 識 別 キ ー 列 に 対 す る 値 の 自 動 生 成 を 行 う 列 仕 様 の 導 入  ( ID型 ) 
  • (See Eisenberg et al.: SQL:2003 Has Been Published.)

  • INSTEAD OF ト リ ガ 
  • TRUNCATE TABLE ス テ ー ト メ ン ト 
  • 配 列 型 の 集 約 と 展 開  (array_agg, unnest)
  • SQLと オ ン ラ イ ン 処 理 

    当 初 は 関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) に 端 末 か ら 直 接 命 令 を 発 行 す る こ と を 想 定 し て い た た め 、 制 御 文 法 の 仕 様 が 存 在 し な か っ た 。 こ の た め 、 SQLは 「 宣 言 型 プ ロ グ ラ ミ ン グ 言 語 」 と 分 類 さ れ る 。 こ れ に 対 し 、 COBOLや C言 語 な ど は 「 手 続 き 型 プ ロ グ ラ ミ ン グ 言 語 」 と 分 類 さ れ る 。 

    そ の 後 、 手 続 き 型 プ ロ グ ラ ミ ン グ 言 語 ( 母 言 語 ) か ら 関 係 デ ー タ ベ ー ス へ の ア ク セ ス を 行 え る よ う に す る た め 、 母 言 語 の ソ ー ス コ ー ド に SQL文 を 記 述 し 、 プ リ プ ロ セ ッ サ に よ っ て SQL部 分 を 母 言 語 の ソ ー ス コ ー ド に 変 換 し て デ ー タ ベ ー ス ア プ リ ケ ー シ ョ ン を 開 発 す る 方 式 が 普 及 し た 。 こ れ を 「 埋 め 込 み SQL」 (Embedded SQL/ESQL) と 呼 び 、 後 に ANSIに よ り 仕 様 が 標 準 化 さ れ た 。 

    暫 く の 間 、 デ ー タ ベ ー ス ア プ リ ケ ー シ ョ ン は 、 RDBMSベ ン ダ ー が 製 品 に 同 封 し た ユ ー テ ィ リ テ ィ や 埋 め 込 み SQLに よ り 開 発 さ れ て き た が 、 マ イ ク ロ ソ フ ト 社 が C言 語 か ら APIレ ベ ル で 統 一 し た ソ ー ス コ ー ド を 記 述 し 、 ク ラ イ ア ン ト ・ サ ー バ 型 ア プ リ ケ ー シ ョ ン シ ス テ ム の 構 築 に 有 用 で あ る 仕 組 み 「 Open Database Connectivity」 (ODBC) を 発 表 し 、 そ の 有 用 性 か ら ANSIで は ODBC仕 様 を 参 考 に 「 SQL/CLI」 と い う 仕 様 を 標 準 化 し た 。 

    SQLと バ ッ チ 処 理 

    埋 め 込 み SQLや ODBCの 普 及 に よ り 、 オ ン ラ イ ン ト ラ ン ザ ク シ ョ ン 処 理 向 き の SQLア ク セ ス 方 法 は 確 立 さ れ た が 、 バ ッ チ 処 理 性 能 向 上 の 必 要 性 が 求 め ら れ る よ う に な っ た 。 

    あ る 表  (テ ー ブ ル )の 内 容 を 編 集 し て 別 の 表 に 格 納 す る 大 量 デ ー タ の 更 新 処 理 な ど を デ ー タ ベ ー ス エ ン ジ ン 内 部 で 処 理 プ ロ グ ラ ム を 実 行 し 、 入 出 力  (I/O) の ほ と ん ど を デ ー タ ベ ー ス 内 部 で 完 結 す る こ と に よ り 、 ク ラ イ ア ン ト 側 と の デ ー タ 通 信 に よ る オ ー バ ヘ ッ ド を 削 減 す る こ と で バ ッ チ 処 理 性 能 を 向 上 さ せ る 「 ス ト ア ド プ ロ シ ー ジ ャ 」 が 考 え 出 さ れ た 。 

    ス ト ア ド プ ロ シ ー ジ ャ は 、 同 じ く デ ー タ ベ ー ス 内 部 に 定 義 し 、 デ ー タ ベ ー ス に 発 生 し た イ ベ ン ト の 内 容 に 応 じ て 任 意 の 処 理 を 実 行 す る 機 能 で あ る 「 デ ー タ ベ ー ス ト リ ガ 」 と と も に 、 標 準 SQL仕 様 に 採 用 さ れ 、 SQL:1999 (SQL99) 規 格 の 永 続 格 納 モ ジ ュ ー ル  (SQL/PSM) と し て 標 準 化 さ れ た 。 

    し か し 、 標 準 化 さ れ る 以 前 か ら 各 関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) ベ ン ダ ー が デ ー タ ベ ー ス エ ン ジ ン 内 部 で 制 御 文 法 を 記 述 し 実 行 で き る よ う に 独 自 の 拡 張 が 行 わ れ て い た た め 、 ス ト ア ド プ ロ シ ー ジ ャ の 処 理 ロ ジ ッ ク 記 述 文 法 は そ れ 以 前 に 標 準 化 さ れ た SQL文 法 と 比 較 し て 著 し い 非 互 換 が 認 め ら れ る た め 、 ア プ リ ケ ー シ ョ ン ソ フ ト ウ ェ ア の 移 植 性 ・ 開 発 生 産 性 ・ 保 守 性 を 損 な う 場 合 が あ る 。 

    標 準 SQLの SQL/PSMを 採 用 し た RDBMSを 以 下 に 挙 げ る 。 こ れ ら は 概 ね 仕 様 に 準 拠 し て い る が 、 仕 様 に 定 め ら れ て い な い 部 分 や 実 装 上 の 理 由 に よ り 細 部 に は 違 い が あ る 。 

  • SQL/PSM (DB2, MySQL)
  • 各 RDBMSベ ン ダ ー に よ る 標 準 以 外 の 独 自 の プ ロ シ ー ジ ャ に は 以 下 の よ う な も の が あ る 。 こ れ ら に は 、 独 自 追 加 さ れ た 制 御 構 文 だ け で な く 、 命 令 や デ ー タ 型 の 非 互 換 も 含 む た め 注 意 が 必 要 で あ る 。 

  • PL/SQL (Oracle, DB2)
  • Transact-SQL (Adaptive Server Enterprise, Microsoft SQL Server)
  • PL/pgSQL (PostgreSQL)
  • PSQL (Firebird, InterBase)
  • SQLの 対 話 的 実 行 

    SQLを 対 話 的 に 実 行 す る 場 合 、 関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) に 付 属 す る コ マ ン ド ラ イ ン タ イ プ の ア ク セ ス ユ ー テ ィ リ テ ィ を 利 用 す る の が 一 般 的 で あ る 。 SQL文 を 記 述 し た テ キ ス ト フ ァ イ ル を ス ク リ プ ト と し て 実 行 し 、 バ ッ チ 的 に 実 行 す る こ と が 可 能 な も の も あ り 、 広 く 利 用 さ れ て い る 。 RDBMSご と に 、 そ の ユ ー テ ィ リ テ ィ 固 有 の 命 令 を 備 え て い る も の も あ る た め 、 デ ー タ ベ ー ス を 扱 う ア プ リ ケ ー シ ョ ン ソ フ ト ウ ェ ア 開 発 の 初 心 者 は そ の 命 令 も デ ー タ ベ ー ス エ ン ジ ン が 解 釈 す る SQL文 法 の ひ と つ で あ る と 間 違 っ て 覚 え て し ま い 、 ODBCや JDBCな ど APIか ら SQLを 実 行 し た と き の エ ラ ー の 原 因 が 理 解 で き ず に 混 乱 す る こ と も あ る 。 

    ユ ー テ ィ リ テ ィ 固 有 の 文 法 で 誤 解 し や す い も の に は 、 デ ー タ ベ ー ス で SQL文 の 文 末 に 指 定 す る 文 字 で あ る 。 全 デ ー タ ベ ー ス 共 通 で は 「 ;」 、 Oracle Database の  ユ ー テ ィ リ テ ィ で あ る SQL*Plusで 、 ス ト ア ド プ ロ シ ー ジ ャ の 定 義 や 無 名 PL/SQLブ ロ ッ ク を 発 行 す る と き に 文 末 行 に 指 定 す る 「 /」  や 、 Sybase/SQL Serverの isql/osqlで は す べ て の SQL文 の 文 末 行 に 指 定 す る 「 GO」 な ど が あ る 。 こ の な か で も っ と も 間 違 え や す い の が 「 ;」 で あ る 。 こ れ は 、 一 般 的 な SQL教 科 書 で も 構 文 の 終 端 文 字 と し て 例 が 記 載 さ れ て い る が 、 標 準 SQLの 構 文 の 終 端 文 字 で は な い 。 

    SQL文 法 

    コ マ ン ド 種 別 

    デ ー タ ベ ー ス 言 語 SQLの 文 法 の 種 別 は 、 以 下 の 3つ に 大 別 さ れ る 。 

  • デ ー タ 定 義 言 語  (DDL: Data Definition Language)
  • デ ー タ 操 作 言 語  (DML: Data Manipulation Language)
  • デ ー タ 制 御 言 語  (DCL: Data Control Language)
  • そ の 他 に 、 こ れ ら の 命 令 の 適 用 範 囲 を 補 完 す る た め の 機 能 と し て 、 SQL文 を 実 行 時 に 解 釈 す る 「 動 的 SQL」 や 、 埋 め 込 み SQLの た め の 命 令 な ど が 用 意 さ れ て い る 。  関 係 デ ー タ ベ ー ス 管 理 シ ス テ ム  (RDBMS) 以 前 の デ ー タ ベ ー ス 管 理 シ ス テ ム  (DBMS) で は 、 こ れ ら は 必 ず し も 同 一 の 言 語 で は な か っ た 。 デ ー タ 定 義 言 語 は 存 在 せ ず に す べ て 専 用 の コ マ ン ド に パ ラ メ タ を 指 定 し て 実 行 す る 実 装 も 存 在 し た 。 

    コ マ ン ド 文 法 

  • CREATE ( デ ー タ ベ ー ス オ ブ ジ ェ ク ト ( 表 、 イ ン デ ッ ク ス 、 制 約 な ど ) の 定 義 ) 
  • DROP ( デ ー タ ベ ー ス オ ブ ジ ェ ク ト の 削 除 ) 
  • ALTER ( デ ー タ ベ ー ス オ ブ ジ ェ ク ト の 定 義 変 更 ) 
  • INSERT INTO ( 行 デ ー タ も し く は 表 デ ー タ の 挿 入 ) 
  • UPDATE ? SET ( 表 を 更 新 ) 
  • DELETE FROM ( 表 か ら 特 定 行 の 削 除 ) 
  • SELECT ? FROM ? WHERE ( 表 デ ー タ の 検 索 、 結 果 集 合 の 取 り 出 し ) 
  • 後 述 す る 「 動 的 SQL」 で の SELECT文 に は 、 一 度 の 実 行 で 1行 の 結 果 を 取 得 す る 「 単 一 行 SELECT文 」 と 、 カ ー ソ ル に よ り 複 数 行 の 結 果 を 取 得 す る 「 カ ー ソ ル SELECT文 」 が あ る 。 
  • 列 名 と 値 を 、 対 で 指 定 

    表 を 構 成 す る す べ て の 列 に 値 を 格 納 す る 場 合 は 、 列 名 の 記 述 を 省 略 可 能 

    他 表 の デ ー タ を 検 索 し て 格 納 

    更 新 

    削 除 

    1行 以 上 の 検 索 

    1行 だ け の 検 索 

  • GRANT ( 特 定 の デ ー タ ベ ー ス 利 用 者 に 特 定 の 作 業 を 行 う 権 限 を 与 え る ) 
  • REVOKE ( 特 定 の デ ー タ ベ ー ス 利 用 者 か ら す で に 与 え た 権 限 を 剥 奪 す る ) 
  • SET TRANSACTION ( ト ラ ン ザ ク シ ョ ン モ ー ド の 設 定 ( 並 行 ト ラ ン ザ ク シ ョ ン の 分 離 レ ベ ル  (ISOLATION MODE) な ど ) ) 
  • BEGIN ( ト ラ ン ザ ク シ ョ ン の 開 始 ) 
  • COMMIT ( ト ラ ン ザ ク シ ョ ン の 確 定 ) 
  • ROLLBACK ( ト ラ ン ザ ク シ ョ ン の 取 り 消 し ) 
  • SAVEPOINT ( 任 意 に ロ ー ル バ ッ ク 地 点 を 設 定 す る ) 
  • LOCK ( 表 な ど の 資 源 を 占 有 す る ) 
  • 「 カ ー ソ ル 」 と は 、 SELECT文 な ど に よ る デ ー タ ベ ー ス 検 索 に よ る 検 索 実 行 の 結 果 を 1行 ず つ 取 得 し て 処 理 す る た め に 、 デ ー タ ベ ー ス サ ー バ 側 に あ る 結 果 集 合 と 行 取 得 位 置 を 示 す 概 念 を い う 。  カ ー ソ ル の 定 義 と そ の 操 作 は 、 主 に ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム な ど の 手 続 き 型 言 語 か ら の SQL実 行 に お い て 利 用 す る 。 

  • DECLARE CURSOR ( カ ー ソ ル 定 義 ) 
  • OPEN ( カ ー ソ ル の オ ー プ ン ) 
  • FETCH ( カ ー ソ ル の ポ イ ン タ が 指 し 示 す 位 置 の 行 デ ー タ を 取 得 し 、 ポ イ ン タ を 一 行 分 進 め る 。 ) 
  • UPDATE ( カ ー ソ ル の ポ イ ン タ が 指 し 示 す 位 置 の 行 デ ー タ を 更 新 す る ) 
  • DELETE ( カ ー ソ ル の ポ イ ン タ が 指 し 示 す 位 置 の 行 デ ー タ を 削 除 す る ) 
  • CLOSE ( カ ー ソ ル の ク ロ ー ズ ) 
  • ※ V開 始 値 、 V終 了 値 は 、 埋 め 込 み 変 数 あ る い は ホ ス ト 変 数 と 呼 ば れ 、 埋 め 込 み SQLの 場 合 は 、 プ ロ グ ラ ム 中 の BEGIN DECLARE SECTION?END DECLARE SECTIONの 間 で 宣 言 す る 。 

    ※ カ ー ソ ル の オ ー プ ン 前 に 、 V開 始 値 、 V終 了 値 に は 値 を 設 定 し て お く 。 

    検 索 条 件 に 合 致 し た 行 を す べ て 取 り 出 す に は 、 「 デ ー タ な し 」 に な る ま で FETCHを 繰 り 返 す 。 

    ※ V列 A, :V列 B, :V列 C は 、 埋 め 込 み 変 数 あ る い は ホ ス ト 変 数 と 呼 ば れ 、 埋 め 込 み SQLの 場 合 は 、 プ ロ グ ラ ム 中 の BEGIN DECLARE SECTION?END DECLARE SECTIONの 間 で 宣 言 す る 。 

    取 り 出 し た 行 の 更 新 例 

    FETCHで 位 置 付 け た 行 を 更 新 す る に は 、 UPDATE文 で WHERE CURRENT OF カ ー ソ ル 名 を 指 定 す る 。 

    ※ V列 C更 新 値 は 、 埋 め 込 み 変 数 あ る い は ホ ス ト 変 数 と 呼 ば れ 、 埋 め 込 み SQLの 場 合 は 、 プ ロ グ ラ ム 中 の BEGIN DECLARE SECTION?END DECLARE SECTIONの 間 で 宣 言 す る 。 

    取 り 出 し た 行 の 削 除 例 

    FETCHで 位 置 付 け た 行 を 削 除 す る に は 、 DELETE文 で WHERE CURRENT OF カ ー ソ ル 名 を 指 定 す る 。 

    カ ー ソ ル の ク ロ ー ズ 例 

    動 的 SQLは 、 通 常 SQL文 を RDBMSに 対 し て 送 信 の 度 に デ ー タ ベ ー ス エ ン ジ ン で 実 行 可 能 な 内 部 中 間 コ ー ド に 翻 訳 す る 作 業 を 事 前 に 行 う こ と に よ っ て 、 翻 訳 済 み SQLコ ー ド を 再 度 利 用 し て SQL解 析 の オ ー バ ー ヘ ッ ド を 削 減 す る こ と と 、 SQL文 を ソ ー ス コ ー ド で 固 定 せ ず に デ ー タ ベ ー ス へ の ア ク セ ス 毎 に 構 文 を 書 き 換 え た い 場 合 に 、 有 用 で あ る 。 デ ー タ 操 作 言 語  (DML) も も ち ろ ん 実 行 で き る が 、 デ ー タ 定 義 言 語  (DDL) の よ う に デ ー タ ベ ー ス 製 品 の 機 能 ア ッ プ に よ っ て 新 し い 命 令 が 追 加 さ れ る も の は 、 プ リ プ ロ セ ッ サ の 対 応 作 業 が 重 荷 に な る た め 、 ほ と ん ど の デ ー タ ベ ー ス 製 品 で は DDL文 は 動 的 SQLに て 実 行 す る こ と が 一 般 的 と な っ て い る 。 

  • PREPARE ( 文 字 列 で 与 え た SQL文 を 解 析 ・ 翻 訳 す る ) 
  • EXECUTE ( PREPAREで 翻 訳 し た SQL文 を 実 行 す る ) 
  • も と も と カ ー ソ ル は 、 埋 め 込 み SQLで ホ ス ト 言 語 ( 母 言 語 ) か ら 結 果 集 合 を 取 得 す る た め に 、 都 合 の よ い 方 法 と し て 考 え ら れ た も の で あ る 。 デ ー タ ベ ー ス と 通 信 す る た め の リ ソ ー ス の 割 り 当 て 確 保 や 開 放 、 1行 ご と に ホ ス ト 言 語 の ル ー プ 処 理 で 取 得 す る た め の 命 令  (FETCH) な ど が あ る 。 

  • ALLOCATE (DEALLOCATE) DESCRIPTOR  ( デ ー タ ベ ー ス と ホ ス ト 言 語 ( 母 言 語 ) 間 で の 通 信 領 域 の 確 保 と 開 放 。 ) 
  • WHENEVER ( エ ラ ー 発 生 時 の 振 る 舞 い を 定 義 ) 
  • SQLSTATE ( SQL文 実 行 後 の 状 態 が 保 存 さ れ る 領 域 ) 
  • SQLで 用 い ら れ る 論 理 値 は 、 コ ン ピ ュ ー タ の 世 界 で も っ と も 広 く 利 用 さ れ て い る 2値 論 理  (TRUE, FALSE) で は な く 、 3値 論 理  (TRUE, FALSE, UNKNOWN) と な っ て い る 。 

    主 な  SQL DBMS 実 装 

  • Ingres( オ ー プ ン ソ ー ス 、 UNIX、 Linux、 Windows、 Mac OS対 応 ) 
  • Oracle Database( プ ロ プ ラ イ エ タ リ 、 UNIX、 Linux、 Windows対 応 ) 
  • SQL/DS (VSE, VM/CMS)
  • IBM DB2 (プ ロ プ ラ イ エ タ リ 、 AS/400、 z/OS、 UNIX、 Linux、 Windows対 応 ) 
  • IBM Informix Dynamic Server( プ ロ プ ラ イ エ タ リ 、 UNIX、 Linux、 Windows対 応 ) 
  • Sybase Adaptive Server Enterprise( プ ロ プ ラ イ エ タ リ 、 UNIX、 Linux、 Windows対 応 ) 
  • Microsoft SQL Server( プ ロ プ ラ イ エ タ リ 、 Windows対 応 ) 
  • PostgreSQL( オ ー プ ン ソ ー ス 、 UNIX、 Linux、 Windows対 応 ) 
  • MySQL( オ ー プ ン ソ ー ス 、 UNIX、 Linux、 Windows対 応 ) 
  • InterBase( プ ロ プ ラ イ エ タ リ 、 Linux、 Windows、 Solaris、 macOS 対 応 ) 
  • Firebird( オ ー プ ン ソ ー ス 、 Linux、 Windows、 macOS 、 Solaris、 HP-UX対 応 ) 
  • SQLite( オ ー プ ン ソ ー ス (パ ブ リ ッ ク ド メ イ ン )、 標 準 の C言 語 で 実 装 さ れ て お り 再 コ ン パ イ ル で あ ら ゆ る 環 境 に 対 応 ) 
  • 関 連 項 目 

  • 関 係 モ デ ル 
  • 関 係 代 数  (関 係 モ デ ル )
  • 関 係 論 理 
  • SQLイ ン ジ ェ ク シ ョ ン 
  • ド メ イ ン 固 有 言 語 
  • ※ 参照元:https://ja.wikipedia.org


    /server/ite/update/injection/join/like/delete/case/distinct/workbench/zoo/インジェクション/countdistinct/nvl/azure/整形/とは/dumper/文/サーバー/結合/dump/入門/文字列結合/インジェクション対策/重複削除/副問合せ/コメント/コマンド/意味/外部結合/books/重複/サブクエリ/構文/変数/difference/nvarchar/日付/duplicaterow/アンチパターン/降順/インジェクション例/テーブル削除/bolt/テーブル一覧/チューニング/インデックス/テーブル結合/ワイルドカード/wordpress/初心者/日付比較/正規表現/カラム追加/dual/昇順/文字列/クエリ/テーブル作成/duplicaterecordsin/ソート/四捨五入/関数/distinctgroupby/カウント/ntile/最大値/データベース/集計/エスケープ/練習/条件/文字列検索/資格/フォーマット/実行計画/置換/条件分岐/検索/disabletrigger/勉強/テーブルコピー/内部結合/duplicate/演算子/基礎/ファイル/削除/日付フォーマット/duplicatetable/言語/部分一致/平均/基本/連番/文字数/日付変換/データ型/複数条件/文字列置換/更新/あいまい検索/日付範囲/文字列切り出し/種類/合計/列追加/学習/実行/レコード削除/エラー/nvl2/型変換/テーブル/集計関数/書き方/計算/使い方/ノットイコール/前方一致/グループ化/日付計算/nchar/改行コード/複数テーブル/文字列分割/比較/並び替え/ntext/以外/問題/トランザクション/カーソル/数値変換/ヒント句/含む/バインド変数/高速化/パフォーマンス/ローダー/データ削除/ツール/エスケープ文字/レコード数/割り算/文法/練習問題/件数/ビュー/結合複数/存在チェック/distinct複数/切り捨て/パラメータ/エディタ/テーブル名変更/カラム名取得/件数指定/クロス集計/文字列変換/自己結合/本/インサート/複数テーブル結合/カラム名変更/文字列数値変換/足し算/現在時刻/日付加算/配列/外部キー/パズル/カラム/トレース/型/リファレンス/結合条件/別名/構文チェック/ループ/予約語/整形ツール/範囲指定/シングルクォーテーション/スクリプト/連結/含まない/今日の日付/カンマ区切り/null比較/不等号/ステートメント/正規化/バックアップ/主キー/インデント/ドリル/追加/