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