2008/6/3 久米
前回までの復習
      
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 kume;
Database changed
mysql> CREATE TABLE conveni(
    -> no 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          |
+----------+-------------+------+-----+---------+----------------+
| no       | 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;
+------+----------------------+--------+-------+------------+----------+
| no   | 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)
     | 
  
| 文法 | 例 | |
| データ更新 | 
    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='お弁当';  | 
  
上記例 テーブル conveni
| no | name | kind | price | date | sales | 
| 1 | ペロペロキャンディー | お菓子 | 100 | 2004/1/1 | 1238 | 
| 2 | 幕の内 | お弁当 | 1500 | 2004/3/1 | 24 | 
| 3 | 天丼 | お弁当 | 1000 | 2004/3/1 | 96 | 
ここでは整数型の加減乗除のみ述べる。
整数型の平均や最大、および文字列型や日付型の演算はMySQLの関数を使用することもできる。
| 
       
        kind
       
     | 
    例 | 備考 | 
| 
       
        加算
       
     | 
    SET 列1=列1+100 | 
    使用頻度高い | 
| 
       
        減算
       
     | 
    SET 列1=列1-100 | 使用頻度高い | 
| 
       
        乗算
       
     | 
    SET 列1=列1*100 | |
| 
       
        除算
       
     | 
    SET 列1=列1/100 | |
| 
       
        他列値の 
    使用も可  | 
    SET 列1=列2+列3+列4 | 
| DELETE FROM テーブル名 WHERE 検索条件;  | 
  
例 「売上不振でお弁当は取り扱わないようにしよう」
| 文法 | 例 | |
| データ削除 | 
    DELETE FROM テーブル名 WHERE 検索条件;  | 
    「売上不振でお弁当は取り扱わないようにしよう」 DELETE FROM conveni WHERE kind='お弁当';  | 
  
DELETE FROM conbini_shohin;
などとWHERE文を書かないと全ての行が削除されるので注意!
DELETE FROM conveni
WHERE kind='お弁当'; を実行したい場合、
SELECT * FROM conveni
WHERE kind='お弁当'; を実行してDELETEが適用される行を見てみる。
| 操作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 テーブル名  | 
    
       ALTER TABLE conveni  | 
  
| 列の名前、データ型を変更 | ALTER TABLE テーブル名 CHANGE 現列名 新列名 新データ型 新オプション;  | 
    ALTER TABLE conveni CHANGE price zeikomiprice INT;  | 
  
| テーブルの名前変更 | ALTER TABLE 現テーブル名 RENAME AS 新テーブル名;  | 
    ALTER TABLE conveni RENAME AS conveniリスト;  | 
  
| 文法 | 例 | |
| テーブル削除 | 
    DROP TABLE テーブル名; | DROP TABLE monster; | 
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 ('太郎', ENCODE('336512','seed'))";  | 
  
phpMyAdminはMySQLをGUIで管理できるツールです。ブラウザ型なので幅広く使用されています。
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にapacheでアクセス権をつけることを忘れないように。