MySQLチートシート
実行環境
- macOS(bash)
- MAMP
- VS Codeでターミナル操作
MYSQLへのアクセスの仕方
MAMPを使っている場合は、きちんとMAMPでローカルサーバやデータベースを動かしている状態で、作業ディレクトリへ移動
$ cd /Applications/MAMP/Library/bin/
mysqlコマンドでログインする
$ ./mysql -u root -proot
MAMPのMySQLはデフォのパスワードがrootなので上記でログインできる。
パスワードまで一気に入れないコマンドは以下。入力するとパスワードを聞いてくれる。
$ ./mysql -u root -p
mysql>
が表示されたら、ログイン成功。
QUIT
と入力して抜ける
今あるデータベースを見てみる
ログインしていて、mysql>
が表示された状態でSHOW DATABASE
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| info_schema |
| pre_schema |
| wordpress |
+--------------------+
3 rows in set (0.00 sec)
次に使いたいデータベースをUSE
コマンドで選択して中身を見ることができる。
mysql>USE データベース名
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
新しいデータベースを作成する
MySQLにログインした状態で、CREATE文でデータベースを作成
mysql>CREATE DATABASE データベース名;
使うデータベースを選択
mysql>USE データベース名;
新しいユーザの追加
MySQLにログインした状態で、以下のGRANTコマンド入力
mysql>GRANT ALL ON データベース名.* TO user@localhost IDENTIFIED BY 'pass';
GRANT文で、CREATE USER 'ユーザ名'@'接続元ホスト名' IDENTIFIED BY 'パスワード';
を入れてユーザを作る。
-
ALL
はユーザーに権限を付与する、 -
ON データベース名
でどのデータベースに権限付与をするかを示す -
TO user@localhost
で、localhostという接続ホストでuserさんに権限を付与 -
IDENTIFIED BY 'pass'
でパスワードをpassに設定
上記コマンドだけでは権限が反映されないので、反映させるコマンド
mysql>FLUSH PRIVILEGES;
使用するデータベースを選択してログインする方法
./mysql -D データベース名 -u ユーザ名 -pパスワード
ユーザ一覧取得
mysql>SELECT User, Host FROM mysql.user;
ユーザ削除
mysql>DROP USER ユーザ@接続元ホスト;
MySQLにテーブルを作成する
MySQLにログインした状態で、以下のGRANTコマンド入力
mysql>CREATE TABLE テーブル名(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL,
body TEXT NOT NULL,
category_id INT DEFAULT NULL,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL
) DEFAULT CHARACTER SET=utf8mb4;
CREATE TABLE + テーブル名を入力して、
()の中に,カラム名 カラムの型 オプション
の形で書いていく。
例えば1行目id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
だと
-
id
はカラム名 -
INT
はデータ型が整数型という意味 -
PRIMARY KEY
は主キーを示すオプション。これが一番上ってこと。 -
NOT NULL
でこのカラムが空はダメということ。 -
AUTO_INCREMENT
は、レコードを挿入するときに、自動的に番号を付与してくれる
閉じカッコのあとのDEFAULT CHARACTER SET
は、このテーブルで使う標準の文字セットの設定。utf8mb4は、スマホから入力する絵文字などにも対応した文字セット。
titleカラムのVARCHAR(255)
は文字数が255文字まで、という指定
bodyカラムのTEXT
は長くなりそうな文章に使う。
created_atはレコードの作成日、updated_atはレコードの編集日で、DATETIME
という日付指定型のデータ型を割り当てる。
できたら、きちんとできているかデータ構造を表示させる
mysql>DESC テーブル名;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | varchar(255) | NO | | NULL | |
| body | text | NO | | NULL | |
| category_id | int(11) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
レコード挿入
USE データベース名
などで使用データベースを指定した状態で、以下のINSERTコマンドで挿入できる。
INSERT INTO テーブル名 VALUES(null, "名前", "パスワードの文字列");
一番最初はidだったとしたら、idはNOT NULLにして置くものなので、ここではあえてnullにすると、自動で割り振られる。
このように、使うテーブル名を指定し、挿入したい値をカンマ区切りで入れていくだけ。
Author And Source
この問題について(MySQLチートシート), 我々は、より多くの情報をここで見つけました https://qiita.com/usayamadausako/items/c7418e128ee49bc892e2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .