なんで書いたの?
自分の勉強のために書きました。
MySQLコマンド使うたびに調べてる状態なので、記事にしとこと思って書きました。
環境
- ローカルにmysqlを入れてやってます
- MySQL8.0
- MySQLWorkbench <- これはなくてもok
バージョンが何か調べてみる。
mysqlコマンドを入力して確認してみます。コマンドが使えない人は,mysqlをインストールしましょう。
$ mysql -V
mysql Ver 8.0.19 for osx10.15 on x86_64 (Homebrew)
対象読者
- MySQLコマンドわからないって人
データベースを作成する
ログインする
ログインしようとするとパスワードが求められるので入力します。今回はrootでやっていきます。
$ mysql -u root -p
password:
~省略~
mysql >
データベースを追加する
データベースを追加する前に一度作ってあるデータベースを確認します。もしすでに同じ名前のデータベースが登録されていたら、already exists(もう作ってあるよ!!作れない!!)
といわれてしまいます。
mysql > SHOW databases;
+-------------+
| Databases |
+-------------+
| hogehoge_db |
| foobar_db |
+-------------+
こんな感じでデータベースの存在を確認出来ます。
確認出来たのでデータベースを追加します。
ポケモンのデータベースを作ります。
mysql > CREATE database pokemon_db;
きちんと作成されたか確認します。
mysql > SHOW databases;
使うデータベースを指定します。
mysql > USE pokemon_db;
これで今後、テーブルを作ったり,データを投入していくと選択したデータベース対して処理が行われます。
テーブルを作る
今回はこんなテーブルを作ります。
カラム名 | 型 |
---|---|
ID | 整数 |
ニックネーム | 文字列 |
タイプ | 文字列 |
レベル | 整数 |
パートナー | 文字列 |
テーブルを作っていきます。作るためのコマンドの書き方
mysql > CREATE TABLE テーブル名(カラム名 データ型, カラム名 データ型)
てことで、ポケモンテーブルを作ります。
mysql > CREATE TABLE pokemon(id int, nickname varchar(10), type varchar(10), level int, partner varchar(10))
作成できたら確認します
mysql > show tables;
MySQLWorkbenchで確認してみます。
まだデータを投入していないので表は空になっています。
テストデータを生成する
これからテストデータを入れていきます。
とりあえず、好きなポケモンを10匹を投入します。
テーブルにデータを投入する際はINSERT文
を使用して投入していきます。
書き方
INSERT INTO テーブル名 VALUES (id, ニックネーム, タイプ, レベル, パートナー)
いったん一つデータを入れます。やっぱりピカチュウを入れたいです。好きなので。
mysql > INSERT INTO pokemon VALUES (1, 'ピカチュウ', 'でんき' , 39, 'サトシ');
mysql > INSERT INTO pokemon VALUES
(2, 'ゼニガメ', 'みず' , 5, 'サトシ')
,(3, 'ヒトカゲ', 'ほのお', 5, 'サトシ')
,(4, 'フシギダネ', 'くさ', 5, 'サトシ')
このままだとサトシのポケモンばかりになってしまうので、カスミやタケシのポケモンも追加します。
mysql > INSERT INTO pokemon VALUES
(5, 'イワーク', 'いわ' , 14, 'タケシ')
,(6, 'イシツブテ', 'いわ', 8, 'タケシ')
,(7, 'スターミー', 'みず', 6, 'カスミ')
,(8, 'コダック', 'みず', 10, 'カスミ')
,(9, 'コラッタ', 'ノーマル', 3, 'やせい')
,(10, 'キャタピー', 'くさ', 2, 'やせい')
これで10体登録出来ました。
誰か効率の良いデータ投入の仕方がわかるかた教えていただけると助かります。
抽出する
欲しいデータを取れるようになるのを目指します。
基本的な書き方
SELECT カラム名 FROM テーブル WHERE 条件文;
ちなみに*
で全てを指定出来ます。
- 全部のポケモンの名前が欲しい
mysql > SELECT nickname FROM pokemon;
+-----------------+
| nickname |
+-----------------+
| ピカチュウ |
| ゼニガメ |
| ヒトカゲ |
| フシギダネ |
| イワーク |
| イシツブテ |
| スターミー |
| コダック |
| コラッタ |
| キャタピー |
+-----------------+
- タイプがみずタイプのみのポケモンが欲しい
WHERE句で条件を指定出来ます。今回はタイプがみずタイプのポケモンが欲しいので以下のようにtype="みず"
で条件を指定しています。
mysql > SELECT * FROM pokemon WHERE type="みず";
+------+-----------------+--------+-------+-----------+
| id | nickname | type | level | partner |
+------+-----------------+--------+-------+-----------+
| 2 | ゼニガメ | みず | 5 | サトシ |
| 7 | スターミー | みず | 6 | カスミ |
| 8 | コダック | みず | 10 | カスミ |
+------+-----------------+--------+-------+-----------+
- パートナーがサトシのポケモンが欲しい
これも先ほどと同じパターンでとってこれます。
mysql > SELECT * FROM pokemon WHERE partner="サトシ";
+------+-----------------+-----------+-------+-----------+
| id | nickname | type | level | partner |
+------+-----------------+-----------+-------+-----------+
| 1 | ピカチュウ | でんき | 39 | サトシ |
| 2 | ゼニガメ | みず | 5 | サトシ |
| 3 | ヒトカゲ | ほのお | 5 | サトシ |
| 4 | フシギダネ | くさ | 5 | サトシ |
+------+-----------------+-----------+-------+-----------+
- レベルが10以上のポケモンが欲しい
mysql > SELECT * FROM pokemon WHERE level>=10;
+------+-----------------+-----------+-------+-----------+
| id | nickname | type | level | partner |
+------+-----------------+-----------+-------+-----------+
| 1 | ピカチュウ | でんき | 39 | サトシ |
| 5 | イワーク | いわ | 14 | タケシ |
| 8 | コダック | みず | 10 | カスミ |
+------+-----------------+-----------+-------+-----------+
- レベルがくさタイプでパートナ-がサトシのポケモン
〜なおかつ〜の場合はand
を使用します
mysql > SELECT * FROM pokemon WHERE type="くさ" and partner="サトシ";
+------+-----------------+--------+-------+-----------+
| id | nickname | type | level | partner |
+------+-----------------+--------+-------+-----------+
| 4 | フシギダネ | くさ | 5 | サトシ |
+------+-----------------+--------+-------+-----------+
- レベルが5以上のみずタイプのポケモンでパートナーがカスミかサトシのポケモン
mysql > SELECT * FROM pokemon WHERE level>=5 and partner="カスミ" or partner = "サトシ";
+------+-----------------+-----------+-------+-----------+
| id | nickname | type | level | partner |
+------+-----------------+-----------+-------+-----------+
| 1 | ピカチュウ | でんき | 39 | サトシ |
| 2 | ゼニガメ | みず | 5 | サトシ |
| 3 | ヒトカゲ | ほのお | 5 | サトシ |
| 4 | フシギダネ | くさ | 5 | サトシ |
| 7 | スターミー | みず | 6 | カスミ |
| 8 | コダック | みず | 10 | カスミ |
+------+-----------------+-----------+-------+-----------+
データを削除する
データの基本的な抽出の方法はわかったので、次はデータの削除をします。
基本的な書き方
DELETE FROM テーブル名
- くさタイプのポケモンを消す
mysql > DELETE FROM pokemon WHERE type="くさ";
くさタイプのポケモンがいなくなりました。
- ピカチュウと野生のポケモンを消す
and
ではないです。andだとニックネームがピカチュウかつパートナーがやせい
のデータを削除してしまうので...
mysql > DELETE FROM pokemon WHERE nickname="ピカチュウ" or partner="やせい";
- テーブルを消す
テーブルごと消す。
mysql > DELETE FROM pokemon;
これでテーブルごと消えたかと思いましたが、消えていませんでした。
mysql > SHOW tables;
+----------------------+
| Tables_in_pokemon_db |
+----------------------+
| pokemon |
+----------------------+
テーブルごと消すためには、DROP
を使うみたいです。
mysql > DROP TABLE pokemon;
確認します。
mysql> show tables;
Empty set
データベースの削除
最後にデータベースを削除して終わります。こちらもDROP
を使います。
mysql > DROP DATABASE pokemon_db;
確認すると消えているのがわかります。
mysql > SHOW databases;
最後まで読んでいただきありがとうございます。