WebプログラミングU

 目次へ 前へ 次へ

2012/5/22 久米

前回までの復習


Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 28 to server version: 4.0.x-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use web2;
Database changed

mysql> CREATE TABLE conveni(
    -> id INT PRIMARY KEY AUTO_INCREMENT,
    -> name VARCHAR(30),
    -> kind VARCHAR(30),
    -> price INT,
    -> date DATE,
    -> sales INT);
Query OK, 0 rows affected (0.11 sec)

mysql> desc conveni;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     |      | PRI | NULL    | auto_increment |
| name     | varchar(30) | YES  |     | NULL    |                |
| kind     | varchar(30) | YES  |     | NULL    |                |
| price    | int(11)     | YES  |     | NULL    |                |
| date     | date        | YES  |     | NULL    |                |
| sales    | int(11)     | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
6 rows in set (0.01 sec)

mysql> INSERT INTO conveni
    -> (name, kind, price, date, sales)
    -> VALUES
    -> ('ペロペロキャンディー', 'お菓子', 100, '2004/1/1', 1238);
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO conveni
    -> (name, kind, price, date, sales)
    -> VALUES
    -> ('幕の内', '弁当', 1500, '2004/3/1', 24);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO conveni
    -> (name, kind, price, date, sales)
    -> VALUES
    -> ('天丼', '弁当', 1000, '2004/3/1', 96);
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM conveni;
+------+----------------------+--------+-------+------------+----------+
| id   | name                 | kind   | price | date       | sales    |
+------+----------------------+--------+-------+------------+----------+
|    1 | ペロペロキャンディー | お菓子 |   100 | 2004-01-01 |     1238 |
|    2 | 幕の内             | 弁当  |  1500 | 2004-03-01 |       24 |
|    3 | 天丼                | 弁当  |  1000 | 2004-03-01 |       96 |
+------+----------------------+--------+-------+------------+----------+
3 rows in set (0.01 sec)

 

2.3 SQL文の基礎(2)更新系

2.3.1 UPDATE 文

  文法
データ更新
UPDATE テーブル名
SET 列名=値 [,・・・]
WHERE 検索条件;
「幕の内は売れないので値下げしよう」
UPDATE conveni
SET
price=980,
date='2004/5/1',
sales=0
WHERE name='幕の内';
 
「お弁当は一律100円引きで売りまくろう」
UPDATE conveni
SET
price=price-100,    <---このようにプログラム文のように書くこともできます。
date='2004/5/1',
sales=0
WHERE kind='弁当';

 

SETはプログラム文のように書ける

ここでは整数型の加減乗除のみ述べる。
整数型の平均や最大、および文字列型や日付型の演算はMySQLの関数を使用することもできる。

kind
備考
加算
SET 列1=列1+100
使用頻度高い
減算
SET 列1=列1-100 使用頻度高い
乗算
SET 列1=列1*100  
除算
SET 列1=列1/100  
他列値の
使用も可
SET 列1=列2+列3+列4  

 

演習3 選挙用のテーブルを作成し、UPDATE文で一票ずつ適当に投票してみよ。

 

2.3.2 DELETE 文

DELETE FROM テーブル名
WHERE 検索条件;

例 「売上不振でお弁当は取り扱わないようにしよう」

  文法
データ削除
DELETE FROM テーブル名
WHERE 検索条件;
「売上不振でお弁当は取り扱わないようにしよう」
DELETE FROM conveni
WHERE kind='lunch';

注意!

DELETE FROM conbini_shohin;
などとWHERE文を書かないと全ての行が削除されるので注意!

DELETE文やUPDATE文は事前に確認がベター

  1. DELETE文やUPDATE文を手動で実行する場合。
  2. SELECT文で同じWHEREを使用して読み取りし、
  3. どの行に適用されるか確認するのがベター。

    DELETE FROM conveni
    WHERE kind='lunch';  を実行したい場合、

    SELECT * FROM conveni
    WHERE kind='lunch'; を実行してDELETEが適用される行を見てみる。

 

2.3.3 ALTER 文

