前回記事MySQLでテーブル作成1ではテーブルを作成しました。今回はそのテーブルに対して色々な操作をし、理解を深めていきたいと思います。6月1日記事
目次
データベースを選択していなければ。 mysql> use データベース名; データベースを選択後 mysql> SHOW TABLES;
すると次のように表示されるはずです。 mysql> show tables;
+-----------------------+ | Tables_in_nicepaperdb | +-----------------------+ | information | +-----------------------+ 1 row in set (0.00 sec)
mysql> DESC information; すると以下のように出てきます。 +-----------+--------------+------+-----+------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | info_date | date | NO | MUL | 0000-00-00 | | | title | varchar(255) | NO | | | | | type | tinyint(1) | NO | | 0 | | | info_text | text | NO | | NULL | | | url | varchar(255) | NO | | | | | status | tinyint(1) | NO | MUL | 0 | | +-----------+--------------+------+-----+------------+----------------+ 7 rows in set (0.01 sec)
本来、phpや他のプログラムの方でMySQLのクエリを実行するので、コマンドラインで挿入することはないです。ただ、値がちゃんと格納されるか等の確認をし、検索もできるかを確認したいと思います。
mysql> INSERT INTO information (info_date, title , type ,info_text , url ,status) VALUES ('2015-06-01','サイトオープンしました', '1', 'サイトオープンしました。今後ともよろしくお願い致します。','http://www63.atwiki.jp/nicepaper/pages/1.html', '1');
文法:INSERT INTO テーブル名(カラム名1,カラム名2,カラム名3...) VALUES (値1,値2,値3....);と書いていきます。値に関してはシングルクオーテーションを付けていきます。また、idの宣言および挿入値の宣言は必要ないです。
mysql> SELECT * FROM information;
コピペすると、形がかなり崩れるので、表示しません。ご了承ください。アスタリスク(*)はフィールドの全情報を取得するという意味です。
違う型を入れたデータを挿入してみる。typeの部分は数値型なのですが、文字列を入れてみます。typeの部分に「ニュース」というものを入れてみます。
mysql> INSERT INTO information (info_date, title , type ,info_text , url ,status) VALUES ('2015-06-01','サイトオープンしました', 'ニュース', 'サイトオープンしました。今後ともよろしくお願い致します。', 'http://www63.atwiki.jp/nicepaper/pages/1.html', '1'); Query OK, 1 row affected, 1 warning (0.00 sec)
確かに挿入はできるのですが、テーブルを見てみるとどうでしょうか。
mysql> SELECT * FROM information WHERE id = '2';
するとtypeの値がデフォルトの0になっていることが確認できると思います。 数字入れてどうするの?と思いがちな方もいらっしゃると思いますが、プログラムでデータベースの値を読み取って、値が1ならニュース、値が2ならIR情報などと表示させるようにプログラムさせればいいだけです。
設計でstatusの数値に関して公開は2、下書きは1、削除は0と設計しています。履歴を残す場合statusの部分を0にすれば、データベースには残り、フロントエンド側には表示されずにすることができます。なので以下の行為はあまり意味ないですが、やってみましょう。
mysql> DELETE FROM information WHERE id = '2';
無事削除ができました。
再び挿入してみるとidはどう変化するのでしょうか?確認してみます。
mysql> INSERT INTO information (info_date, title , type ,info_text , url ,status) VALUES ('2015-06-02','新しい商品入荷しました', '1', '新しい商品のnicepaperが入荷しました。', 'http://www63.atwiki.jp/nicepaper/pages/1.html', '1');
するとidが3になっていることがわかります。
続いては情報の変更です。
mysql> UPDATE information SET type = '2' , info_text = '商品はnicepaperを入荷し、10個限定販売です。' WHERE id = '3';
mysql> SELECT * FROM information;
すると情報が変更できていることを確認することができます。
どうでしょうか。このように、データベースの設計をし、あとはプログラム側でクエリを投げるプログラムを書けば、データベースに挿入や削除や値の変更ができます。ここで使ったMySQLの文法を確認すると
続いては、phpでMySQLへフォームを使って挿入を作っていきます。