平成21年度データベーススペシャリスト試験の合格を目指して
のんびりして受験しないうちに試験制度が変更になり、 テクニカルエンジニアデータベースはデータベーススペシャリスト試験に変わりました。 今度こそはデータベーススペシャリスト試験の合格を目指してがんばりますよ。
試験区分 | |
---|---|
ITパスポート試験 | |
基本情報技術者試験 | |
応用情報技術者試験 | |
高 度 試 験 | ITストラテジスト試験 |
システムアーキテクト試験 | |
プロジェクトマネージャ試験 | |
ネットワークスペシャリスト試験 | |
データベーススペシャリスト試験 | |
エンベデットシステムスペシャリスト試験 | |
情報セキュリティスペシャリスト試験 | |
ITサービスマネージャ試験 | |
システム監査技術者試験 |
MySQLを使ったSQL実習方法
平成19年度春期のテクニカルエンジニア(データベース)試験の問35と
平成19年度春期の基本情報技術者試験の問61を
もとに
SQL問題を例に実習の方法を説明します。
SQL実習サンプル1
平成19年度 春期 テクニカルエンジニア(データベース) 午前
問35 "社員"表から、男女それぞれの最年長社員を除くすべての社員を取り出すSQL文とするために、aに入る副問合せはどれか。ここで、"社員"表は次の構造とし、下線部は主キーを表す。
社員(社員番号,社員名,性別,生年月日)
select 社員番号,社員名 from 社員 as s1 where 生年月日 > ( a );
ア select min(生年月日) from 社員 as s2 group by s2.性別
イ select min(生年月日) from 社員 as s2 where s1.生年月日>s2.生年月日 or s1.性別=s2.性別
ウ select min(生年月日) from 社員 as s2 where s1.性別=s2.性別
エ select min(生年月日) from 社員 group by s2.性別
解答はウです。
架空のデータを作成し、MySQLでクエリーを実行してみます。1.データベースの作成
create database data1211;
次の命令でデータベースを作成します。 create database データベース名;
2.データベースの選択
use data1211
MySQLでは、データベースを選択してテーブル作成などの作業をすすめます。
3.テーブルの作成
create table 社員(
社員番号 char(5) NOT NULL PRIMARY KEY,
社員名 varchar(20),
性別 char(1),
生年月日 date);
4.データの格納
insert into 社員 values ('S8010','山田太郎','1','1950-10-1');
insert into 社員 values ('S8011','山田次郎','1','1960-10-10');
insert into 社員 values ('S8112','山田三郎','1','1982-5-1');
insert into 社員 values ('S8013','山田四郎','1','1985-9-23');
insert into 社員 values ('S8114','函館花子','0','1965-1-1');
insert into 社員 values ('S8015','函館春子','0','1978-4-1');
insert into 社員 values ('S8017','函館夏子','0','1982-8-1');
insert into 社員 values ('S8110','函館秋子','0','1984-9-10');
5.クエリーを実行し結果の確認
ア.
select 社員番号,社員名 from 社員 as s1 where 生年月日 > (select min(生年月日) from 社員 as s2 group by s2.性別);
ERROR 1242 (21000): Subquery returns more than 1 row
イ.
select 社員番号,社員名 from 社員 as s1 where 生年月日 > (select min(生年月日) from 社員 as s2 where s1.生年月日>s2.生年月日 or s1.性別=s2.性別);
社員番号 | 社員名 |
---|---|
S8011 | 山田次郎 |
S8013 | 山田四郎 |
S8015 | 函館春子 |
S8017 | 函館夏子 |
S8110 | 函館秋子 |
S8112 | 山田三郎 |
S8114 | 函館花子 |
ウ.
select 社員番号,社員名 from 社員 as s1 where 生年月日 > (select min(生年月日) from 社員 as s2 where s1.性別=s2.性別);
社員番号 | 社員名 |
---|---|
S8011 | 山田次郎 |
S8013 | 山田四郎 |
S8015 | 函館春子 |
S8017 | 函館夏子 |
S8110 | 函館秋子 |
S8112 | 山田三郎 |
エ.
select 社員番号,社員名 from 社員 as s1 where 生年月日 > (select min(生年月日) from 社員 group by s2.性別);
ERROR 1054 (42S22): Unknown column 's2.社員' in 'group statement'
SQL実習サンプル2
平成19年度 春期 基本情報技術者試験 午前
問61 “商品”表に対してデータの更新処理が正しく実行できるUPDATE文はどれか。ここで,“商品”表は次の CREATE 文で定義されている。
CREATE TABLE 商品
(商品番号 CHAR(4),
商品名 CHAR(20),
仕入先番号 CHAR(6),
単価 INT,
PRIMARY KEY(商品番号));
商品番号 | 商品名 | 仕入先番号 | 単価 |
---|---|---|---|
S001 | A | XX0001 | 18,000 |
S002 | A | YY0002 | 20,000 |
S003 | B | YY0002 | 35,000 |
S004 | C | ZZ0003 | 40,000 |
S005 | C | XX0001 | 38,000 |
ア UPDATE 商品 SET 商品番号 = 'S001'
WHERE 商品番号 = 'S002';
イ UPDATE 商品 SET 商品番号 = 'S006'
WHERE 商品名 = 'C';
ウ UPDATE 商品 SET 商品番号 = NULL
WHERE 商品番号 = 'S002';
エ UPDATE 商品 SET 商品名 = 'D'
WHERE 商品番号 = 'S003';
実習例
問61のデータベースを作成してみよう!1.サンプルのSQLを実行するデータベースを作成する。
create database mysample;
2.1.で作ったデータベースを使うことをMYSQLに知らせる。
use mysample
3.テーブルを作成する。
CREATE TABLE
商品(商品番号 CHAR(4),商品名 CHAR(20),仕入先番号 CHAR(6),
単価 INT,
PRIMARY KEY(商品番号));
4.作ったテーブルにデータを追加する。
insert into 商品(商品番号,商品名,仕入先番号,単価)
values ('S001','A','XX0001',18000);
insert into 商品(商品番号,商品名,仕入先番号,単価)
values ('S002','A','YY0002',20000);
insert into 商品(商品番号,商品名,仕入先番号,単価)
values ('S003','B','YY0002',35000);
insert into 商品(商品番号,商品名,仕入先番号,単価)
values ('S004','C','ZZ0003',40000);
insert into 商品(商品番号,商品名,仕入先番号,単価)
values ('S005','C','XX0001',38000);
5.作ったテーブルを内容を確認する。
select * from 商品;
+----------+--------+------------+-------+
| 商品番号 | 商品名 | 仕入先番号 | 単価 |
+----------+--------+------------+-------+
| S001 | A | XX0001 | 18000 |
| S002 | A | YY0002 | 20000 |
| S003 | B | YY0002 | 35000 |
| S004 | C | ZZ0003 | 40000 |
| S005 | C | XX0001 | 38000 |
+----------+--------+------------+-------+
6.問61のSQLを実行する。
1.UPDATE 商品 SET 商品番号 = 'S001' WHERE 商品番号 = 'S002';
実行結果
ERROR 1062 (23000): Duplicate entry 'S001' for key 1
2.UPDATE 商品 SET 商品番号 = 'S006' WHERE 商品名 = 'C';
実行結果
ERROR 1062 (23000): Duplicate entry 'S006' for key 1
3.UPDATE 商品 SET 商品番号 = NULL WHERE 商品番号 = 'S002';
実行結果
ERROR 1263 (22004): Column was set to data type
implicit default; NULL supplied
for NOT NULL column '蝠・刀逡ェ蜿キ' at row 1
4.UPDATE 商品 SET 商品名 = 'D' WHERE 商品番号 = 'S003';
実行結果
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from 商品;
+----------+--------+------------+-------+
| 商品番号 | 商品名 | 仕入先番号 | 単価 |
+----------+--------+------------+-------+
| S001 | A | XX0001 | 18000 |
| S002 | A | YY0002 | 20000 |
| S003 | D | YY0002 | 35000 |
| S004 | C | ZZ0003 | 40000 |
| S005 | C | XX0001 | 38000 |
+----------+--------+------------+-------+
5 rows in set (0.00 sec)
今後はこの方法でテクニカルエンジニア(データベース)のSQL問題を解いていきます。
テクニカルエンジニア(データベース) 午前過去問題
- 平成21年度 春期 プロジェクトマネージャ試験・データベーススペシャリスト試験・エンべデッドシステムスペシャリスト試験・情報セキュリティスペシャリスト試験・システム監査技術者試験 午前
- 平成20年度 春期 テクニカルエンジニア(データベース) 午前
- 平成19年度 春期 テクニカルエンジニア(データベース) 午前
- 平成18年度 春期 テクニカルエンジニア(データベース) 午前
- 平成17年度 春期 テクニカルエンジニア(データベース) 午前
- 平成16年度 春期 テクニカルエンジニア(データベース) 午前
MySQL
リンク集
- 情報処理推進機構:情報処理技術者試験センター:トップ
- テクニカルエンジニアデータベースの過去問
- MySQL認定資格試験
- Google Analytics
- Google Docs & Spreadsheets
- Gmail
- 函館バス時刻表
- 函館バス時刻表(自作)
- Virtual PCにXindowsXPの環境を作り、PHPとApacheをインストール
- JavaScriptのまとめ(仮)
- radiko.jp