2013年1月31日木曜日

MySQL基本コマンド

SQLコマンドは、しばらく使わないとすぐに忘れてしまう。備忘録の引越し作業も兼ねて、ここに基本コマンドを残しておこう。

MySQLへの接続
mysql -u[user name] -p
データベースへの接続
mysql -u[user name] -p [database name]

データベースへのアクセス
use [database name];

データベースの作成
create database [database name] character set utf8;

データベースの確認
show databases;


ユーザ管理

ユーザの追加 select,insert,update,delete,file 実行権限を持つユーザ
grant select,insert,update,delete,file on *.* to username identified by 'password';

ユーザの削除
DELETE FROM mysql.user WHERE user='ユーザ名';

ユーザの確認
SELECT host,user FROM mysql.user;

ユーザ権限の確認
SHOW GRANTS FOR [ユーザ名];

ユーザ権限のリフレッシュ データベースの権限テーブルから権限を再読み込みする
FLUSH PRIVILEGES;


テーブル

テーブルの作成
create table [table name] ([フィールド名] char(サイズ), [フィールド名] int, ...);

テーブルの確認
show tables;

テーブルの削除
drop table [テーブル名];


フィールド

フィールドの確認
show fields from [table name];

フィールド名の変更
alter table [tablename] change [旧フィールド名] [新フィールド名] [型];

フィールドの型(属性)変更
alter table [テーブル名] modify [フィールド名] [型];

フィールドの追加
alter table [テーブル名] add [フィールド名] [型];


レコード

レコードの追加(insert)
insert into [テーブル名] values ([フィールド1の値], [フィールド2の値], ...);

レコードの表示(select)
select * from [テーブル名];

フィールドを限定してレコードを表示(select)
select [フィールド名] from [テーブル名];

条件指定(where)
select * from [テーブル名] where [条件式];

レコードの修正(update)
update [テーブル名] set [フィールド名]=[修正値] where [条件式];

全レコードの修正(update)
update [テーブル名] set [フィールド名]=[修正値];

フィールドの値で更新(update)
update [テーブル名] set [フィールド名]=[フィールド名];

レコードの削除(delete)
delete from [テーブル名] where [条件式];

全レコード削除(delete)
delete from [テーブル名];


インポート

データのインポート
load data infile "テキストファイル" into table [テーブル名];


ソート

並び替え(昇順)
select * from [テーブル名] order by [フィールド名];

並び替え(降順)
select * from [テーブル名] order by [フィールド名] desc;


連番とindex

インデックスの作成
alter table [テーブル名] add index [インデックス名]([連番フィールド]);

連番フィールドの作成
alter table [テーブル名] modify [連番フィールド] int auto_increment;
※レコードの追加では値をあたえる(とりあえず 0をあたえると連番が自動で入る)

  インデックスの連番でidフィールドを追加する場合
alter table testtable add id int;
alter table testtable add index index1(id);
alter table testtable modify id int auto_increment;