SQL(Structured Query Language)とは、データベースを操作する言語です。SQL文を使うことで、表からデータを選択したり、追加、削除、変更などが行えます。
■データベースの操作
基本情報のシラバスには「(1)データベースの操作関係データベースのデータの操作として,データの挿入,更新,集合演算(和,差,積,直積),関係演算(選択,射影,結合,商)などの代表的なデータの操作を理解する。」とあります。
ここで、選択、射影、結合について説明します。
①選択
SELECTを使って、行を取り出します。
SELECT * FROM 表 WHERE 行を抽出する条件
②射影
SELECTを使って列を取り出します。
SELECT フィールドA、フィールドB FROM 表
※フィールドA,Bが、取り出す列
③結合
SELECTを使って、複数の表を結合します。
SELECT * FROM 表1、表2 WHERE 表1.フィールドA=表2.
フィールドB
※表1と表2で一致する属性(フィールド)をもとに、
表を結合します。
※実際にやってみたい場合は、以下をhttp://sqlfiddle.com/などで試しましょう。
http://sm.seeeko.com/archives/15876965.html
過去問(H28秋AP午前問28)を見てみましょう。
↓
↓
↓
正解は、アです。
■データベース言語
SQLの言語はいくつかに分かれます。応用情報試験のシラバスには「データベース言語は,DDL(Data Definition Language:データ定義言語)とDML(Data Manipulation Language:データ操作言語)などに大別される」とあります。もう一つ、DCL(Data Control Language:データ制御言語)があります。
①データ操作言語
データ操作言語の代表はSELECT(選択)です。それ以外に、INSERT(行の挿入),UPDATE(値の更新) ,DELETE(行の削除)などがあります。
②データ定義言語
データ定義言語には、CREATE文があります。
たとえば、表を作る場合は CREATE TABLE
VIEWを作る場合は CREATE VIEW
③データ制御言語
アクセス権を付与するGRANTや、削除するREVOKEがあります。
■文法
SQLの文法も理解しておきましょう。
基本となるSQL文はSELECT文です。なので、SELECT文でSQLの基本を理解しましょう。
SELECT 表の列名 FROM 表 WHERE 条件
■句
・WHERE 条件を指定する
・GROUP BY グループ化する
・ORDER BY 並び替える
・HAVING →GROUP BYでグループ化している場合の条件を指定します。たとえば、グループ化して平均値(AVG)を求め、そのAVGの値が70以上など(HAVING AVG(得点)>= 70)
過去問(H25春FE午前問28)をみてみましょう
問28“中間テスト表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中のaに入れるべき字句はどれか。
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名,教科名, AVG(点数) AS 平均点 FROM 中間テスト [ a ]
ア GROUP BYクラス名,教科名 ORDER BY クラス名, AVG(点数)
イ GROUP BY クラス名,教科名 ORDER BY クラス名,教科名
ウ GROUP BY クラス名,教科名,学生番号 ORDER BY クラス名,教科名,平均点
工 GROUP BYクラス名,平均点 ORDER BY クラス名,教科名
↓
↓
↓
↓
実際に実行してみた様子は以下です。
http://sm.seeeko.com/archives/15876965.html
正解はイ
■データベースの操作
基本情報のシラバスには「(1)データベースの操作関係データベースのデータの操作として,データの挿入,更新,集合演算(和,差,積,直積),関係演算(選択,射影,結合,商)などの代表的なデータの操作を理解する。」とあります。
ここで、選択、射影、結合について説明します。
①選択
SELECTを使って、行を取り出します。
SELECT * FROM 表 WHERE 行を抽出する条件
②射影
SELECTを使って列を取り出します。
SELECT フィールドA、フィールドB FROM 表
※フィールドA,Bが、取り出す列
③結合
SELECTを使って、複数の表を結合します。
SELECT * FROM 表1、表2 WHERE 表1.フィールドA=表2.
フィールドB
※表1と表2で一致する属性(フィールド)をもとに、
表を結合します。
※実際にやってみたい場合は、以下をhttp://sqlfiddle.com/などで試しましょう。
http://sm.seeeko.com/archives/15876965.html
過去問(H28秋AP午前問28)を見てみましょう。
問28 関係データベースにおける実表と導出表に関する記述のうち,適切なものはどれか。 ア 実表に対する射影,結合などによって導出表が得られる。 イ 導出表は,データを参照する場合だけに用いる。 ウ 導出表は,複数の実表から得られる表である。 エ 導出表は,元の実表の列だけから成る。 |
↓
↓
正解は、アです。
■データベース言語
SQLの言語はいくつかに分かれます。応用情報試験のシラバスには「データベース言語は,DDL(Data Definition Language:データ定義言語)とDML(Data Manipulation Language:データ操作言語)などに大別される」とあります。もう一つ、DCL(Data Control Language:データ制御言語)があります。
①データ操作言語
データ操作言語の代表はSELECT(選択)です。それ以外に、INSERT(行の挿入),UPDATE(値の更新) ,DELETE(行の削除)などがあります。
②データ定義言語
データ定義言語には、CREATE文があります。
たとえば、表を作る場合は CREATE TABLE
VIEWを作る場合は CREATE VIEW
③データ制御言語
アクセス権を付与するGRANTや、削除するREVOKEがあります。
■文法
SQLの文法も理解しておきましょう。
基本となるSQL文はSELECT文です。なので、SELECT文でSQLの基本を理解しましょう。
SELECT 表の列名 FROM 表 WHERE 条件
■句
・WHERE 条件を指定する
・GROUP BY グループ化する
・ORDER BY 並び替える
・HAVING →GROUP BYでグループ化している場合の条件を指定します。たとえば、グループ化して平均値(AVG)を求め、そのAVGの値が70以上など(HAVING AVG(得点)>= 70)
過去問(H25春FE午前問28)をみてみましょう
問28“中間テスト表からクラスごと,教科ごとの平均点を求め,クラス名,教科名の昇順に表示するSQL文中のaに入れるべき字句はどれか。
中間テスト(クラス名,教科名,学生番号,名前,点数)
〔SQL文〕
SELECT クラス名,教科名, AVG(点数) AS 平均点 FROM 中間テスト [ a ]
ア GROUP BYクラス名,教科名 ORDER BY クラス名, AVG(点数)
イ GROUP BY クラス名,教科名 ORDER BY クラス名,教科名
ウ GROUP BY クラス名,教科名,学生番号 ORDER BY クラス名,教科名,平均点
工 GROUP BYクラス名,平均点 ORDER BY クラス名,教科名
↓
↓
↓
↓
実際に実行してみた様子は以下です。
http://sm.seeeko.com/archives/15876965.html
正解はイ