SQL 【Structured Query Language】
概要
SQL(Structured Query Language)とは、リレーショナルデータベースの管理やデータの操作を行うための問い合わせ言語の一つ。業界標準として広く普及しており、様々なデータベース管理システム(DBMS)で共通して利用できる。DBMSへ利用者や外部のソフトウェアから命令を発行するために用いる言語で、データベースへのテーブルの追加や設定変更、削除、テーブル間の関係の定義や削除、テーブルへのデータの追加、更新、削除、データベースやシステムの設定変更などを行うための命令語と構文、文法などを定めている。
主なSQL文
データを操作する命令文としては、テーブルや制約条件などの定義を行うCREATE文、削除を行うDROP文、設定変更を行うALTER文、テーブルにレコードを挿入するINSERT INTO文、削除するDELETE文、更新(上書き)するUPDATE文、条件を元に抽出するSELECT文などがある。
データベースを管理する命令文としては、利用者に権限を付与するGRANT文、剥奪するREVOKE文、トランザクション処理を開始するBEGIN文、完了するCOMMIT文、取り消すROLLBACK文などがある。一部の命令文では文の一部に別の文(サブクエリ/副問い合わせ)を含めることができ、複雑な処理を記述することができる。
これらの命令のうち、CREATE文などデータ構造や関係の定義に関するものを「データ定義言語」(DDL:Data Definition Language)、SELECT文などデータの操作に関するものを「データ操作言語」(DML:Data Manipulation Language)、GRANT文などシステムの管理や制御に関するものを「データ制御言語」(DCL:Data Control Language)にそれぞれ分類することもある。
SQL文の実行
DBMSの管理ツールなどとして対話的にSQL文を実行する環境が用意されていることが多く、管理者や利用者が当座の目的のためにその場でSQL文を入力して実行させることができる。
また、関連する複数の命令文からなる一連の処理を一つの手続きとしてあらかじめデータベースに保存しておき、一定間隔や利用者からの指示などにより実行する「ストアドプロシージャ」(stored procedure)と呼ばれる仕組みが提供される。このうち、何らかの操作やイベントを契機に自動的に起動するよう設定されたものは「トリガー」(データベーストリガー)と呼ばれる。
SQL自体はプログラミング言語ではなく、複雑な処理は実行できないため、外部のコンピュータプログラムからDBMSに命令を発行する仕組みも用意されている。Oracle Databaseの「PL/SQL」のようにDBMS自身がプログラム実行環境となる独自の言語を用いる場合が多い。
プログラミング言語で記述されたソースコード中に命令文を記述し、その言語による記述に自動変換して実行する「埋め込みSQL」(Embedded SQL)や、様々な言語から共通して利用できるプログラミングインターフェース(API)を定義した「ODBC」(Open Database Connectivity)などの仕組みもある。JDBCのようにプログラミング言語側でSQL文発行のための仕組みを整えている場合もある。
歴史
SQLの元になったのは1970年代に米IBM社がRDBMS「System R」を開発する際に、その制御・操作用言語として考案した「SEQUEL」(Structured English Query Language/「シークェル」と読む)である。1980年代以降、他社のRDBMSもSQLを採用するようになり、事実上の標準として普及した。
当初はメーカーやシステムにより仕様が大きく異なっていたため標準化を求める声が強まり、1986年にANSI(米国国家規格協会)によって標準規格「SQL86」が制定された。ISO(国際標準化機構)とIEC(国際電気標準会議)の情報分野の合同委員会JTC 1はこの規格を1987年にISO/IEC 9075として国際標準化している。
ちなみに、ANSI規格のSQLという名称は公式には何の略でもないとされる。その後、同規格はSQL92、SQL99などと改訂され、近年もSQL:2008やSQL:2011、SQL:2016などの新しい改訂版が発行されている。
データベースの用語一覧
その他の関連用語
試験出題履歴
基本情報技術者試験 : 【令7修6 問20】 【令7公 問6】 【令7修1 問20】 【令6修7 問20】 【令5修12 問20】 【令5修7 問20】 【令4修12 問25】 【令4修12 問27】 【令4修7 問28】 【令4修1 問27】 【令3修12 問27】 【令3修1 問28】 【令2修12 問28】 【令2修7 問28】 【令2修6 問28】 【令1秋 問26】 【平31春 問27】 【平31春 問29】 【平30修12 問29】 【平30修6 問27】 【平30修1 問28】 【平30修1 問29】 【平29修12 問29】 【平29秋 問27】 【平29修1 問27】 【平28修12 問29】 【平28秋 問28】 【平28秋 問29】 【平28修7 問29】 【平28修6 問28】 【平28修1 問28】 【平27修12 問28】 【平27秋 問28】 【平27修7 問29】 【平27修6 問28】 【平27修1 問29】 【平26修12 問27】 【平26修7 問29】 【平26春 問28】 【平26修1 問32】 【平25修12 問31】 【平25修7 問32】 【平25修6 問33】 【平25春 問27】 【平25春 問28】 【平25春 問29】 【平25修1 問33】 【平24修7 問34】 【平24修6 問31】 【平24春 問30】 【平23修12 問30】 【平23修7 問34】 【平23春 問30】 【平23修1 問33】 【平22秋 問31】 【平22修7 問33】 【平22修6 問33】 【平22春 問31】 【平21秋 問33】 【平21春 問33】