MySQL コマンド一覧

こんにちは。たきもとです。

ここでは私がMySQLでよく使うコマンドや基礎的な概念をまとめて紹介します。
本記事のコマンド一覧は随時更新します。

動作環境

動作環境は次の通り。
(その内バージョンも追記します)

MySQL v.14.14

基礎的な概念と用語

MySQL 基礎

DB概念

データベースの概念はexcelの見た目と対応させて考えると分かりやすいです。

データベース: ブック(ファイル)名
テーブル: sheet名
フィールド: 列(縦方向)名
レコード: 行(横方向)名

基本的には ; が必要

基本的にはコマンドの最後に ; が必要です。

使用例

select * from tstTable;

linuxコマンド

MySQLは基本的にターミナル上で扱います。
私はwindowsユーザなので,PuTTYというエミュレータを使用しています。

ここでは,文字入力時に役立つlinuxコマンドやショートカットを少しだけ紹介します。

Ctrl + C | 現在の操作からの脱出

コマンドをコピペする際、
“早く次のコマンド打ってよ”
と言わんばかりにターミナルが待機状態になることがある。

初めから入力をやり直したくなるので、このコマンドで脱出。

mysql – -version | mysqlのバージョンを確認したい時に。


MySQL -よく使うコマンド一覧-

mysql -u root

root権限でmysqlを起動。
起動時は ; 不要。


mysql: mysql を
-u: ○○というユーザとして
root: 管理者権限で

という理解。


ちなみに。
次項で説明するような パスワードの設定 をした場合は、パスワードを入力するための起動コマンドがある。
これ。

mysql -u root -p


set password for root@localhost=password(‘○○○○’);

mysqlを扱うためのパスワードを設定するコマンド。


○○○○ は好きな文字列。
パスワード。

create database ○○;

データベースを作成するコマンド。
データベースの作成は基本的にrootユーザでなければできない。

使用例

create database tstDB;

tstDB というデータベースを作成してね、というコマンド。

show databases;

データベース一覧を見るためのコマンド。
databases 複数形になっているのがポイント。

drop database ○○;

データベースを削除するコマンド。

使用例

drop database tstDB;

tstDB を削除。

use ○○;

使いたいデータベースの切り替え。

使用例

use tstDB;

現在扱っているデータベースから tstDB へ切り替え。

grant all on ○○.* to □□@localhst identified by ‘○○(パスワード)’;

解釈は次の通り。

grant all on~: ~に許可を与えます
○○.* : ○○(DB名)以下の全てのテーブルに
to □□@localhst: □□というユーザに
identified by ‘○○(パスワード)’: パスワードは○○で


なぜ作業ユーザを設定する必要があるのか

いつも root でデータベースにアクセスするのはNGです。
理由は次の通り。

-データベースに対して何でもできちゃう
-データを自由に編集・追加・削除 できちゃう


複数人で1つのデータベースを扱う場合、これって怖いですよね。
だから、
-○○さんにはここまでの権限(いわゆるパーミッション)を与えてデータベースへのアクセスを許可しよう。
みたいに作業ユーザを追加してデータベースを編集するのがベターです。

私は今のところ一人でDBを扱っていますが、将来的にはきっと頻繁に使うコマンドになります。

使用例

grant all on tstDB.* to newUser@localhst identified by ‘iAmNewUser’;

これでユーザを作成できたので、ここで許可されたtstDBにアクセスしてみます。
exit; で一旦mysqlから抜けて初期状態へ。
その後に次のコマンドとパスワードを入力すればnewUserとしてtstDBを編集できる。。

mysql -u newUser -p tstDB;
iAmNewUser

create table users

テーブル作成時に。

使用例

create table users (
id int,
name varchar(255),
email varchar(255)
);

データ型について

-数値

  • int: 整数値
  • double: 不動小数点

-文字列

  • char: 固定長文字列
  • varchar: 可変長文字列
  • text: 文字列長がどれだけ長くなるかわからない時に

-日付

  • date: 日付
  • datetime: 日時

-その他

  • enum: 列挙型。予め選択肢が決まっているときに。


オプション

-入力必須

  • not null: 入力必須
  • default ○○: デフォルト値設定
  • auto_increment: 自動連番
  • 索引(インデックス)

-索引(インデックス): よく検索するデータにつけて、検索速度を上げたい時に。

  • primary key: 主キー。テーブル内レコードを一意に決めたい時に。1つしか使用できない
  • key: キー。いくつでも付けられる
  • unique: ユニークキー。重複したデータが入力された場合に警告して欲しいときに


show tables;

作成したテーブルを確認したい時に。

drop table ○○;

テーブルを削除したい時に。

使用例

drop table dbtable;

dbtable というテーブルを削除。

desc ○○;

テーブル内のフィールドを詳しく見たい時に。
○○はテーブル名。

使用例

desc dbtable;

insert into テーブル名 (フィールド名) values (データ);

insert into テーブル名: テーブル名 に挿入


使用例

insert into tstTable (no, name, memo) values (3, takimoto, he is author);


複数行のデータを作成したい場合は次の通り。

insert into tstTable (no, name, memo) values
(3, takamoto, he has two “a”),
(5, takimoto, he has one “i”),
(12, takumoto, he has one “u”),
(9, takemoto, he has one “e”),
(9, takomoto, he has three “o”);


select * from テーブル名;

