はじめに
MySQLの学習中で起動からテーブル作成やカラムの追加などのメモ
起動・ログイン
- MySQLの起動
mysql.server start
- MySQLの停止
mysql.server stop
- ログイン
# rootユーザーでログイン
mysql -u root
# 作成したユーザーuser_nameでログインします -pでパスワードを要求する
# オプションの説明
# -u で接続するユーザー名を指定する
# -p でパスワード入力を促す
mysql -u user_name -p
- ログアウト
exit
- ログイン中のユーザーを表示
SELECT user();
ユーザーの作成・削除・権限付与
- ユーザーの作成
# 名前とホストの指定 下記の場合はuser_nameというユーザーとホスト先をlocalhostとしている
CREATE USER 'user_name'@'localhost';
# パスワード設定・変更
ALTER USER 'user_name'@'localhost' IDENTIFIED BY 'user_password';
# ユーザ作成&パスワード設定
CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'your_password';
# ユーザー名、host名、パスワードを設定する際はシングルクォート''を忘れないように!
- ユーザーの確認
SELECT host, user FROM mysql.user;
- ユーザーの削除
# user_nameという名前のユーザーを削除 host先の指定も忘れずに!
DROP USER 'user_name'@'localhost';
- ユーザーの権限確認
SHOW GRANTS FOR 'user_name'@'localhost';
- ユーザーの権限の付与
# 権限:(SELECT,INSERT,UPDATE,ALL,PRIVILEGESなど)
# データベース.テーブル:(testdb.*やtestdb.testtableなど)
# *.*とすることで全てのデータベースとテーブルに権限を与えることができる
GRANT 権限 ON データベース.テーブル TO 'user_name'@'localhost';
# 権限をデータベースとテーブルに対してuser_nameにフルアクセス権を付与した場合
GRANT ALL PRIVILEGES ON *.* 'user_name'@'localhost';
- 権限のリロード
FLUSH PRIVILEGES;
データベースの作成・削除
- データベースの作成
# test_dbというデータベースの作成
CREATE DATABASE test_db;
- 作成したデータベース一覧を表示
SHOW DATABASES;
- 作成したデータベースを削除
DROP DATABASE test_db;
- データベースの指定
# test_dbというデータベースを指定
USE test_db;
- 接続しているデータベースの確認
SELECT DATABASE();
# 接続していない場合はNULLが返ってくる
テーブルの作成・削除
- テーブル一覧を表示
SHOW tables;
- テーブルとカラムの作成
# "INT"型のカラム"id"と"VARCHAR(255)"型のカラム"name"と"TEXT"型のカラムintroductionのある"test_samples"テーブルを作成
# INT型:数字が保持できる VARCHR(M):最大M文字の文字列が保持できる
CREATE TABLE test_samples (id INT, name VARCHAR(255), introduction TEXT);
# ちなみにテーブルのみ作成はできなく、少なくとも1つのカラムを指定し
# そのカラムのデータ型を定義する必要がある
- テーブルの削除
# test_samplesを削除
DROP TABLE test_samples;
# 複数のテーブルを一度に削除する場合はカンマで区切る
DROP TABLE table1, table2, table3;
- テーブルの構造を確認
# test_samplesテーブルを使用している
# カラム一覧を表示
DESC test_samples;
# FROM句で対象となるテーブルを指定する際に使用する
SHOW columns FROM test_samples;
カラムの追加・変更
- カラムの追加
# ALTER文はデータベースやテーブルを編集できるSQL文(カラムの追加や削除ができる)
# created_atカラムを追加
ALTER TABLE test_samples ADD (created_ad DATETIME);
- カラムの変更
# introductionカラムをdetailカラムに変更
ALTER TABLE test_samples CHANGE introduction detail TEXT;
- カラムのデータ型の変更
# detailカラムのデータ型をTEXTからvarcarに変更
ALTER TABLE test_samples MODIFY detail VARCAR(255);
- MODIFYとCHANGEの違い
操作 | MODIFY | CHANGE |
---|---|---|
カラム名の変更 | ❌できない | ✔️できる |
データ型や制約の変更 | ✔️できる | ✔️できる |
使用方法 | MODIFY カラム名 データ型 | CHANGE 現在のカラム名 新しいカラム名 データ型 |
- カラムの削除
# deteilカラムを削除
ALTER TABLE test_samples DROP deteil;
データの挿入・削除
- データの挿入
INSERT INTO test_samples (name, introduction)
VALUES ('佐藤', '面白い'), ('山田', 'イケメン'),('白石', 'かわいい');
- データの削除
# 佐藤のレコードを削除
DELETE FROM test_samples WHERE name = '佐藤';
インポート・エクスポート
- インポート
# インポートしたい.sqlファイルが保存されているディレクトリに移動
cd /path/sample/test/
# mysqlにログインしている場合は下記のコマンドは使えないため注意
# mysqlコマンドを使用してsqlファイルの内容をデータベースに反映
mysql -u root -p test_db < test.sql
# mysqlにログインしている際にインポートする方法
# パスを指定してSOURCEコマンドでsqlファイルをインポート
SOURCE /path/sample/test/test.sql;
- エクスポート
# ターミナルで作成したテーブルをtest_dbのデータベースにtest.sqlファイルにエクスポート
# mysqlにログインしている場合はmysqldumpコマンドは使えないため注意!
# mysqldumpコマンド
mysqldump -u root -p test_db > test.sql
# mysqldumpを使うメリット
# ・バックアップ、移行、複製に使える
まとめ
以上、MySQLを操作する際の一連の流れでした!
その他、追加することなどあれば随時更新していきたいと思います。