操作kind 文法
列の追加
ALTER TABLE テーブル名
ADD 列名 データ型 [, ...];
ALTER TABLE conveni
ADD zaiko INT,
ADD seizomoto VARCHAR(12);
列を削除
ALTER TABLE テーブル名
DROP 列名 [, ...];
ALTER TABLE conveni
DROP zaiko,
DROP seizomoto;
列のデータ型変更

ALTER TABLE テーブル名
MODIFY 列名 データ型 [, ...];

ALTER TABLE conveni
MODIFY name VARCHAR(40);

列の名前、データ型を変更 ALTER TABLE テーブル名
CHANGE 現列名 新列名 新データ型 新オプション;
ALTER TABLE conveni
CHANGE price zeikomiprice INT;
テーブルの名前変更 ALTER TABLE 現テーブル名
RENAME AS 新テーブル名;
ALTER TABLE conveni
RENAME AS conveni_list;

 

2.3.4 DROP文

  文法
テーブル削除
DROP TABLE テーブル名; DROP TABLE monster;

 

2.3.5 MySQLの関数

SELECT時やUPDATE時などに使うと便利な関数

関数名 説明
LOWER(str) すべて小文字に変換 SELECT * FROM users
WHERE LOWER(name)='abc';
GREATEST(X,Y,...) 最も大きい引数 UPDATE users
SET
rating=GREATEST(0, rating-16)
WHERE id=38;
ENCODE(str,pass_str) 暗号化する。 INSERT INTO users
(name, password)
VALUES
('Taro', ENCODE('336512','seed'))";

 

2.3.6 phpMyAdmin

phpMyAdminはMySQLをGUIで管理できるツールです。ブラウザ型なので幅広く使用されています。

XAMPPでインストールしましたので自動的に入っています。

以下は単体でインストールする時の参考

単体ダウンロードサイト http://www.phpmyadmin.net/home_page/

1. C:\Program Files\Apache Group\Apache2\htdocs\自分のフォルダ へフォルダ\phpMyAdminを作成する。
解凍したものすべてを上記フォルダに移動する。

2. phpMyAdmin\librariesの中にあるconfig.default.phpをphpMyAdmin直下にコピーし config.inc.phpとりネームし
最低限下記3点を変更する。。

$cfg['PmaAbsoluteUri'] = 'http://'.$_SERVER["HTTP_HOST"].'/自分のフォルダ/phpMyAdmin/';
$cfg['Servers'][$i]['password'] = 'root'; // rootのパスワードを記入。
$cfg['DefaultCharset'] = 'SHIFT_JIS';

(また下記の2箇所を変更しておくと、サーバマシンからのアクセスのみを許す設定になる。
サーバマシン以外からアクセスしたい場合は、これを元にもどし、apacheのアクセス権設定をする)

$cfg['Servers'][$i]['AllowDeny']['order'] // Host authentication order, leave blank to not use
= 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] // Host authentication rules, leave blank for defaults
= array(
'deny % from all',
'allow % from localhost'
);

3. http://localhost/からphpMyAdminにアクセスする。

4.表作成から行挿入、検索、行更新、行削除など試してみよう

 

 

phpMyAdminツールでデータベースの保存

保存

  1. 保存したいテーブルを選択する。
  2. エクスポートのタブをクリック。
  3. 「ファイルに落とす」にチェックする。
  4. 実行ボタンを押す。
  5. 保存先を聞いてくるので、保存先を指定する。

保存ファイルを読み取る

  1. 読み取り先のデータベースを選択する。
  2. インポートのタブをクリック。
  3. ファイルの文字セットをsjisに設定
  4. 参照ボタンを押し、読み取りたいファイルを選択する。
  5. 実行ボタンを押す。

    ※読み取り先に、同じ名前のテーブルがあった場合、エラーになるので、削除しておくか、名前を変えておく。

 

phpMyAdminで新規データーベース作成時注意点

新規データベース照合順序をutf8_general_ciに設定すること。
こうしないと文字化けが発生する。

 

 

 

 

付録