SQLって簡単に試せないですよね?
データベースを作るのも大変そうです。
Webで簡単に試せるツールがあります。
SQLを実際にやってみましょう。
問題は、H25春FE午前問28です。
http://sm.seeeko.com/archives/15877091.html
■プラットフォーム
Webで簡単にSQLのテストができる以下のサイトを活用しました。
http://sqlfiddle.com/
・ブラウザはChrome
・MySQL5.6を選択
※または、いろいろなプログラムが書けるWebサイトであるpaiza.ioも使いやすいです。
https://paiza.io/ja
■テーブルの作成と値のセット
①TABLEの作成と値のセットを同時にやります。
CREATE TABLE TEST
(`クラス名` varchar(3), `教科名` varchar(3), `学生番号` int, `名前` varchar(5), `点数` int)
;
INSERT INTO TEST
(`クラス名`, `教科名`, `学生番号`, `名前`, `点数`)
VALUES
('2A', '英語', 11, '山田太郎',70),
('2A', '英語', 12, '鈴木太郎',80),
('2A', '英語', 13, '山田次郎',75),
('2A', '数学', 11, '山田太郎',60),
('2A', '数学', 12, '鈴木太郎',85),
('2A', '数学', 13, '山田次郎',95),
('2B', '英語', 11, '伊藤太郎',95),
('2B', '英語', 12, '大木太郎',85),
('2B', '英語', 13, '斉藤次郎',75),
('2B', '数学', 11, '伊藤太郎',55),
('2B', '数学', 12, '大木太郎',85),
('2B', '数学', 13, '斉藤次郎',85)
;
■SQLの実行
・SELECT文の実行
・選択肢ア
select `クラス名`,`教科名`,AVG(`点数`) AS AVG from TEST GROUP BY `クラス名`,`教科名` ORDER BY AVG;
・選択肢イ
select `クラス名`,`教科名`,AVG(`点数`) AS AVG from TEST GROUP BY `クラス名`,`教科名` ORDER BY `クラス名`,`教科名`;
コピペで実行できないかもしれないので、テキストファイルを貼っておきます。
http://sm.seeeko.com/SQL.txt
■その他
テーブルを作るときに、主キー制約を付ける場合はPRYMARY KEYを付けます。こうすることで、重複する行を作成できなくなります。
CREATE TABLE TEST
(`クラス名` varchar(3), `教科名` varchar(3) , `学生番号` int , `名前` varchar(5), `点数` int, PRIMARY KEY(`クラス名` , `教科名`, `学生番号`))
;
■H28春FE午前問27
この問題をもとに、テーブルを作成して設問にある操作を実行してみました。
また、基本操作として、選択、射影、結合の結果も表示します。
/* テーブルXの作成 */
CREATE TABLE X
(`学生番号` varchar(3), `氏名` varchar(8), `学部コード` varchar(5))
;
INSERT INTO X
(`学生番号`, `氏名`, `学部コード`)
VALUES
('1', '山田太郎', 'A'),
('2', '情報一郎', 'B'),
('3', '鈴木花子', 'A'),
('4', '技術五郎', 'B'),
('5', '小林次郎', 'A'),
('6', '試験桃子', 'A')
;
CREATE TABLE Y
(`学部コード` varchar(3), `学部名` varchar(8))
;
INSERT INTO Y
(`学部コード`, `学部名`)
VALUES
('A', '工学部'),
('B', '情報学部'),
('C', '文学部');
/* SQL文の実行 */
select 学部名,学生番号,氏名 from X,Y
where X.学部コード=Y.学部コード AND X.学部コード='B';
/* テーブルXの表示 */
select * from X;
/* 選択 */
select * from X where 学部コード='A';
/* 射影 */
select 学生番号,氏名 from X;
/* 結合 */
select * from X,Y
where X.学部コード=Y.学部コード AND X.学部コード='B';
コメント