データの抽出に。
データ挿入後、テーブルの中身を確認するときに。

select ~ : ~を抽出しなさい
* : ワイルドカードと同じ意味
from xx: xxから

使用例

select * from tstTable; //テーブル全てを表示

selsect name, memo from tstTable; //特定のフィールドを抽出

select * from tstTable \G; //フィールド数が多い時に良い感じに表示してくれる

select * from tstTable where no != 3;//条件付きで抽出したい場合には where と不等号を使う

select * from tstTable where name != ‘takumoto’;

////
あいまい検索
select * from tstTable where name like ‘%moto’;
%: なんでも良い1文字、または文字列。

//任意の文字数を指定できる _(アンダーバー)
select * from tstTable where name like ‘tak_moto’;

//between で範囲を指定
select * from tstTable where no between 3 and 6;

//in: 予め設定した値のどれかに当てはまるものを抽出
select * from tstTable where no in (‘5′,’10’);

//and, or: 複数条件を使いたい時に。
select * from tstTable where no >= 9 and name = ‘tak_moto’;

/**
* 並べ替え, 件数の指定
*/
//order by: 指定したフィルドで昇順にソート
select * from tstTable order by score;

//order by ○○ desc: 指定したフィルドで降順にソート
select * from tstTable order by score desc;

//limit ○: 指定した件数を表示
select * from tstTable limit 3;

//オフセット指定: 開始位置の指定. 開始位置は 0 から始まる
select * from tstTable limit 3, 2;
開始位置:3
表示数:2

//件数の取得
テーブル内のデータ件数
select count(*) from users;

//特定のフィールドの値を抽出したい時に
select distinct mail from tstTable;

//最大値を取得する
select max(no) from tstTable;

-max
-min
-average-
-sum
等も使える。

//grou by: 一つのフィールド内データをレコード毎に比較したい時に
select name,avg(no) from tstTable group by no;

select name,avg(no): name, ave(no) を並べて表示
from tstTable: tstTableから
group by no: no のレコード毎に

//乱数の表示
select rand();


select による文字列操作

//文字数を表示
select email,length(email) from tstTable;

//concat: 文字列連結
select concat(name, ‘(‘,email,’)’) from tstTable;

//as : ラベルの変更
select concat(name, ‘(‘,email,’)’) as ○○ from tstTable;

c.f.)
select concat(name, ‘(‘,email,’)’) as newLabel from tstTable;

//substring: 文字数を指定して取り出す
select email,substring(name,1,2) from tstTable;

substrinn(name,1,2): nameフィールドにある各レコードの、1文字目から2文字分抽出

//日付・時間操作
select now();//現在の日時を抽出

c.f.)作成された月のみを抽出
select name,month(created from tstTable;

c.f.)日付の差分を表示
select name, datediff(now(), created) from tstTable;

(リファレンス)https://dev.mysql.com/doc/refman/5.6/ja/functions.html

データ更新・削除・修正

update テーブル名 set フィールド = ” where レコード = 値;

c.f.)id=3 のemailを更新
update tstTable set email = ‘hogehoge@gmail.com’ where id = 3;


//削除
delete from tstTable where score <= 3.0;

c.f.)
delete from users where score <= 3.0;

テーブル構造を変更したい時

alter table テーブル名 add フィールド名 型 after ○○の次に挿入;

c.f.)tstTable 内の emailの次に newFieldName を追加する
alter table tstTable add newFieldName varchar(255) after email;


varcharを変えたい時は次の通り。
alter table users change newFieldName newFieldName varchar(20);

//フィールドを削除したい時
alter table テーブル名 drop フィールド名;

c.f.)alter table tstTable drop newFieldName;

//index を追加したい場合
作ったWEBサービスが email で沢山検索される
→だからemailにindexを付けたくなった
→だからこうする 的な流れの時に。

alter table tstTable add index インデックス名 (対象field名);

c.f.)alter table users add index email (email);

indexが要らなくなった場合
alter table users drop index email;


//table名を変更したくなったら
alter table users rename blog_users;


複数のテーブルを扱う場合

複数のテーブルからデータを引っ張ってきたいときは

テーブル名.フィールド名

とする。
where, limit, order 等と組み合わせ可。

c.f.)
select tstTable1.name,tstTable2.email from tstTable1,tstTable2;


外部ファイルコマンドの実行

vimか何かで tstCommand.sql を作成したとする。

mysql -u tstuser -p tstdb < tstCommand.sql

バックアップ・復元

外部ファイルからコマンドを実行したときとは逆の記号( > )を使う。

c.f.)
mysqldump -u tstuser -p tstdb > tstdb.dump.sql


**注意
初めてmysqlやらvagrantやらcentOSを使うと一回ハマります。
そう、こんなエラーでね。

mysqldump: unknown variable ‘symbolic-links=0’


/etc/my.cnf 内の次の箇所をコメントアウトすることで解決。

symbolic-links=0

#symbolic-links=0

**
less tstdb.dump.sql で確認可能。



復元時は外部ファイルを読み込む記述と一緒。( < を使う)

スポンサーリンク
336 x 280 – レクタングル(大)
336 x 280 – レクタングル(大)
  • このエントリーをはてなブックマークに追加

この記事が気に入ったら
いいね!しよう

スポンサーリンク
336 x 280 – レクタングル(大)
トップへ戻る