データベース - signalysis.co.jp · シナリオ1...
TRANSCRIPT
![Page 1: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/1.jpg)
データベースデータベース
第9回(2010年11月12日)
演習「DBの基本操作」
![Page 2: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/2.jpg)
第9回第9回のテーマのテーマ
�シラバスより
【第11回】⇒【第9回】
データを読み込む、テーブルを定義すデータを読み込む、テーブルを定義す
る、データを編集するなど、基本操作
に関するSQLコマンドを学ぶ。
![Page 3: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/3.jpg)
今日学ぶべきことがら今日学ぶべきことがら
�コマンドプロンプトからの起動
�テーブルの作成
�テーブルの結合
ノートの左側:「問い」の部分に記載する
(書き込むのは、後にしよう。)
![Page 4: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/4.jpg)
今日試すこと今日試すこと
�データベースを、コマンドプロンプト
から使えるようにする。
◦ アクセス権限を設定する。
�「社員」テーブルや、「取引先」テー�「社員」テーブルや、「取引先」テー
ブルを作成し、「自然結合」で売上
テーブルから別の表を作成する。
![Page 5: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/5.jpg)
MySQLMySQLコマンドプロンプトコマンドプロンプト
� 最初に、MySQLコマンドプロンプトを起動する。
� メニューから「すべてのプログラム」を選
び、MySQLから「Command Line Client」を選ぶ選ぶ
![Page 6: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/6.jpg)
「データベース」を作る。「データベース」を作る。
� 先週の復習です。
� create database データベース名;
◦ create database reidaiDB;◦ create database reidaiDB;
� 複数のテーブルを格納するデータベース
を作成する。
� SQLのコマンド行は、;(セミコロン)で終わる。
� (先週作ったので、今週は実行しない)
![Page 7: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/7.jpg)
データベースの一覧を見る。データベースの一覧を見る。
� show databases;
�複数形であることに注意する。
![Page 8: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/8.jpg)
データベースを削除する。データベースを削除する。
�先週の復習です。
� drop database データベース名;
◦ drop database reidaiDB;◦ drop database reidaiDB;
�そのデータベースの中にある表(テー
ブル)も、その中身のデータもすべて
消えてしまう。
�間違ってデータベースを消さないよう
に注意する!(今日は試さない!)
![Page 9: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/9.jpg)
データベースの使用宣言をするデータベースの使用宣言をする
� connect データベース名;
◦ または
� use データベース名;
◦ connect reidaiDB;:◦ connect reidaiDB;:
◦ または
◦ use reiadiDB;
![Page 10: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/10.jpg)
アクセスを許可するアクセスを許可する
� rootに対しても、アクセスの許可を最初に設定する。
grant all privileges on reidaiDB.* to root@localhost identified by ‘root';root@localhost identified by ‘root';
�最初にこれを入力しておいてから、コ
マンドプロンプトでmySQLを使う。
![Page 11: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/11.jpg)
漢字コードを指定しておく漢字コードを指定しておく
�シフトJISコードを使う!と宣言する。
set CHARACTER SET sjis;
![Page 12: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/12.jpg)
コマンドプロンプトの切り替えコマンドプロンプトの切り替え
� MySQL Command Line Clientを終了する。
◦ exit
◦ と入力して抜ける。◦ と入力して抜ける。
�アクセサリから、コマ
ンドプロンプトを起動
する。
![Page 13: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/13.jpg)
なぜ、コマンドプロンプト?なぜ、コマンドプロンプト?
� MySQLのコマンドラインの設定の場合、
作業パスの変更が容易ではないが、コ
マンドプロンプトから起動すると、
「作業ディレクトリ」を容易に移るこ「作業ディレクトリ」を容易に移るこ
とができるので。
![Page 14: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/14.jpg)
コマンドプロンプトからの起動コマンドプロンプトからの起動
�コマンドプロンプトで
◦ mysql –u root -p
�と入力して、MySQLが起動することを確認する。確認する。
![Page 15: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/15.jpg)
起動できなかった人は・・・起動できなかった人は・・・
� Configを実行する際に、WindowsのPATHの設定を指定し忘れた人
� コンピュータを右クリックし、「プロパ
ティ」から「システムの詳細設定」
⇒「詳細設定」⇒「環境変数」⇒PATH⇒⇒「詳細設定」⇒「環境変数」⇒PATH⇒
「編集」と選択していき、最後に
;C:¥Program Files¥MySQL¥MySQL Server 5.0¥bin
を追加する。(PATHの窓から文字列をコピーして、貼り付ける。)
![Page 16: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/16.jpg)
PATHPATHの設定の方法の設定の方法
![Page 17: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/17.jpg)
ディレクトリを移動するディレクトリを移動する
� ディレクトリ表示の画面で、アドレスバーを表示する。
� コマンドプロンプトで、
� cd (SPACE)
� と入力してから、アドレスをドラッグする。
� または、
� cd C:¥MySQLData� cd C:¥MySQLData
� と直接入力する。
![Page 18: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/18.jpg)
作業ディレクトリの移動作業ディレクトリの移動
�作業ディレクトリをcdで移動してから、mysqlを起動する。
![Page 19: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/19.jpg)
コマンドプロンプトの起動コマンドプロンプトの起動
�プログラムから、コマンドプロンプト
を起動する。(XPまでの場合)
![Page 20: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/20.jpg)
準備完了準備完了
�この準備作業の理由
� SQLを直接入力するのではなく、source文で読み込ませたい。
�そのためには、拡張子がsqlのファイ�そのためには、拡張子がsqlのファイルを、簡便に編集できた方がよい。
![Page 21: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/21.jpg)
社員テーブルを社員テーブルを作る作る
�サンプルのデータベースに、
◦ 赤井、井上、上木、江田、尾崎・・・と
いう「担当者名」が既に入っている。
◦ 本当なら、「社員ID」をキーにすべきだID
が、今回は、この「姓」を主キーにして
しまう。(同じ名字の人は、1人しかいない、という前提で・・・)
![Page 22: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/22.jpg)
表表の定義の定義
【書式】
create table 表名表名表名表名 (列名列名列名列名 データ型データ型データ型データ型 [列属性列属性列属性列属性] [列属性列属性列属性列属性]…
[,列名列名列名列名 データ型データ型データ型データ型 [列属性列属性列属性列属性]…]
…
[,オプション属性オプション属性オプション属性オプション属性 [オプション属性オプション属性オプション属性オプション属性]…]
))
◦ データ型 :char(5),,,,varchar(20),,,,int,,,,date など
◦ 列属性 :primary key,,,,not null など
◦ オプション属性 :primary key (列名, 列名 …)
![Page 23: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/23.jpg)
表表の定義の定義(社員テーブル)(社員テーブル)
社員の姓、名、電話番号だけの表を定義する。
create table syainT(
clerk varchar(10) primary key,
name varchar(10),
phone varchar(14) );
上記を確認する.
show columns from syainT;
![Page 24: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/24.jpg)
実行の確認実行の確認
![Page 25: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/25.jpg)
テーブルの構造を確認するテーブルの構造を確認する
� show columns from テーブル名;
![Page 26: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/26.jpg)
データ登録は、データ登録は、SQLSQLファイルでファイルで
� syainTに、データを登録するSQLコマンドは、メモ帳で編集する。
�(何度も長い記述を入力しなくて済む�(何度も長い記述を入力しなくて済む
から)
![Page 27: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/27.jpg)
SQLファイルSQLファイル
�予め、よく使うSQL文をファイルで
作成しておく。
source ファイル名;source ファイル名;
�で、そのSQLファイルを実行する。
![Page 28: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/28.jpg)
データを登録するデータを登録する
メモ帳に、以下の記述を行う。
insert into syainT values (
‘赤井赤井赤井赤井’, ‘秀樹秀樹秀樹秀樹’, ‘090-1234-5678’ );
insert into syainT values (
‘井上井上井上井上’, ‘美香美香美香美香’, ‘080-9876-5432’ );
insert into syainT values (insert into syainT values (
‘上木上木上木上木’, ‘等等等等’, ‘080-2222-3333’ );
insert into syainT values (
‘江田江田江田江田’, ‘紀子紀子紀子紀子’, ‘080-4444-5555’ );
このやり方で、全員分を登録してしまう。(内容は適当で
よい)尾崎、加山、木村、工藤、剣持、小林
![Page 29: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/29.jpg)
社員データの例社員データの例
insert into syainT values (
'赤井', '秀樹', '090-1234-5678' );
insert into syainT values (
'井上', '美香', '080-9876-5432' );
insert into syainT values (
'上木', '等', '080-2222-3333' );
insert into syainT values (
'江田', '紀子', '080-4444-5555' );
insert into syainT values (insert into syainT values (
'尾崎', '豊', '080-xxxx-xxxx' );
insert into syainT values (
'加山', '雄二', '080-xxxx-xxxx' );
insert into syainT values (
'木村', '真央', '080-xxxx-xxxx' );
insert into syainT values (
'工藤', '静', '080-xxxx-xxxx' );
insert into syainT values (
'剣持', '大介', '080-xxxx-xxxx' );
insert into syainT values (
'小林', '幸子', '080-xxxx-xxxx' );
![Page 30: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/30.jpg)
名前を名前をつけて保存つけて保存
�編集したファイルに、syain.sqlという名前をつけて保存する。
![Page 31: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/31.jpg)
個別のデータ変更個別のデータ変更
� update syainT set phone=‘080-5432-1357’ where clerk =‘木村’;
� Updateテーブル名 set 項目名=値� Updateテーブル名 set 項目名=値where 条件
�教科書 P137
![Page 32: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/32.jpg)
コマンドプロンプトで漢字を使コマンドプロンプトで漢字を使
う時は、う時は、
� [Alt]キーを押しながら、[半角/全角]キーを押す。
![Page 33: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/33.jpg)
シナリオ1シナリオ1
�赤井さんが売り上げた商品の、日付と
相手先と、金額(商品数×単価)を表
示する。
select sale_date, sold_to, num_item*price
from salesTfrom salesT
where clerk=‘赤井’;
�「文」の最後は;(セミコロン)
� Fromテーブル名の後の、where句に、条件を記述する
![Page 34: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/34.jpg)
シナリオ2シナリオ2
�赤井さんの売上合計金額を計算する
� Select sum(num_item*price) from salesTwhere clerk=‘赤井’;where clerk=‘赤井’;
![Page 35: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/35.jpg)
シナリオ3シナリオ3
�日付順の売上表に、売り上げた社員を
フルネームで表示する。
select sale_date, syainT.clerk, syainT.name, select sale_date, syainT.clerk, syainT.name, sold_to, price*num_item
from salesT, syainT
where salesT.clerk=syainT.clerk ;
![Page 36: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/36.jpg)
4.4 4.4 問合せ問合せ
4.4.1 基本構文
最も基本的な問合せ問合せ問合せ問合せの書式:
Select {****|列名列名列名列名1,,,,列名列名列名列名2,,,,…,,,,列名列名列名列名n}from 表名表名表名表名1[,,,,表名表名表名表名2,,,,…,,,,表名表名表名表名m][where 探索条件探索条件探索条件探索条件]
◦ 実表◦ 実表
◦ 導出表
◦ ドット表現:表名....列名
◦ select句,from句,where句
【Q1】表「DetailT」を全て出力したい.
select **** from DetailT;
+---------+------------------+-------+-----+
| OrderID | Item | Price | Qty |
+---------+------------------+-------+-----+
| 16001 | MOドライブ | 50 | 1 |
| 16001 | テーブルタップ | 2 | 4 |
| 16001 | ディスプレイ | 45 | 2 |
| 16001 | パソコン | 100 | 2 |
| 16002 | CFメモリ | 10 | 2 |
| 16002 | ディジタルカメラ | 30 | 1 |
| 16003 | パソコン | 90 | 3 |
| 16003 | フィルター | 6 | 2 |
| 16004 | キャリアー | 5 | 1 |
| 16004 | ディスプレイ | 40 | 3 |
| 16004 | ノートパソコン | 190 | 1 |
| 16004 | バッテリー | 9 | 1 |
+---------+------------------+-------+-----+
![Page 37: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/37.jpg)
SelectSelect文と、文と、UpdateUpdate文文
�「検索」と「修正」
�データを選びだすのがSelect
�データを修正するのがUpdate
�この二つの組み合わせで、データベー
スから情報を引き出し、中身を書き換
えていく。
![Page 38: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/38.jpg)
条件の設定:条件の設定:wherewhere節節
� select文も、update文も、対象の行を選びだすのにwhere節を使う。
� where 条件� where 条件
�このwhereの使い方が、SQL習熟の鍵
![Page 39: データベース - signalysis.co.jp · シナリオ1 赤井さんが売り上げた商品の、日付と 相手先と、金額(商品数×単価)を表 示する。 select sale_date,](https://reader033.vdocuments.mx/reader033/viewer/2022042408/5f2491872f6165189f412b79/html5/thumbnails/39.jpg)
次回予告次回予告
�次回は、さらに他の比較述語を試しま
す。