情報処理のWeb教科書―IPA情報処理試験対策のお供に!

SQL―データベース言語(SQL文)の入門知識

トップ 情報処理の知識体系 テクノロジ系 技術要素 データベース データ操作 データベース言語 SQL

関係データベースのデータの操作を理解するにはデータベース言語(SQL)の知識が必要です。データベース言語(SQL文)についての入門知識と情報処理試験の過去問をまとめています。

目次

このページの目次です。

1. SQLとは

2. SQLとリレーショナルデータベース

3. SQL文とSQL文の種類

4. データ定義言語(DDL)

5. データ操作言語(DML)

6. 埋込みSQL

もっと知識を広げるための参考

更新履歴

1. SQLとは

SQLとは、「Structured Query Language」の略で「構造化問合せ言語」という データベースを操作するための言語の1つです。

SQLを簡単に言うと

初心者の方でもわかるようにSQLについて簡単に説明していきます。

簡単に言うとSQLとは、「リレーショナルデータベースを管理するソフトと話すための言語」です。

日本人と話すための言語は日本語です。SQLとは、リレーショナルデータベースを管理するソフトと話すための言語です。 リレーショナルデータベースを扱うデータベース管理ソフトにデータ関連の命令を行うための英文に近い言語です。

SQLの読み方

SQLの読み方は、いくつかあるようですが、一般的には「エスキューエル」と読みます。

SQLは「エスキューエル」という読み方が一般的です。 その他に「シークェル」、「シーケル」と読む場合もあります。 なぜ「シークェル」という読み方があるかと言うと、SQLの実験実装のときに「SEQUEL (Structured English Query Language)」という名前だったためです。

SQLが対象とするデータベース

SQLが対象とするデータベースはリレーショナルデータベースです。 リレーショナルデータベースは、略してRDB(アールデービー)といいます。

SQLの意味の補足

SQLの意味の補足です。

SQLの「Structured」の意味は「構造化された」という意味です。「Query」の意味は「問合せ」です。「Language」の意味は「言語」です。 直訳するとSQLの意味は「構造化問合せ言語」となります。

SQLは、上述のようにStructured Query Languageと説明されることが多いですが、 これはかつてのIBMが提供していたSQLや製品の話で、標準SQLでは「SQLは、何かの略語ではない」と定義されているようです。

2. SQLとリレーショナルデータベース

リレーショナルデータベースにデータを追加したり、削除する際に、データベース管理ソフトに利用者が使用するアプリからSQL文を発行して命令します。 初心者の方でもわかるように簡単に補足していきます。

SQLが対象とするデータベース

SQLはリレーショナルデータベース用の言語です。 リレーショナルデータベースは、略してRDB(アールデービー)といいます。

データベースとは

データベースの語源はデータの基地、databaseです。 つまりデータを蓄積する入れもののことです。

データベースにはいくつかの種類があります。また、データベースはあくまで入れものにすぎません。 データベースに対してデータを出し入れするのは、データベース管理ソフトです。

データベース管理ソフトとは

例えば、商用版ですとMicrosoftのSQL Server、Access、OracleのOracle Database、MySQL、IBMのDB2などが有名です。 オープンソースですとMariaDB、PostgresSQL、SQLiteなどが有名です。 上記はリレーショナルデータベース用で、それ以外ではHadoop、MongoDB、Redis、Cassandraなどが有名です。

リレーショナルデータベース

SQLはデータベースの1つのリレーショナルデータベース用の言語です。リレーショナルデータベースをあつかうソフト共通で使える標準語です。

なお、データベース管理ソフトのところでも少し触れましたが、リレーショナルデータベース以外にもデータベースがあります。 SQLを使用しないデータベースということからNoSQLと呼んだりします。

3. SQL文とSQL文の種類

SQL文は、データ定義言語(DDL)、データ操作言語(DML)、その他の操作言語(DCL)に分類されます。SQL文の例とDDL、DML、DCLについて簡単に見ていきます。

SQL文の例

SQL文は例えば以下のように書きます。

例)select user_name from user_data;

「user_dataからuser_nameを選択する」という文です。簡単ですね。

データ定義言語(DDL)

DDLとは、データベースの構造や整合性の制約などデータを定義するSQL文です。DDLには以下のような文があります。

データ操作言語(DML)

DMLとは、データベースのデータを操作するSQL文です。DMLには以下のような文があります。

その他の操作言語(DCL)

DCLとは、データの変更を確定、取り消すためののデータの制御を行うSQL文です。DCLには以下のような文があります。

