読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

MySQLの基本操作

MySQL
MySQLの基本的な操作。シェルスクリプトでヒアドキュメントを使用すればこの通りに書いてOKです。 ここでは ユーザ名:root パスワード:foo とします。 ◆ログイン $ mysql --user=root --password=foo or $ mysql -u root -p Enter password:foo ◆パスワードの変更 新しいパスワードを「bar」とします。ログインした状態で mysql> set password for root@localhost = password('bar'); ◆データベースの確認 サーバ内のデータベースを確認します。私の場合、mysqlphpmyadminredmineなどがすでに入っていますね。 mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| phpmyadmin         |
| redmine_default    |
+--------------------+
5 rows in set (0.00 sec)
◆データベースの作成 foodataというデータベースを作成します。 mysql> create database foodata; ◆データベースの削除 mysql> drop database foodata; ◆データベースの選択 次以降のテーブル操作では、まずデータベースを選択しなければ始まりません。 mysql> use foodata; ◆テーブルを作成 データベースを選択後、データベース内にテーブル(表)を作成します。 mysql> create table foo(項目 データ形式 その他); の形式で記述します。 今回は住所録用にaddressというテーブルを作ります。
mysql> create table address(
mysql-> id    int auto_increment primary key,
mysql-> name   text,
mysql-> code   text,
mysql-> tel    text);
何度かエンターで改行していますが、MySQLは最後に「;(セミコロン)」がこない限り一つの文とみなされます。実際ヒストリー(↑キーで過去の入力)では一文になってます。 書く内容は主に Field フィールド名 Type データ型 Null Nullを許可するかどうか Key 主キー Default 初期値 Extra オートインクリメントなど となります。主キー(Primary Key)はレコードを確実に区別できる(一意である)フィールドに設定するため、重複したデータは入力できません。 ◆テーブルの構造の確認(フィールド) addressテーブルの構造を確認します。 mysql> describe address; or mysql> desc address; or mysql> show fields from address; or mysql> show columns from address;
+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| id    | int(11) | NO   | PRI | NULL    | auto_increment |
| name  | text    | YES  |     | NULL    |                |
| code  | text    | YES  |     | NULL    |                |
| tel   | text    | YES  |     | NULL    |                |
+-------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
◆テーブルにデータを入力する mysql> insert into address (name,code,tel ) values ('名前', '学籍番号', '電話番号'); 例として名前が「abc」、学籍番号が「012345」、電話番号が「012-345-6789」というデータを入力します。 mysql> insert into address (name,code,tel) values ('abc', '0123', '6789'); ◆テーブルの中身を表示 ①全項目の表示 mysql> select * from address;
+----+------+------+------+
| id | name | code | tel  |
+----+------+------+------+
|  1 | abe  | 0123 | 6789 |
+----+------+------+------+
1 row in set (0.00 sec)
②一項目だけ。今回はnameを見るとします。 mysql> select name from address;
+------+
| name |
+------+
| abe  |
+------+
1 row in set (0.00 sec)
複数項目。nameとcodeとします。 mysql> select name,code from address;
+------+------+
| name | code |
+------+------+
| abe  | 0123 |
+------+------+
1 row in set (0.00 sec)
④行を指定して表示させる(例:addressのidが1の行のname項目を表示させる) mysql> select name from address where id=1;
+------+
| name |
+------+
| abe  |
+------+
1 row in set (0.00 sec)
◆テーブルの中身を更新する。 update テーブル set フィールド="新しい値" where 指定する行 例えばid=1のnameフィールドの値を変更したければ mysql> update address set name="hoge" where id=1; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 と入力します。更新されたか確認すると mysql> select name,code from address;
+------+------+
| name | code |
+------+------+
| hoge | 0123 |
+------+------+
1 row in set (0.00 sec)
確かに更新されてます。もしwhereがないと、そのフィールドの値全てが新しい値に一律に変更されます。リセットするときなどに有用です。 ◆テーブルの中身を消去する ①すべての行を消去する mysql> delete from address; ②テーブルの指定した行を消去する場合(例:idが3の行を消去する) mysql> delete from address where id=3; とりあえずこれで一通りのことは出来ると思います。 以上です。 ソース: MySQL ~コマンドライン編~ MySQL初心者入門講座