SQLエディタによる データベースプログラミング 01
複数のシステムで共有できるようにしたもの 前回のおさらい データベースとはデータを1つにまとめて 複数のシステムで共有できるようにしたもの 蔵書管理システム 貸出管理システム 生徒ファイル 生徒番号 学年 クラス 番号 名前 性別 住所 貸出ファイル 貸出番号 図書番号 貸出月 貸出日 蔵書ファイル 図書番号 書名 著者名 分類 データベース データベース管理システム(DBMS) 情報システム
関係データベースではデータを行(レコード)と 列(フィールド)による2次元の表(テーブル)で あらわし複数の表を組み合わせてデータを管理する 前回のおさらい 前回のおさらい 関係データベースではデータを行(レコード)と 列(フィールド)による2次元の表(テーブル)で あらわし複数の表を組み合わせてデータを管理する 列(フィールド):データ項目 生徒番号 学年 クラス 番号 名前 性別 住所 12001 1 奥沢一輝 男 狛田村 12002 2 岡田一男 佐津町 12003 3 吉村一郎 坂本村 行(レコード):1件ずつのデータ
関係データベースの表の操作 射影 指定した列(フィールド)を取り出す 選択 指定した行(レコード)を取り出す 結合 前回のおさらい 関係データベースの表の操作 射影 指定した列(フィールド)を取り出す 選択 指定した行(レコード)を取り出す 結合 2つ以上の表(テーブル)を結びつける サクセスでこれらの操作を体験
データベースに登録されているデータを プログラムで検索しよう 今回の学習内容 データベースに登録されているデータを プログラムで検索しよう ・コンピュータにはプログラムで指示をする ・プログラムはコンピュータに伝わる言語 (プログラミング言語)で書く ・SQLはデータベースを操作するための言語 ・今日はSQLでデータベースからデータを検索してみよう 前回は図書館だったが、今回は一般の商品を考えてみよう!!!
世の中のシステムでは、SQLというデータベースを 操作するための言語が使われている 一般の商品をサクセスで考えると… サクセス:「表示 商品データ」 サクセス:「射影 商品コード、商品名」 商品コード 商品名 メーカー 価格 C4009 チキンヌードル<カレー味> みずうみ製麺 150 C6390 坦々ヌードル C7320 トマトヌードル C8522 シーフードヌードル : 商品コード 商品名 C4009 チキンヌードル<カレー味> C6390 坦々ヌードル C7320 トマトヌードル C8522 シーフードヌードル : サクセス:「選択 商品名 トマトヌードル」 商品 コード 商品名 メーカー 価格 C7320 トマトヌードル みずうみ製麺 150 世の中のシステムでは、SQLというデータベースを 操作するための言語が使われている
pid pname pmaker pprice 今回は「商品表(テーブル)」を扱う ・表(テーブル)名:product ・4個の列(フィールド)がある。 ・pidは商品コード。 この番号で商品を特定できる。(同じ番号の商品はない) ・pname, pmaker, ppriceに商品名、メーカー、価格が 入っている。 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
SQLエディタを起動 ● SQLエディタ http://saccess.eplang.jp/try/sql/
クラスIDとユーザIDの入力 クラスID・ユーザID入力エリアに それぞれ指示のあったIDを入力してください。 クラスID : 指定した6桁の数字 ユーザID : 自分の番号など(例: A07)
SQLエディタの使い方(1) ・画面のSQL実行エリアにプログラムを入れて実行する。 SQL実行エリア
SQLエディタの使い方(2) 実行したプログラムは上の履歴表示エリアに追加される 履歴表示エリアのプログラムはマウスでクリックで 再度使える。 実行した結果は下に表示される。 実行されたプログラムの履歴 SQLを実行すると 実行結果が表示される
SQLエディタの使い方(3) SQL文が間違っていたら、エラーメッセージが表示される。
まずはデータベースに接続しよう 今回は「shop」データベースを使用します。 SQL実行エリアに「use shop;」と入力しましょう。
まずはデータベースに接続しよう 履歴表示エリアに入力したプログラムが表示されます。 SQL実行エリアの下に接続成功のコメントが表示されます。 入力したプログラムが履歴として表示 接続成功のメッセージ
SQLの書き方 ・英語の単語で命令を書く。英語の文章と並びが似ている。 select * from product; (英文として読むと「商品表(テーブル)から * を選べ」という意味になる) ・「select」は「選択した結果を表示する」命令。 ・「*」は「すべての項目」の意味。 ・「product」は「表(テーブル)の名前」。 ・英文と同じく単語を空白で区切る。末尾は「.」ではなく「 ;」(セミコロン)を書く。
select フィールド名 from テーブル名; 射影の書き方 select フィールド名 from テーブル名; ・「 * 」の部分に列(フィールド)名を書くと そのフィールドだけが表示される。 ・2個以上の列(フィールド)名は「 , 」(カンマ)で区切る。 (例)商品名と価格のフィールドを表示する select pname,pprice from product;
select フィールド名 from テーブル名; 例題 1.1 「商品名」だけを表示しよう。 ● 射影の書き方 ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select pname from product; 例題 1.1 「商品名」だけを表示しよう。 select pname from product; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select pname from product; 例題 1.1 「商品名」だけを表示しよう。 select pname from product; 解答
select フィールド名, フィールド名 from テーブル名; 例題 1.2 「商品名」と「メーカー」を表示しよう ● 射影の書き方 ※2個以上のフィールド名は「,」(カンマ)で区切る ● 「product」テーブルのフィールド名 select フィールド名, フィールド名 from テーブル名; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select pname,pmaker from product; 例題 1.2 「商品名」と「メーカー」を表示しよう select pname,pmaker from product; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select pname,pmaker from product; 例題 1.2 「商品名」と「メーカー」を表示しよう select pname,pmaker from product; 解答
select フィールド名 from テーブル名 where 条件式; 選択条件の書き方 select フィールド名 from テーブル名 where 条件式; ・条件で選択するときは「where」に続いて条件を書く。 ・等しい 「=」 ・大きい小さい「>」「<」 ・以上以下「>=」「<=」 ・等しくない 「<>」 (例)140円の商品を表示する select * from product where pprice=140;
select フィールド名 from テーブル名 where 条件式; 例題 2.1 「150円の商品」を表示しよう ● 選択条件の書き方 ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where 条件式; ・等しい 「=」 ・大きい小さい「>」「<」 ・以上以下「>=」「<=」 ・等しくない 「<>」 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice=150; 例題 2.1 「150円の商品」を表示しよう select * from product where pprice=150; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice=150; 例題 2.1 「150円の商品」を表示しよう select * from product where pprice=150; 解答
select フィールド名 from テーブル名 where 条件式; 例題 2.2 「150円以上の商品」を表示しよう ● 選択条件の書き方 ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where 条件式; ・等しい 「=」 ・大きい小さい「>」「<」 ・以上以下「>=」「<=」 ・等しくない 「<>」 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice>=150; 例題 2.2 「150円以上の商品」を表示しよう select * from product where pprice>=150; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice>=150; 例題 2.2 「150円以上の商品」を表示しよう select * from product where pprice>=150; 解答
select フィールド名 from テーブル名 where 条件式; 例題 2.3 「150円以外の商品」を表示しよう ● 選択条件の書き方 ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where 条件式; ・等しい 「=」 ・大きい小さい「>」「<」 ・以上以下「>=」「<=」 ・等しくない 「<>」 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice<>150; 例題 2.3 「150円以外の商品」を表示しよう select * from product where pprice<>150; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select * from product where pprice<>150; 例題 2.3 「150円以外の商品」を表示しよう select * from product where pprice<>150; 解答
select フィールド名 from テーブル名 where フィールド名=’文字列’; 選択条件の書き方(文字列) select フィールド名 from テーブル名 where フィールド名=’文字列’; ・文字で選択するときは、条件の文字列を「’」 (クォーテーション)で囲む。 (例)メーカが「ラビット乳業」の商品を表示する select * from product where pmaker='ラビット乳業’;
select フィールド名 from テーブル名 where フィールド名=’文字列’; 例題 3.1 「メーカーがみずうみ製麺の商品」 を表示しよう ● 選択条件の書き方(文字列) ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where フィールド名=’文字列’; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「メーカーがみずうみ製麺の商品」 を表示しよう pid pname pmaker pprice 例題 3.1 「メーカーがみずうみ製麺の商品」 を表示しよう select * from product where pmaker=’みずうみ製麺’; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「メーカーがみずうみ製麺の商品」 を表示しよう select * from product where pmaker=’みずうみ製麺’; 例題 3.1 「メーカーがみずうみ製麺の商品」 を表示しよう select * from product where pmaker=’みずうみ製麺’; 解答
select フィールド名 from テーブル名 where フィールド名=’文字列’; 例題 3.2 「商品名が麦茶の商品」を表示しよう ● 選択条件の書き方(文字列) ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where フィールド名=’文字列’; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「商品名が麦茶の商品」を表示しよう select * from product where pname=’麦茶’; pid pname 例題 3.2 「商品名が麦茶の商品」を表示しよう select * from product where pname=’麦茶’; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
例題 3.2 「商品名が麦茶の商品」を表示しよう select * from product where pname=’麦茶’; 解答
select フィールド名 from テーブル名 where 条件式 AND 条件式; 選択条件の書き方(複数の条件) select フィールド名 from テーブル名 where 条件式 AND 条件式; ・2個以上の条件は「AND」でつなぐ。 (どちらかが成り立てばよい場合は「OR」) (例)「ラビット乳業の140円」の商品を表示する select * from product where pprice=140 AND pmaker=’ラビット乳業’;
select フィールド名 from テーブル名 where 条件式 AND 条件式; 例題 4.1 「みずうみ製麺の150円の商品」 を表示しよう ● 選択条件の書き方(複数の条件) ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where 条件式 AND 条件式; ※2個以上の条件は「AND」、どちらかが成り立てばよい場合は「OR」 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「みずうみ製麺の150円の商品」 を表示しよう pid pname pmaker pprice 例題 4.1 解答 意味 商品コード 商品名 select * from product where pmaker=’みずうみ製麺’ AND pprice=150; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「みずうみ製麺の150円の商品」 を表示しよう 例題 4.1 解答 select * from product where pmaker=’みずうみ製麺’ AND pprice=150; 解答
「150円以上か140円未満の商品」 を表示しよう ● 選択条件の書き方(複数の条件) ● 「product」テーブルのフィールド名 pid 例題 4.2 「150円以上か140円未満の商品」 を表示しよう ● 選択条件の書き方(複数の条件) ● 「product」テーブルのフィールド名 select フィールド名 from テーブル名 where 条件式 AND 条件式; select フィールド名 from テーブル名 where 条件式 AND 条件式; ※2個以上の条件は「AND」、どちらかが成り立てばよい場合は「OR」 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「150円以上か140円未満の商品」 を表示しよう pid pname pmaker pprice 例題 4.2 select * from product where pprice>=150 OR pprice<140; 解答 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「150円以上か140円未満の商品」 を表示しよう 例題 4.2 解答 select * from product where pprice>=150 OR pprice<140; 解答
まとめ ・SQLを使うと、1行で選択や射影を 行えて便利 ・来週はSQLを使った検索の続きを行う 宿題 最後の授業でオリジナルデータベースを使った演習を行うので 登録したい商品情報を考え、配布のExcelシートに記入する。
SQLエディタによる データベースプログラミング 02
SQLの振り返り ・表示の基本形 ・射影 ・選択条件 select * from product; ※フィールド名の代わりに「*(アスタリスク)」を指定すると 全てのフィールドの値を返す。 select フィールド名 from テーブル名; select フィールド名 from テーブル名 where 条件式;
前回と同様に「商品表(テーブル)」を扱う ・表(テーブル)名:product ・4個の列(フィールド)がある。 ・pidは商品コード。 この番号で商品を特定できる。(同じ番号の商品はない) ・pname, pmaker, ppriceに商品名、メーカー、価格が 入っている。 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
SQLエディタを起動 ● SQLエディタ http://oecu-edu.sakura.ne.jp/sql/
クラスIDとユーザIDの入力 クラスID・ユーザID入力エリアに それぞれ指示のあったIDを入力してください。 クラスID : 指定した6桁の数字 ユーザID : 自分の番号など(例: A07)
データベースに接続する 演習では「shop」データベースを使用します。 SQL実行エリアに「use shop;」と入力しましょう。
結果の並べ方 ・「order by asc」で結果を指定したフィールドで 昇順(小さい順)に並べられる。※ascは省略可 select フィールド名 from テーブル名 order by フィールド名 asc; ・「order by asc」で結果を指定したフィールドで 昇順(小さい順)に並べられる。※ascは省略可 ・「desc」を付けると降順(大きい順)になる。 (例)価格の安い順 select * from product order by pprice; (例)価格の高い順 select * from product order by pprice desc;
価格の安い順に並べた際に 最初にある商品名とメーカーは何か? 問 1 価格の安い順に並べた際に 最初にある商品名とメーカーは何か? ● 昇順に並べる書き方 ・価格が安い順 select フィールド名 from テーブル名 order by フィールド名 asc; select * from product order by pprice; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
価格の安い順に並べた際に 最初にある商品名とメーカーは何か? 問 1 価格の安い順に並べた際に 最初にある商品名とメーカーは何か? 解答
価格の高い順に並べた際に 最初にある商品名とメーカーは何か? 問 2 価格の高い順に並べた際に 最初にある商品名とメーカーは何か? ● 昇順に並べる書き方 ・価格が高い順 select フィールド名 from テーブル名 order by フィールド名 desc; select * from product order by pprice desc; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
価格の高い順に並べた際に 最初にある商品名とメーカーは何か? 問 2 価格の高い順に並べた際に 最初にある商品名とメーカーは何か? 解答
文字を含む検索の書き方 select フィールド名 from テーブル名 where フィールド名 like '検索条件'; ・「%」を検索条件(文字列)の前後において指定する。 ※「%」は「この位置にどんな文字列があってもいい(なくてもいい)」という意味 ※「%」は必ず半角で書くこと! (例)「茶」という文字を含む商品名を選択する select * from product where pname like ’%茶%’;
「商品名に麦を含む商品」を表示しよう。 ● 文字を含む検索の書き方 pid pname pmaker pprice 問 3 「商品名に麦を含む商品」を表示しよう。 ● 文字を含む検索の書き方 ・「%」を検索条件(文字列)の前後において指定する。 (例)like ‘%茶%’; 生姜番茶、煎茶百年 select フィールド名 from テーブル名 where フィールド名 like '検索条件'; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「商品名に麦を含む商品」を表示しよう。 pid pname pmaker pprice 問 3 「商品名に麦を含む商品」を表示しよう。 解答 select * from product where pname like '%麦%'; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「商品名に麦を含む商品」を表示しよう。 select * from product where pname like '%麦%'; 問 3 解答 select * from product where pname like '%麦%';
「商品名が茶で終わる商品」を表示しよう。 問 4 「商品名が茶で終わる商品」を表示しよう。 ● 文字を含む検索の書き方 ・「%」を検索条件(文字列)の前後において指定する。 select フィールド名 from テーブル名 where フィールド名 like '検索条件'; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「商品名が茶で終わる商品」を表示しよう。 問 4 「商品名が茶で終わる商品」を表示しよう。 解答 select * from product where pname like '%茶'; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
「商品名が茶で終わる商品」を表示しよう。 問 4 「商品名が茶で終わる商品」を表示しよう。 解答 select * from product where pname like '%茶';
結果の件数や合計を表示する select count(フィールド名) from テーブル名; ・結果の件数 ・合計 ・平均 select count(フィールド名) from テーブル名; select sum(フィールド名) from テーブル名; select avg(フィールド名) from テーブル名; (例)全てのレコード数を表示する select count(*) from product; ※ 「*(アスタリスク)」を指定した場合はすべてのレコード数を取得
pid pname pmaker pprice 問 5 価格が150円の商品のレコード数は? ● 結果の件数の書き方 ● 選択条件の書き方 select count(*) from テーブル名; select フィールド名 from テーブル名 where 条件式; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
pid pname pmaker pprice 問 5 価格が150円の商品のレコード数は? 解答 select count(*) from product where pprice=150; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
価格が150円の商品のレコード数は? select count(*) from product where pprice=150; 問 5 解答 select count(*) from product where pprice=150;
pid pname pmaker pprice 問 6 「商品の価格の合計」を表示しよう。 ● 合計の書き方 select sum(フィールド名) from テーブル名; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
pid pname pmaker pprice 問 6 「商品の価格の合計」を表示しよう。 解答 select sum(pprice) from product; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
問 6 「商品の価格の合計」を表示しよう。 解答 select sum(pprice) from product;
select avg(フィールド名) from テーブル名; 問 7 「商品の平均価格」を表示しよう。 ● 結果の件数の書き方 select avg(フィールド名) from テーブル名; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select avg(pprice) from product; 問 7 「商品の平均価格」を表示しよう。 解答 select avg(pprice) from product; 列(フィールド)名 pid pname pmaker pprice 意味 商品コード 商品名 メーカー 価格
select avg(pprice) from product; 問 7 「商品の平均価格」を表示しよう。 解答 select avg(pprice) from product;
まとめ 「order by」で検索結果を小さい順などに 並べ替えられる。 「%」で文字を含む検索を行える。 「count」や「sum」で件数や合計を 計算できる。 来週は登録したデータを検索するインターネットの プログラムを体験する。 宿題 HTML、CSS、PHPがどのようなものか調べておく