4. データ定義言語(DDL)

テーブル、ビューを定義するSQL文があります。

テーブル

テーブルとは、実表ともいい、実際に存在する表のことを言います。

ビュー

ビューとは、導出表ともいい、テーブル(実表)をもとに作られる仮想的な表のことを言います。

実表に対する射影、結合などによって導出表が得られます。 導出表も条件が整えば更新可能で、導出表は、複数の実表からだけでなく、実表と導出表や導出表同士の組合せによっても作成できます。 また、実表から演算によって求められる値を導出表に含めることができます。

ビューに付与される権限

ビューに付与される権限について触れていきます。

ビューは、一つの表に対して更新可能なビューが定義されていて、このビューの所有者である場合、 元となる表に対してそのビューの所有者がもっているすべての権限を利用することができます。

行の追加と削除が可能なビューを作成するSQL文

行の追加と削除が可能なビューを作成するSQL文について見ていきます。

ビュー表が更新可能であるための条件

ビュー表が更新可能であるための条件として、一般的に以下のような条件があります。

SQL文の例

行の追加と削除が可能なビューを作成するSQL文の例は以下になります。

CREATE VIEW 高額商品(商品番号, 商品名)
      AS SELECT 商品番号, 商品名 FROM 商品 WHERE 商品単価 > 1000

整合性制約

整合性制約について見てきます。

参照制約

参照制約とは、データ更新時に関連する表間で不整合が起きないようにする制約です。

関係データベースでは、外部キーは別の表の主キーとの間で参照の整合性を保つ必要があり、ある表の列の値が別の表を参照するとき、参照される表にはその列の値が存在しなければならないという制約です。

例えば、“従業員”表と“職歴”表の間で、“従業員”表からある従業員の行を削除するSQL操作を行う場合に、“職歴”表に削除する従業員の行が存在しないことを要求する整合性制約になります。

関係データベースにおける行削除の制約

関係データベースの"注文"表又は"商品"表の行を削除する場合、"注文明細"表に対するレコード削除の操作について見ていきます。 表定義中の実線の下線は主キーを、破線は外部キーを表す。

問34 関係データベースにおける行削除―平成21年春期応用情報技術者

「注文」と「注文明細」、「商品」表について考えると、「注文」がないと、その「注文明細」は存在しないという関係、「注文明細」があって、「商品」が決まるという関係、 つまり、「注文」⇔「注文明細」⇒「商品」という関係が想定できます。

「注文」のレコードを削除する場合、 「商品」レコードから「注文明細」を参照する可能性は無いため、「注文明細」を削除できます。

「商品」のレコードを削除する場合、 「注文」レコードから「注文明細」を参照している可能性があるため、「注文明細」を削除できません。

データベース言語(SQL文)に関連したIPA情報処理試験の過去問

以下ではデータベース言語(SQL文)に関連したIPA情報処理試験の過去問とその解説をまとめています。

5. データ操作言語(DML)

データベース操作言語のDMLについて見ていきます。

SELECT文

SELECT文は、要求されるデータを選択するSQL文です。SQLのSELECT文による問合せの方法、SELECT文の書き方についてまとめています。

詳細

6. 埋込みSQL

データベース言語のSQLでは、カーソル操作、非カーソル操作、親言語との接続など、埋込型SQLによるデータ操作が行えます。 カーソル操作において、カーソルの宣言、操作の開始、終了、読み込みを行うなどのSQL文は頭に入れておきたいです。

カーソル

カーソルとは、SQLのクエリの結果集合を一時的に蓄えておくための一時的な作業領域のことをいいます。 この作業領域の現在位置を保持する機能がポインタといいます。 ループ処理が実行されるときに1行づつ進んで行った際に該当の処理の位置がわかるようになっています。

カーソルの例

以下の埋込みSQLを用いたプログラムの一部にあるXがカーソルになります。

EXEC SQL OPEN X;
    EXEC SQL FETCH X INFO :NAME, :DEPT, :SALARY;
    EXEC SQL UPDATE 従業員
        SET 給与 = 給与 * 1.1
        WHERE CURRENT OF X;
EXEC SQL CLOSE X;

埋込みSQLに関連したIPA情報処理試験の過去問

以下では埋込みSQLに関連したIPA情報処理試験の過去問とその解説をまとめています。

もっと知識を広げるための参考

更新履歴

戻る

スポンサーリンク

情報処理の知識体系

各試験の問題と解説

ランダム出題・採点アプリ

プログラミング

スポンサーリンク