Transcript データベースの設計
物理DB定義と操作 科目:情報工学基礎実験Ⅱ(2010後期) テーマ:データベースの設計と応用 (第2回) 情報工学科 実験の内容 INDEX 第1回目:データベースの設計 (キー、正規化、ER図、論理DB構造) データベース 次回の準備として、DBサーバをインストール (リレーショナルDB) 第2回目:物理DBの定義と操作 DBサーバ(MySQL) (DB生成、テーブル生成、挿入・更新・削除) 第3回目:DB利用の実用化 (インデックス使用時の検索時間測定、 簡単なWebアプリによるDB利用) Webサーバ(Apache) アプリケーション(Perl) 第2回目:実験の進め方 実験2:設計済みの DB構造で使う 慣れたら、効率アップする 実験1:実際に使う SQL、MySQLを知る 今回のレポートのまとめ方 以下の項目を必ず含めること。 1) 実験1では ・create tabele shop のコマンド入力内容 ・insert 以降のSQL文すべて ・その他、自分で試したSQL文 2) 実験2では ・tableの定義内容すべて(showコマンドにて) ・指定した検索結果すべて(select実行結果) 3)感想 4)考察 注:必ず手書きで書くこと(キャプチャしたものはノリで貼る) 目次 1.SQL、MySQLとは 2.実験1:練習用shopテーブル 3.慣れてきたら効率アップ 4.実験2:受講管理システム 5.今回のレポートのまとめ方 参考書・参考URL 1.SQL、MySQLとは 1) MySQLとは 2) MySQLの起動と停止 3) MySQLのディレクトリ構成 4) MySQL特有のコマンドと関数 5) クライアントの実行方法 6) SQLの基本 1)MySQLとは • MySQL(マイエスキューエル)は、 ・ 世界中で最もよく利用されているオープンソースの DBMSの一つで、高速で使いやすい、対応言語が多い ・ サーバとクライアントの二つから出来ている ・ Webシステムでの使用が中心(Perl,PHP,Java・・・) 俗称 LAMP=Linux,Apache,MySQL,Perl/PHP/Python 俗称 WAMP=Windows,Apache,MySQL,Perl/PHP/Python • SQLは、IBM社が開発し、1987年にISO規格の採用 ・Structured Query Languageの意味(非専門家向け) ・二つの部分からなる ・DDL(データ定義言語---table、項目、アクセス権) ・DML(データ操作言語---tableの追加、更新、削除、検索) 2)MySQLの起動と停止 • MySQLサーバの起動と停止 ・実験では、 Windows起動時に自動起動の設定としている。 ・停止は、 bin>mysqladmin –u root –p shutdown ・ほかに コマンドプロンプトを右クリックで管理者として実行すれば bin>net start mysql で起動する bin>net stop mysql で停止する • MySQLクライアントの起動と停止 ・起動時は、ユーザーidとパスワードが必要。 bin>mysql –uユーザ名 –pパスワード プロンプトが mysql> に変われば起動が成功。 (例示:mysql –uroot -psuetsugu) ・停止は mysqlプロンプトで exit [または quit または \q ] 資料:MySQLサーバの状態の確認方法 1) コントロールパネルで、 「システムとメンテナンス」→「管理ツール」→ 「サービス」をクリックする。 開始:開始中 自動:自動起動 を示す 2) 簡便な方法としては、「CTRL、ALT、DEL」キーを同時に押して、 「タスクマネージャーの起動」をクリック→「サービス」タブで確認できる。 ・MySQL の 実行中または停止が表示される。 補足:MySQLクライアントが起動しない • • • • • パスワードは正しいか? パスワードを設定していないのに「-p」を付けたのか? PATHが正しく設定されていないのか? 「-p」とパスワードの間を空けて入力しているか? 単語間のスペースが全角になっていないか? 3)MySQLのディレクトリ構成 (C)ドライブ mysql bin (実行ファイル) data mysql (DBです) (管理ファイル) test (DBです) (初期は空) share (ログファイル) (my.ini などの構成用ファイル) my.ini の77行目で 任意のDirにDBを作成でき るが、当実験では Dir の位置は変えない。 dataフォルダの下にDBを作る。 DBの下にtableを作る。 実験では、 ・練習用のtableは test DBに作成する。 ・練習用にDBを追加して定義してもよい。 ・「受講システム」のDBは data フォルダの下に作成する。 4)MySQL特有のコマンド • mysql>use DB名; DBを選択。これでDBが使えるようになる • mysql>show コマンド status; MySQLの設定情報を表示 show databases; DBを表示 show tables; 選択したDB内のtableを表示 show fields from table名; tableのデータ項目を表示 desc[ribe] table名; 同上 show grants for ユーザー名 ユーザーのアクセス権を表示 show create database DB名; 文字コードを表示 show create table table名; 文字コードを表示 • MySQLの関数の紹介 (注:DBMSにより違いがある。) • mysql>select 関数名(引数); now(); curdate(); curtime(); version(); user(); database(); conv(‘20’,10,16); bin(‘20’); pow(2,3); 事例:statusコマンド結果 mysql> status; -------------mysql Ver 14.12 Distrib 5.0.86, for Win32 (ia32) Connection id: 1 Current database: test Current user: sue@localhost SSL: Not in use Using delimiter: ; Server version: 5.0.86-community-nt MySQL Community Edition (GPL) Protocol version: 10 Connection: localhost via TCP/IP Server characterset: sjis Db characterset: sjis Client characterset: sjis Conn. characterset: sjis TCP port: 3306 Uptime: 2 hours 16 min 40 sec Threads: 1 Questions: 30 Slow queries: 0 Opens: 18 Flush tables: 1 Open tables: 2 Queries per second avg: 0.004 -------------- 補足:コマンドプロンプトの便利な方法 1)背景色、文字色の変更 ・alt,space キーを同時に押し ・現れたメニューで「プロパティ」→「画面の色」タブを選択 ・「画面の文字」で黒を選択 ・「画面の背景」で白を選択 ・OKボタン 2)コピーしてファイルに張り付け保存する ・alt,space キーを同時に押し ・現れたメニューで「編集」→「すべて選択」 ・alt,space キーを同時に押し ・現れたメニューで「コピー」 ・メモ帳に張り付け(ctrl+v) 名前を付けて保存する ・編集して必要部分のみを残すとよい 5)クライアントの実行方法 • クライアントの起動方法(rootユーザー) c:\Windows\system32>cd c:\ c:\>cd mysql/bin c:\mysql\bin>mysql -u root -p パスワード Enter password: ******** ユーザID または c:\mysql\bin>mysql -uroot –psuetsugu これでMySQLクライアントが起動される。 ここからmysql>プロンプトで、sqlコマンドを入力する。 • 必ず、初めに、使うDBをuseコマンドで指定する use test; Database changed mysql> ここからtestDBにtableを生成する。 6)SQLの基本 SQLは非手続き型言語 • SQLはC言語などの手続き型言語とは異なり、 「どういう順序で命令を実行するかを記述するのではなく、 何がやりたいかを記述するのみで良い。」 最も効率がよい命令実行の順序は、 DBMSが自動で決定する。 したがって、条件分岐や繰り返しという命令順序を 変えるような命令は存在しない。 (その必要があれば手続き型言語で行う) SQLの機能 データ定義・管理 DDL スキーマ定義 表(テーブル)、VIEW、INDEX作成 (CREATE、ALTER、DROP) 権限の管理 データ利用の権限付与、取消し (GRANT、REVOKE) 実行の制御 トランズアクション管理、カーソル操作 (COMMIT、ROLLBACK、 CURSOR) データ変更 データの追加、更新、削除 (INSERT、DELETE、UPDATE) データ検索 データの取り出し(検索) (SELECT) データ操作 DML SQL命令の構成 キーワード、句、文の三つからなる。 ・句=キーワードの後ろに単語を付けたもの ・文=幾つかの句(Phrase)を集めたもの 文の終わり キーワード キーワード SELECT * FROM 学生名簿TBL ; 句 句 文 (STATEMENT) 文字の扱い ① 大文字、小文字の区別が無い(データ値は別) ② 空白文字の個数は関係ない ・空白が幾つ連続しても1つとみなされる。 ・空白文字とは、半角スペース、タブ、改行 ・全角スペースは空白文字では無い ・改行時、自動で半角空白が入る ③ 文字列定数はシングルクォートで囲む ・文字列に「’」を含む場合は「’’」と重ねる ‘SUETSUGU’’S’ → SUETSUGU’S の意味 (続き)文字の扱い ④定数の取扱い ・数値定数は、「’」で囲む必要は無い (例: 1、1.23、0.12、1e23) ・文字定数は、「’」で囲むこと (例: ’A’、’商品’、’学生’) ⑤コメントの記入 ・マイナス記号二つで、その行の終わりまでコメント (例: select * --全ての列の検索 ) ・「/*」と「*/」で囲んだ範囲をコメントに出来る データ項目(=列名)の記述 ・通常は、列名を使うが、Table間で重複時は、「.」で結ぶ ・商品名の例: 商品TBL.商品名 売上TBL.商品名 ・列名の後にスペースを置いて、別名を定義できる。 ・商品 商品名称 列名 別名 ・計算式の結果を別名で表すことが出来る ・SELECT (支給総額-控除額) 手取額 列の名前を使った計算式 別名 資料:主要なデータ型 データ型の種類 文字列 固定長 可変長 数値 数字 数字 整数 実数 バイナリー 固定長 可変長 日付 日 時刻 データ型の表記法 char または character varchar または character varying decまたはdecimal(長さ,小数点長さ) numeric(長さ,小数点長さ) int またはinteger real または float bit bit varying date (2009-10-08) time (13:15:20) 資料:主要な演算子 集合演算子 その他演算子 AND INTERSECT + > BETWEEN MINUS - * >= IN UNION IS NULL / < NOT JOIN ∥ % <= OR CASE <> ALL LIKE != ANY 算術演算子 比較演算子 + = - 論理演算子 EXISTS SOME 資料:予約語 予約語は、表名、列名には使用できない ・ただし、〔 〕で囲めば使用可能。 例: SELECT 〔INSERT〕 FROM 〔SELECT〕 ALL CROSS FOREIGN JOIN ORDER SUM ALTER CURSER FROM KEY OUTER TABLE AND DECLARE FULL LEFT PRIMARY TRUE ANY DELETE GRANT LIKE REFERENCES UNION AS DESC GROUP LOWER REVOKE UNIQUE AVG DISTINCT HAVING MAX ROLLBACK UNKNOWN BETWEEN DROP IN MIN SCHEMA UPDATE BY EXCEPT INNER NOT SELECT UPPER COMMIT EXEC INSERT NULL SET USER COUNT EXISTS INTERSECT ON SOME WHERE CREATE FALSE INTO OR SUBSTRING Table定義(Tableの作成) mysql> use test; mysql> create table tbl1( -> データ項目名 データ型(桁数) -> unsigned zerofill default '0000' not NULL unique, ・ ・ ・ 種々の初期値を設定できる -> データ項目名 データ型(桁数), -> primary key(データ項目名) -> ) character set sjis ; 日本語(実験ではsjis)を入れるデータ項目があれば、必須!! 単純なDB検索例 商品価格TBL SELECT 商品名,価格,仕入先 FROM 商品価格TBL 商 品 コ ー ド 商 品 名 価 格 仕 入 先 仕 入 単 価 WHERE 価格<10000 ORDER BY 商品コード ; SELECT文の中の説明 SELECT 計算式 FROM 表名 WHERE 条件式 ORDER BY 行の順序 説明上は日本語表記したが、 通常はtable名、項目名は 英数字を使うこと。 単純なDB変更例 (朱筆はキーワード、つまり決まった文字です) INSERT INTO 商品価格TBL 追加 [(商品コード、商品名、価格、仕入先、単価)] VALUES (10030,’商品名BB’, 1500, ‘Y商事’,1200) ; 更新(上書き) UPDATE 商品価格TBL SET 商品名 = ‘商品名称AAA’ WHERE 商品コード = 10010 ; 削除 DELETE FROM 商品価格TBL WHERE 商品コード = 10070 ; 商品価格TBL 商 品 コ ー ド 商 品 名 価 格 仕 入 先 仕 入 単 価 2. 実験1:練習用shopテーブル 2-1.以下の事例を使ってtable作成、更新、検索 shopテーブル 備考 Field Type NULL Key Default code dec(10) not null key なし price int (6) not null なし name varchar(30) not null なし class char(2) not null なし ←商品分類 zaiko Int(5) not null なし ←後から追加 tdate date not null なし ←後から追加 日本語 1) shop テーブルをtestDBに作成する。 2) insertコマンドで10件(次頁)作成し、表示する。 3) updateコマンドでname内容を変更し、表示する。 4) deleteコマンドで1件ほど削除し、表示する。 10件のデータ例: code price name class zaiko tdate 1001 10000 商品A 01 2 2009-11-04 1002 2500 商品B 02 10 2009-11-04 1003 300 商品C 04 100 2009-11-04 1004 4000 商品D 02 20 2009-11-04 1005 450 商品あ 04 200 2009-11-04 1006 600 商品い 04 300 2009-11-04 1007 7000 商品う 02 30 2009-11-04 1008 8000 商品X 03 400 2009-11-04 1009 9000 商品Y 03 40 2009-11-04 1010 101000 商品Z 01 3 2009-11-04 後から書き込み ヒント1: Tableの作成: use test; create table shop ( code dec(10) not null , price int(6) not null, name char( 30), class char(2) ) character set sjis ; ヒント2: データの追加、更新、削除: insert ・・・・・ ; --注:↑キーを使うと効率的です select * from shop; update ・・・・・; select * from shop; --商品名nameの内容を変える update shop set tdate=now() where code=‘xxxx’; 3-5)でやる --現在日を入れる delete ・・・・・; --codeの値を指定して、1件削除 select * from shop; 2-2.いろいろなselect文を試す 1) 特定のデータ項目(列)のみを取り出す: select name, price from shop; 2) 検索条件を付ける: select * from shop where (price >=1000) ; 条件に使う記号(= > < >= <= != ) and or で複数の条件を指定できる 3) あいまい検索条件: select * from shop where(name like ‘%AA%’ ) ; (nameの文字列中にAAを含むものを意味する) 4) システム日付を使ってdate項目をupdateする: update shop set tdate= now() またはcurdate() ; 3.慣れてきたら効率アップ 1)DB定義とユーザーの登録 2)ワイルドカード 3) tableのコピーを保存 4)データに日本語(漢字)を使う 5) tableの定義変更 6) 小技の紹介 7) バッチSQLコマンド 8) リダイレクション 1)DB定義とユーザーの登録 • 今までの稼働確認はrootユーザーで行ってきたが、 • 通常は、ユーザーを作成して、 • このユーザーでクライアントを起動する c:\mysql\bin>mysql -uroot –psuetsugu mysql> grant all on *.* to sue identified by 'suep'; 権限の設定 sueというユーザー パスワード mysql> flush privileges; ←権限情報の再読み込み mysql> create database suedb;←DB生成(sueが作ったDB) mysql> show databases; ←DB生成の確認 mysql> exit; c:\mysql\bin>mysql -usue –psuep ←sueで再起動 (ここで作ったDBは自分の練習用に使ってください。) 2)ワイルドカード ・比較演算では、「あいまいな文字列」を指定 することができる。 ・「%」は複数の文字列にマッチさせる場合 ・「_」は一文字の文字列(アンダースコア記号) 例:SELECT * FROM 商品TBL WHERE 商品名 LIKE ‘%AAA%’ または ‘A%A’ または ‘A-’ または ‘-A’ 3) tableのコピーを保存 • データを挿入済みのtableをコピーしておく。 • 練習用に内容を変更しても安心できる。 create table shop2 select * from shop; • 別のファイルにバックアップしておく。(=エクスポート) • mysqltestフォルダの下に入れる例では select * into outfile ‘C:/mysqtest/shopbu.csv’ fields terminated by ‘,’ from shop; (注: csvファイルを扱う場合はpathの区切りに「 / 」を使うこと。) Tableの複製 作成済みのテーブル定義やデータをコピー テーブル定義のみコピー CREATE TABLE 新テーブル名 LIKE 元のテーブル名; テーブルの定義およびデータのコピー CREAT TABLE 新テーブル名 SELECT * FROM 元のテーブル名; テーブルのデータのみコピー INSERT INTO テーブル名 SELECT * FROM 元のテーブル名; 4)データに日本語(漢字)を使う • コマンドプロンプトで日本語を入れるには、 ALT+漢字キーを同時に押す。 • 元に戻すには、漢字キーを押す。 • 日本語データは ‘ ’ で囲む。 • データ以外の個所では全角スペースは使わないこと。 • 日本語を入力したら、select文で表示してみよう。 • うまく表示できない時は、 create table の最後に character set sjis ;を忘れている。 show create table テーブル名; で確認し、 utf8になっていたらcreate tableからやり直し。 いったん drop table テーブル名;で削除後。 5) Tableの定義変更 作成済みのテーブル定義を変更、削除する テーブルの削除 (DATABASE、VIEW、INDEXも同様である) DROP TABLE テーブル名; テーブルの変更 ALTER TABLE テーブル名 ADD 追加列名 ALTER TABLE テーブル名 MODIFY 列の属性; 変更列名 ALTER TABLE テーブル名 DROP COLUMN 新しい属性; 列名; Table定義変更の事例 灰色部分を変更してみる。 shopテーブル Field Type NULL Key Default code dec(10) not null key なし price int (6) not null なし name nchar(30) not null なし class char(2) not null なし zaiko Int(5) not null なし tdate date not null なし 備考 日本語 1) field「zaiko」 int(5) を追加、在庫数を入れて表示。 2) field「tdate」 date を追加、現在の日時を入れて表示。 ヒント データ項目の追加、更新、削除: alter table shop add zaiko int(5) not null ;--field追加 show fields from shop; --shopの列を表示 update ・・・・・; --在庫数を入れる select * from shop; alter table shop add tdate date not null ;--field追加 show fields from shop; --shopの列を表示 update shop set tdate= now( ) where code=‘XXXX’ ; --現在日を入れる --where句を無しでやってみる select * from shop; 6) 小技の紹介 1) 数値の表示書式を指定する select format(price,2) --form関数(列、小数点桁数) 2) 年月日の表示書式 select date_format(tdate,’%Y年%m月%d日’); tdateが2009-10-28であれば2009年10月28日と表示される 3) 連結 select concat(‘商品=’,code,name) 連結 from shop; 4) 別名を名乗る select code as hinmoku, price *1.05 as 税込価格 (続き) 小技の紹介 5) 出力の順序を指定する: select * from テーブル名 where 条件 order by 項目名 [asc または desc] \G 6)データの数を数える select count(*) from shop; select count(*) as 件数 from shop; 7)データの合計、平均を求める select class, avg (price), sum (price*zaiko) 金額 from shop group by class; 7) バッチSQLコマンド select文に慣れてくれば、ファイルから実行すると効率的 ・SQLのsource句を使用 ・Cドライブ直下に mysqltest フォルダを作成 ・mysqltest に txtファイルを作る ・mysql source ファイル名 で実行 例: testbatch.txt にSQL文を書く use test; use DB名;が初めにくる select now(); show tables; select * from shop; mysql> source c:/mysqltest/testbatch.txt ;で実行 8) リダイレクション Linuxで習ったリダイレクションを使えば、 コマンド入力の数を減らすことができる。 ・「.bat」ファイルを使って起動する。(=cd も含めると、より効率的) ・SQLクライアント開始も含める ・ 標準出力もリダイレクションが可能(=ファイルに出る) 例: cd c:\mysqltes (.bat ファイルの置き場所) c:\mysqltest>redirect01.bat redirect01.bat 中には 入力ファイル 出力ファイル cd c:\mysqbin mysql -usue -psuep < c:\mysqltest\aa.txt > c:\mysqltesbb.txt aa.txt 中には use test; select 文 insert文 など通常のSQL文を書く 補足: 良く使うSQL命令はコピペ • テキスト編集ソフトで、正しく動くSQL命令を作っておく。 • それをコマンドプロンプトに張り付ける。 ・コマプロで、ALT+spaceキーで「編集」を出す ・「張り付け」でプロンプトの後ろにペーストする。 • 例示:sample.txt の内容 insert into shop values(1001,10000, ’商品A’ , ’01’); update shop set price=400 where code=1000; delete from shop where code=1009; alter table name add tdate date not null; alter table name drop column tdate; load data infile ‘c:/mysqltest/gakusei.csv‘ into table gakusei fields terminated by','; select * into outfile ‘C:/mysqtest/shopbu.csv’ fields terminated by ‘,’ from shop; ここまでで練習は終り 4. 実験2:受講管理システム 第1回目で作成した受講管理システム用の論理DB構造をもとに、 DB,tableを作成して、初期データ設定をする。 その後、指示された検索をしてみる。 1) DBとtableを定義 2) 効率的な初期設定の方法(インポート) 3) 指定した select文で結果を表示する 1) DBとtableを定義 Source句が非常に便利 ・DBは「juko」を定義すること。 ・table名、データ項目名は事前に決めておくこと。 ・数が多い場合は、バッチSQLコマンド方式が望ましい。 (TeraPadを使えば、コピペが容易である) ・table 定義が終われば、表示すること。 (show tables コマンド) (show fields from table名 コマンド) レポートに掲載が必須。 2) インポートによる初期設定 フィルハンドルを使えば、 ・tableごとにExcelでデータを作成。 テストデータの作成が容易。 ・csv形式でmysqlフォルダに保存。 ・csvファイルをインポート命令でDBに入れる。 例:mysql> load data infile 'c:/mysqltest/gakusei.csv' -> into table gakusei -> fields terminated by','; ・以上を繰り返せば、容易に初期設定ができる。 注:初期設定データは10~20件程度作ること。 ・インポートができない者は、insert でもよい。 レポートに掲載が必須。 3) select文で結果表示 ① 受講科目を指定して、受講者を表示 ・科目コード、科目名、受講者の学生番号、氏名 ②受講科目を指定して、て受講者の成績を表示 ・科目名、氏名、評価点 ③ 挑戦課題として、第1回目で提示した帳票にある 項目を同じような並びで表示する。 ・二つの表を表示する。(学生番号指定による) ・受講申請データ ・成績データ ④挑戦課題として、 科目ごとの平均点を表示する。 レポートには① ②の二つは掲載が必須。 ヒント1: 特定の受講科目について受講者の表示 ・処理順序は考えず、表示するデータ項目を決める ・表示するデータ項目の横の順番を決める ・どのtableから取り出すかを決める ・表示する行の順序を決める(order by) 科目名 科目コード 科目TBL 学生番号 受講TBL 氏名 学生TBL (表示項目) ( ・考察: 科目コードが指定されると仮定する ・受講TBLから合致する科目コードを取り出す ・科目TBLから、上記の科目コードと合致する科目名を取り出す ・学生TBLから、受講TBLの学生番号に合致する氏名を取り出す 結合) (続き) select kname,juko.kamoku,juko.gakuban,name from kamoku,juko,gakusei where juko.kamoku = ‘指定した科目コード’ and juko.kamoku = kamoku.kamoku --join受講TBL,科目TBL and juko.gakuban = gakusei.gakuban --join受講TBL,学生TBL oerder by juko.kamoku,juko.gakuban; 各グループで検討したtable、データ項目が異なるので 必ずしも上記の通りにはならない。 (続き) 結合演算(= join) where TBL1.学科コード = TBL2.学科番号; の結果 TBL1 名前 学科コー ド Aさん 100 Bさん 200 Cさん 130 Xさん 200 Yさん 100 TBL1.学科コード=TBL2.学科番号 TBL2 学科 名称 電子 機械 情報 学科 番号 100 130 200 名前 学科コー 学科 ド 名称 Aさん Bさん Cさん Xさん 100 200 130 200 電子 情報 機械 情報 Yさん 100 電子 ヒント2: 特定の受講科目について受講者の成績 ・① と同様であるが、成績TBLも検索の対象となる 科目名 氏名 評価点 (表示項目) 学生TBL 科目TBL 受講TBL 成績TBL ( 結合) ・考察: 科目コードが指定されると仮定する ・受講TBLから合致する科目コードを取り出す ・科目TBLから、上記の科目コードと合致する科目名を取り出す ・学生TBLから、受講TBLの学生番号に合致する氏名を取り出す ・成績TBLから、受講TBLの学生番号に合致する評価点を取り出す ヒント3: コマンドプロンプトの横幅を広げるとよい。 ・プロパティの変更でできる レイアウトの幅を変更する。 フォントで小サイズを選ぶ。 (続き)ヒント3: ヒント4: 科目ごとの平均点を求める 科目名 科目TBL 点数 (表示項目) ( 成績TBL 結合) ・考察: 成績TBLを対象に科目コードごとに点数を集計し平均を求める ・小技で説明した group by 句 と avg 関数を使う ・小数点以下の桁数は format 関数を使う select ・・・,format(avg(seiseki.ten),2) 科目平均点 from 成績TBL,科目TBL where ・・・ group by 成績TBL.kamoku order by 成績TBL.kamoku; +----------+----------------+------------+ | kamoku | kname | 科目平均点 | +----------+----------------+------------+ | AA00001H | 科目名AA1 | | AA00002H | 科目名AA2 | | AA00003S | 科目名AA3 | | AB00004S | 科目名AB4 | | AB00005H | 科目名AB5 | | AB00006H | 科目名AC6 | 94.00 87.50 66.50 73.50 76.67 71.14 | | | | | | +----------+----------------+------------+ 5.今回のレポートのまとめ方 以下の項目を必ず含めること。 1) 実験1では ・create tabele shop のコマンド入力内容 ・insert 以降のSQL文すべて ・その他、自分で試したSQL文 2) 実験2では ・tableの定義内容すべて(showコマンドにて) ・指定した検索結果すべて(select実行結果) 3)感想 4)考察 注:必ず手書きで書くこと(キャプチャしたものはノリで貼る) 参考書・参照URL 書籍も大切ですが、まず実際に動かしてみてください。 • 西沢夢路「基礎からのMySQL」(ソフトバンクCREATIVE) • 志村伸弘「MySQL徹底攻略ガイド」(技術評論社) • ライアンほか「SQLプログラミング入門」(ソフトバンク) • 日本MySQLユーザー会 http://www.mysql.gr.jp/ • MySQL初心者入門講座 http://mysqlweb.net/