読み方 : シークェル / エスキューエル

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文などデータ構造や関係の定義に関するものを「データ定義言語」(DDLData Definition Language)、SELECT文などデータの操作に関するものを「データ操作言語」(DMLData Manipulation Language)、GRANT文などシステムの管理や制御に関するものを「データ制御言語」(DCLData 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などの新しい改訂版が発行されている。

(2020.7.8更新)

他の用語辞典による「SQL」の解説 (外部サイト)

資格試験などの「SQL」の出題履歴

▼ ITパスポート試験
平31春 問95】 関係データベースの操作を行うための言語はどれか。

▼ 基本情報技術者試験
令7修6 問20】 国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。
令7公 問6】 “商品” 表に対するSQL文と同じ結果が得られるSELECT文はどれか。商品
商品ID商品名称仕入先ID単価
S001冷蔵庫M001155,000
S002食器洗い機M00285,000
S003電子レンジM00378,000
S004炊飯器M00332,000
S005コーヒーメーカーM00415,000
S006ホットプレートM00412,000
〔SQL文〕 SELECT * FROM 商品 WHERE 仕入先 ID IN('M002','M004')。
令7修1 問20】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
令6修7 問20】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
令5修12 問20】 “社員” と “部門” 表に対して,次のSQL文を実行したときの結果はどれか。SELECT COUNT(*)FROM 社員,部門 WHERE 社員.部門 = 部門.部門名 AND 部門.フロア = 2
社員
社員番号所属
11001総務
11002経理
11003営業
11004営業
11005情報システム
11006営業
11007企画
12001営業
12002情報システム
  部門
部門名フロア
企画1
総務1
情報システム2
営業3
経理2
法務2
購買2
令5修7 問20】 国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。
令4修12 問25】 表に対するSQLのGRANT文の説明として,適切なものはどれか。
令4修12 問27】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
令4修7 問28】 次の表は,営業担当者のある年度の販売実績である。この表の第1期から第4期の販売金額の平均が4,000万円以上で,どの期でも3,000万円以上販売している営業担当者の名前を求めるSQL文として,適切なものはどれか。
令4修1 問27】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。
学生
氏名所属住所
応用花子新宿
高度次郎人文渋谷
午前桜子経済新宿
情報太郎渋谷
  学部
学部名住所
新宿
経済渋谷
人文渋谷
新宿
〔SQL文〕SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’。
令3修12 問27】 “社員” と “部門” 表に対して,次のSQL文を実行したときの結果はどれか。SELECT COUNT(*)FROM 社員,部門 WHERE 社員.部門 = 部門.部門名 AND 部門.フロア = 2
社員
社員番号所属
11001総務
11002経理
11003営業
11004営業
11005情報システム
11006営業
11007企画
12001営業
12002情報システム
  部門
部門名フロア
企画1
総務1
情報システム2
営業3
経理2
法務2
購買2
令3修1 問28】 “注文” 表と “製品” 表に対して,次のSQL文を実行したときに得られる結果はどれか。SELECT 製品名,数量 FROM 注文,製品 WHERE注文.製品コード = 製品.製品コード
注文
日付製品コード数量
2020-04-10P2120
2020-04-15P1100
2020-04-22P450
2020-04-30P880
2020-05-06P1100
2020-05-08P370
  製品
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
令2修12 問28】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
令2修7 問28】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。
学生
氏名所属住所
応用花子新宿
高度次郎人文渋谷
午前桜子経済新宿
情報太郎渋谷
  学部
学部名住所
新宿
経済渋谷
人文渋谷
新宿
〔SQL文〕SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’。
令2修6 問28】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
令1秋 問26】 “得点” 表から,学生ごとに全科目の点数の平均を算出し,平均が80点以上の学生の学生番号とその平均点を求める。aに入れる適切な字句はどれか。
平31春 問27】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平31春 問29】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。
学生
氏名所属住所
応用花子新宿
高度次郎人文渋谷
午前桜子経済新宿
情報太郎渋谷
  学部
学部名住所
新宿
経済渋谷
人文渋谷
新宿
〔SQL文〕SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’。
平30修12 問29】 “注文” 表と “製品” 表に対して,次のSQL文を実行したときに得られる結果はどれか。SELECT 製品名,数量 FROM 注文,製品 WHERE注文.製品コード = 製品.製品コード
注文
日付製品コード数量
2020-04-10P2120
2020-04-15P1100
2020-04-22P450
2020-04-30P880
2020-05-06P1100
2020-05-08P370
  製品
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
平30修6 問27】 “BOOKS” 表から書名に “UNIX” を含む行を全て探すために次のSQL文を用いる。aに指定する文字列として,適切なものはどれか。
平30修1 問28】 R表に,(A,B)の2列で一意にする制約(UNIQUE制約)が定義されているとき,R表に対するSQL文のうち,この制約に違反するものはどれか。
平30修1 問29】 “社員” と “部門” 表に対して,次のSQL文を実行したときの結果はどれか。SELECT COUNT(*)FROM 社員,部門 WHERE 社員.部門 = 部門.部門名 AND 部門.フロア = 2
社員
社員番号所属
11001総務
11002経理
11003営業
11004営業
11005情報システム
11006営業
11007企画
12001営業
12002情報システム
  部門
部門名フロア
企画1
総務1
情報システム2
営業3
経理2
法務2
購買2
平29修12 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平29秋 問27】 SQL文において FOREIGN KEY と REFERENCES を用いて指定する制約はどれか。
平29修1 問27】 “注文” 表と “製品” 表に対して,次のSQL文を実行したときに得られる結果はどれか。SELECT 製品名,数量 FROM 注文,製品 WHERE注文.製品コード = 製品.製品コード
注文
日付製品コード数量
2020-04-10P2120
2020-04-15P1100
2020-04-22P450
2020-04-30P880
2020-05-06P1100
2020-05-08P370
  製品
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
平28修12 問29】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’
学生
氏名所属住所
合田知子新宿
青木俊介渋谷
川内聡人文渋谷
坂口祐子経済新宿
  学部
学部名住所
新宿
新宿
人文渋谷
経済渋谷
平28秋 問28】 関係代数の演算のうち,関係R,Sの直積(R×S)に対応するSELECT文はどれか。ここで,関係R,Sを表R,Sに対応させ,表R及びSにそれぞれ行の重複はないものとする。
平28秋 問29】 “社員” と “部門” 表に対して,次のSQL文を実行したときの結果はどれか。SELECT COUNT(*)FROM 社員,部門 WHERE 社員.部門 = 部門.部門名 AND 部門.フロア = 2
社員
社員番号所属
11001総務
11002経理
11003営業
11004営業
11005情報システム
11006営業
11007企画
12001営業
12002情報システム
  部門
部門名フロア
企画1
総務1
情報システム2
営業3
経理2
法務2
購買2
平28修7 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平28修6 問28】 国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。
平28修1 問28】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
平27修12 問28】 “注文明細” 表に対するSQLの構文として,正しいものはどれか。 注文明細(注文番号,注文日,数量)。
平27秋 問28】 “出庫記録” 表に対するSQL文のうち,最も大きな値が得られるものはどれか。出庫記録
商品番号日付数量
NP2002015-10-103
FP2332015-10-102
NP2002015-10-111
FP2332015-10-112
平27修7 問29】 “商品” 表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。ここで,“商品” 表は次のCREATE文で定義されている。
平27修6 問28】 次の表は,営業担当者のある年度の販売実績である。この表の第1期から第4期の販売金額の平均が4,000万円以上で,どの期でも3,000万円以上販売している営業担当者の名前を求めるSQL文として,適切なものはどれか。
平27修1 問29】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平26修12 問27】 国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。
平26修7 問29】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’
学生
氏名所属住所
合田知子新宿
青木俊介渋谷
川内聡人文渋谷
坂口祐子経済新宿
  学部
学部名住所
新宿
新宿
人文渋谷
経済渋谷
平26春 問28】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
平26修1 問32】 “商品” 表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。ここで,“商品” 表は次のCREATE文で定義されている。
平25修12 問31】 次の表は,営業担当者のある年度の販売実績である。この表の第1期から第4期の販売金額の平均が4,000万円以上で,どの期でも3,000万円以上販売している営業担当者の名前を求めるSQL文として,適切なものはどれか。
平25修7 問32】 “注文” 表と “製品” 表に対して,次のSQL文を実行したときに得られる結果はどれか。SELECT 製品名,数量 FROM 注文,製品 WHERE注文.製品コード = 製品.製品コード
注文
日付製品コード数量
2020-04-10P2120
2020-04-15P1100
2020-04-22P450
2020-04-30P880
2020-05-06P1100
2020-05-08P370
  製品
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
平25修6 問33】 国語と数学の試験を実施し,2教科の成績は氏名とともに “得点” 表に記録されている。1教科は平均点以上で,残りの1教科は平均点未満の生徒氏名を “得点” 表から抽出するSQL文はどれか。
平25春 問27】 列 A1~A5 から成るR表に対する次のSQL文は,関係代数のどの演算に対応するか。 SELECT A1,A2,A3 FROM R  WHERE A4 = ‘a’。
平25春 問28】 “中間テスト” 表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中の [ a ] に入れる字句はどれか。
平25春 問29】 “BOOKS” 表から書名に “UNIX” を含む行を全て探すために次のSQL文を用いる。aに指定する文字列として,適切なものはどれか。
平25修1 問33】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
在庫番号商品番号在庫数
平24修7 問34】 “商品” 表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。ここで,“商品” 表は次のCREATE文で定義されている。
平24修6 問31】 次のSQL文の実行結果がA表のようになった。aに入れるべき適切な字句はどれか。SELECT S_CODE,S_NAME,BU_NAME FROM BUSHO,SHAIN WHERE [ a ]BUSHO
BU_CODEBU_NAMEBU_CHO
S01システム1部1107
S02システム2部1110
SHAIN
S_CODES_NAMES_NENREIS_SHOZOKU
1001山本 一平23S01
1002中谷 宏25S01
1003鈴木 隆夫23S02
1004佐藤 俊二26S01
1005山崎 ひとみ23S02
1006田中 五郎25S02
1107山本 明32S01
1110田中 和夫30S02
A
S_CODES_NAMEBU_NAME
1001山本 一平システム1部
1003鈴木 隆夫システム2部
1005山崎 ひとみシステム2部
平24春 問30】 “注文” 表と “製品” 表に対して,次のSQL文を実行したときに得られる結果はどれか。SELECT 製品名,数量 FROM 注文,製品 WHERE注文.製品コード = 製品.製品コード
注文
日付製品コード数量
2020-04-10P2120
2020-04-15P1100
2020-04-22P450
2020-04-30P880
2020-05-06P1100
2020-05-08P370
  製品
製品コード製品名
P1PC
P2テレビ
P3掃除機
P4冷蔵庫
P5エアコン
P6電話機
P7時計
平23修12 問30】 “出庫記録” 表に対するSQL文のうち,最も大きな値が得られるものはどれか。出庫記録
商品番号日付数量
NP2002015-10-103
FP2332015-10-102
NP2002015-10-111
FP2332015-10-112
平23修7 問34】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
平23春 問30】 次の表は,営業担当者のある年度の販売実績である。この表の第1期から第4期の販売金額の平均が4,000万円以上で,どの期でも3,000万円以上販売している営業担当者の名前を求めるSQL文として,適切なものはどれか。
平23修1 問33】 次のSQL文の実行結果がA表のようになった。aに入れるべき適切な字句はどれか。SELECT S_CODE,S_NAME,BU_NAME FROM BUSHO,SHAIN WHERE [ a ]BUSHO
BU_CODEBU_NAMEBU_CHO
S01システム1部1107
S02システム2部1110
SHAIN
S_CODES_NAMES_NENREIS_SHOZOKU
1001山本 一平23S01
1002中谷 宏25S01
1003鈴木 隆夫23S02
1004佐藤 俊二26S01
1005山崎 ひとみ23S02
1006田中 五郎25S02
1107山本 明32S01
1110田中 和夫30S02
A
S_CODES_NAMEBU_NAME
1001山本 一平システム1部
1003鈴木 隆夫システム2部
1005山崎 ひとみシステム2部
平22秋 問31】 “商品” 表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。ここで,“商品” 表は次のCREATE文で定義されている。
平22修7 問33】 “商品” 表に対して,次のSQL文によって得られる結果はどれか。 SELECT 商品番号 FROM 商品  WHERE 商品名 LIKE ‘%めん’ AND 単価 < 330商品
商品番号商品名単価
100ラーメン305
130きしめん285
205チャーシューメン700
267おかめうどん300
307そうめん350
390カレーライス400
401チャーハン320
420きつねうどん298
平22修6 問33】 “学生” 表と “学部” 表に対して次のSQL文を実行した結果として,正しいものはどれか。SELECT 氏名 FROM 学生,学部 WHERE 所属 = 学部名 AND 学部.住所 =‘新宿’
学生
氏名所属住所
合田知子新宿
青木俊介渋谷
川内聡人文渋谷
坂口祐子経済新宿
  学部
学部名住所
新宿
新宿
人文渋谷
経済渋谷
平22春 問31】 “商品” 表,“在庫” 表に対する次のSQL文の結果と同じ結果が得られるSQL文はどれか。ここで,下線部は主キーを表す。SELECT 商品番号 FROM 商品 WHERE 商品番号 NOT IN (SELECT 商品番号 FROM 在庫)
商品
商品番号商品名単価
  在庫
倉庫番号商品番号在庫数
平21秋 問33】 SQLの構文として,正しいものはどれか。
平21春 問33】 関係データベースの “製品” と “売上” 表から,売上報告のビュー表を定義するSQL文中のaに入るものはどれか。CREATE VIEW 売上報告(製品番号,製品名,納品数,売上年月日,売上金額 AS [ a ] 製品.製品番号,製品.製品名,売上.納品数,売上.売上年月日, 売上.納品数 * 製品.単価  FROM 製品,売上  WHERE 製品.製品番号 = 売上.製品番号
表名列名
製品製品番号,製品名,単価
売上製品番号,納品数,売上年月日