webデザイン特別プログラム データベース実習編3...
TRANSCRIPT
Webデザイン特別プログラム
データベース実習編3
MySQL演習, phpMyAdmin
静岡理工科大学 総合情報学部
幸谷智紀
http://na-inet.jp/
RDBの基礎の基礎 • RDB(Relational DataBase)はデータを集合として扱う
• データの取り扱いはテーブル(=集合)の演算(和集合,積集合・・・)と同じ
• データベースには複数のテーブルを作ることができる
jikken
id name name_yomi
1 幸谷智紀 こうやとものり
2 大椙弘順 おおすぎこうじゅん
データベース(DB)名
meibo_table テーブル(table)名
フィールド(field)名
SQL文
• RDBを操作するための言語
• 命令文は大文字小文字の区別なし
• 今回使用するのはごく基本的なものだけ
– CREATE・・・DBやテーブルの新規作成
– INSERT・・・テーブルにデータを追加
– UPDATE・・・既存のデータを更新
– DELETE・・・既存のデータを削除
– SELECT・・・データの検索
MySQLの仕組み
• クライアント・サーバ型(C/S)のRDBMS。
• MySQL Serverはクライアントとは異なるマシンに設置してあっても構わない。
MySQL(CUI)の準備 1.“C:¥xampp¥mysql¥bin”にパスを通しておく
「システムのプロパティ」→「詳細設定」→「環境変数」→「Path」に追加
3.コマンドプロンプトを開き,mysqlコマンドが実行できることを確認。
MySQL(クライアント側)の使い方
• コマンドラインから・・・非常時にはこちらしか使えないので覚えておくこと。
$ mysql –u ユーザ名 –p
Enter password: パスワードを入力(表示されない)
mysql> ←”mysql”プロンプトが出る
• phpMyAdminから・・・普段はこちらで良い。http://localhost/phpmyadmin/
rootパスワードの変更
• Mysqladminコマンドでrootパスワードの設定
「test」と設定
→ $ mysqladmin password "test" -u root
パスワードの確認
$ mysql -u root –p
Enter password: **** ←「test」と打つ
mysql> ←プロンプトが出ればO.K.
C:¥xampp¥phpMyAdmin¥config
.inc.phpの変更 $cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg[‘Servers’][$i][‘password’] = 'test'; ←パスワードを書き込んでおく
データベースの作成・削除・確認
(コマンドは小文字も可) • データベースの作成
CREATE DATABASE データベース名;
• データベースの削除
DROP DATABASE データベース名;
• データベース名の確認
SHOW DATABASES;
テーブルの作成・削除 • データベースを選択してから作る場合
USE データベース名;←データベースの選択
CREATE TABLE テーブル名 (フィールド名1 データ型, フィールド名2 データ型, …,その他);
• データベース選択なしで作る場合
CREATE TABLE データベース名.テーブル名 (フィールド名1 データ型, フィールド名2 データ型, …, その他);
• テーブルの削除・確認
DROP TABLE テーブル名;
SHOW TABLES (FROM データベース名);
フィールドのデータ型・属性等
• データ型
–数値型・・・INT, DOUBLE等
–日付・時刻型・・・DATE, TIMESTAMP等
–文字列型・・・VARCHAR, TEXT等
• その他
–主キーの指定: primary key(フィールド名)
–自動インクリメント: auto_increment
注意! • MySQLに格納されるデータ・・・UTF-8
C:¥xampp¥mysql¥bin¥my.incの変更
## UTF 8 Settings
#init-connect=¥'SET NAMES utf8¥'
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="C:/xampp/mysql/share/charsets"
行頭の「#」を外し変更し,MySQLを再起動しておくこと。
phpMyAdminでSQL文を実行
• 以下は口頭の説明のみ(見て分かる人は試してみること)
–データベースの作成・削除
–テーブルの作成
–データ検索
–データ更新
–データ削除
–データベースのバックアップ・リストア
練習 1. “prime_minister”というデータベースを作成せよ。
2. “japanese”テーブルを次のCREATE文を使って作成せよ。
CREATE TABLE `japanese` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32),
`yomigana` varchar(64),
PRIMARY KEY (`id`)
);
3. フィールド名,データ型指定が正しいかどうかを確認せよ。
SHOW FIELDS FROM japanese(テーブル名);
データ追加・検索・更新・削除
• このSQL文を,PHPスクリプトに埋め込んで発行させることになる。
• SQL文 ←→ PHPに埋め込まれた文字列
データ追加・・・INSERT
insert into テーブル名(フィールド名1, フィールド名2, ...) values(データ 1, データ 2, ...)
例)「吉田茂(よしだしげる)」を追加
insert into japanese (name, yomigana)
values(' 吉田茂', ' よしだしげる');
データ更新・・・UPDATE
update テーブル名 set フィールド名1=' データ
1', フィールド名2=' データ 2', ... where フィールド名='データ'
例) id=1 のデータを更新
update japanese set name=' 鳩山一郎',
name_yomi=' はとやま
いちろう' where id=1;
データ検索・・・SELECT
select フィールド名1, ... from テーブル名 (検索指定)
(注) 全フィールドが対象であれば‘*’を指定
例) id=1 のデータを検索して表示
select * from japanese where id=1;
例) ”吉田”を含む文字列のデータを検索して表示
select name, yomigana from japanese like %吉田%;
データ削除・・・DELETE
delete from テーブル名 where フィールド名='
データ'
例) id=1 のデータを削除
delete from japanese where id=1;
データベースのバックアップ・リストア
(コマンドラインの場合)
• mysqldumpコマンドを利用(大量のデータはリダイレクトを使用してファイルに保存しておくこと)
• 全てSQL文として保存される(拡張子は.sqlにしておくと良い)
• データはUTF-8として保存される(今回の設定)
【特定のデータベースのみをバックアップ】
$ mysqldump データベース名 –u ユーザ名 –p > ファイル名
【全部のデータベースをバックアップ】
$ mysqldump ーーall-databases データベース名 –u ユーザ名 –p
> ファイル名
【リストア】・・・$ mysql –u ユーザ名 –p (データベース名)< ファイル名
課題
• 戦後の総理大臣(首相官邸サイトにある)を10名追加せよ。
• SQL文でバックアップを取り,内容が完全に復元できることを確認せよ。
課題 1. 次の仕様のデータベース・テーブルを作成せよ。
–データベース名:twitter
–テーブル名: sample
– フィールド数:3
• INT id
• VARCHAR(32) username
• TEXT(256) message
2. 3つ以上のデータを追加せよ(内容は任意)。
3. SQL文でバックアップを取り,内容が完全に復元できることを確認せよ。