久しぶりにmysqlを触ったので、メモとして残しておきます。
あくまで基本的なところですが。
mysqlの接続、終了、再起動
mysqlに接続
mysql -u root -p
-u
ユーザーの指定
root
rootユーザーを指定
-p
パスワードを指定してログイン
mysqlの終了
quit
mysqlの再起動
service mysqld restart
操作の前に
mysqlでのコマンドは基本的に末尾に;
を入れるのを忘れないようにしてください。
rubyとかに慣れてしまうとついつい忘れてしまうんですよね・・・
データベースの操作
データベースの作成
CREATE DATABASE データベース名;
例えば、「db_training」というデータベースを作成する場合
CREATE DATABASE db_training;
データベースの一覧表示
SHOW DATABASES;
一覧の表示をするのでSHOW DATABASE;
ではなくSHOW DATABASES
というように複数形になります。
使用するデータベースを指定
use データベース名;
使用中のデータベースの確認
SELECT DATABASE();
または
SHOW PRPCESSLIST;
データベースを削除
DROP DATABASE データベース名;
テーブルの操作
テーブルの作成
useで使用するデータベースを選択している場合
CREATE TABLE テーブル名 (
カラム名1 データ型 オプション,
カラム名2 データ型 オプション,
カラム名3 データ型 オプション
);
使用するデータベースを選択していない場合
CREATE TABLE データベース名.テーブル名 (
カラム名1 データ型 オプション,
カラム名2 データ型 オプション,
カラム名3 データ型 オプション
);
このデータベース名.テーブル名
の書き方は他のテーブルの操作にも使えるみたいです。
テーブルの一覧表示
useで使用するデータベースを選択している場合
show tables;
使用するデータベースを選択していない場合
show tables from データベース名;
カラムの一覧表示
show columns from テーブル名;
DESC テーブル名;
レコードの挿入(複数行を一気に)
INSERT INTO テーブル名 VALUES
(データ1-1, データ1-2, データ1-3),
(データ2-1, データ2-2, データ2-3),
(データ3-1, データ3-2, データ3-3);
これ以外にも入力するフィールドを指定する方法もあるみたいです。
【参考記事】
MySQL:INSERTで複数行追加する
レコードの確認
SELECT * FROM テーブル名;
レコードを更新
UPDATE テーブル名 SET カラム名 = 更新後の値 WHERE 検索条件;
例えば、training_table
のidが2
のデータのNAME(katou)
を更新する場合
UPDATE training_table SET NAME = "itou" WHERE ID = 2;
検索条件についてはIDでなくてもWHERE NAME = "katou"
でも可能です。
レコードの削除
DELETE FROM テーブル名 WHERE 検索条件;
例えば、training_table
のidが5
のデータを削除する場合
DELETE FROM training_table WHERE ID = 5;
[削除後のテーブル]
(ID4のNAMEが変わっているのは、もう1回UPDATEしただけなので気にしないでください)
レコードの件数
SELECT COUNT(*) FROM テーブル名;
この書き方だとNULLが含まれていても関係なくデータの件数を取得します。
他の指定の仕方はこちら↓
【参考記事】
COUNT関数 (指定したカラムの行数を取得する)
レコードの抽出
SELECT * FROM テーブル名 WHERE 検索条件;
例えば、training_table
のidが3
のデータを抽出する場合
SELECT * FROM training_table WHERE ID = 3;
training_table
のAGEが28以上
のデータを抽出する場合
SELECT * FROM training_table WHERE AGE >= 28;
テーブルの削除
DROP TABLE テーブル名;
カラムの並べ替え
特定のカラムの後ろに移動させる時
ALTER table テーブル名 modify 移動させるカラム名 そのカラムのデータ型 after 移動後に前にあるカラム名
このようなテーブルがあった時に、idをcommentの次に移動させるとします。
ALTER table training.chat modify id int(11) after comment;
auto_increment
などのオプションがある場合はそちらも記入しないと移動後に消されてしまいます。
その場合は、移動させるカラムのデータ型
とafter
の間に記入してください。
先頭に移動させる時
ALTER table テーブル名 modify 移動させるカラム名 そのカラムのデータ型 FIRST;