ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

よく使う MySQL 文のまとめ

自分用のまとめ。

ちなみに MySQL をいじるには、Mycli が超便利です。
MySQL のオートコンプリート(コード補完)してくれます。
しかも、忘れがちな文末のセミコロンを書き忘れても問題なし!
これ無しじゃSQL操作はやってけない!

1.データベース作る

create database db_name;

2.テーブル作る

create table db_name.table_name (column_name カラム定義, column_name カラム定義);
カラム名 (column_name) は1つ以上指定する必要がある

もしくは……
use db_name;
で一度データベースにインしてから
create table table_name (column_name カラム定義, column_name カラム定義);
カラム名 (column_name) は1つ以上指定する必要がある

データベースにインする方法のがオススメ。
このあとのも、 use db_name; でインしたことを前提のコマンドを書いていきます。

3.テーブル一覧見る

show tables;
より詳細は、
show table status;

4.テーブル削除

drop table table_name;

5.カラム(データ種)の追加

alter table table_name add column_name カラム定義;
なお、column は日本語で「列」の意味。

6.カラムの変更

【名前変更】
alter table table_name change 現在のカラム名 新しいカラム名 カラム定義;
※ カラム定義のところは省いてOK

【削除】
alter table table_name drop column_name;

【カラムの定義だけ変更】
alter table table_name modify column_name カラム定義;

7.で、そのカラム定義ってどんなのあるの?

基本の形は「データの型 + オプション」

例えば ID カラムを持ったテーブル USERS を生成するのは、以下のようなコマンド。
create table users (id int unsigned primary key not null auto_increment);

これは int unsigned 型( 0 〜 4294967295 。unsigned int でなく int unsigned と書く点に注意 )で、
primary key(各データを識別するための鍵となるキーを保管するカラム、たいてい ID カラムがそれにあたる)、
not null(NULL値を格納することは出来ない)、
auto_increment(データを入れるときに、以前のIDを+1した値が入る)、
の3つのオプションを設定していることを意味します。

この USERS テーブルに admin もしくは editor という文字列を持つ、 role カラムを足すには以下のようにコマンド。
alter table users add role enum("admin", "editor") not null default "editor";
enum 型で、
not null
default "editor"(何も値が指定されなかったときは、editor という文字列が入る)、
の2つのオプションが指定されたことになります。
文字列の場合、"ダブルクォーテーション" や 'シングルクォーテーション' で文字を囲む必要があります。

他には USERS テーブルにこういう値を設定したいことでしょう。
alter table users add user_name varchar(30) unique not null, profile text, created datetime;

user_namevarchar 型、varchar(30) で、30文字以内の文字列、
not nullunique(同じ値を入れてはいけない制限)のオプション、
profile は特に文字数制限のない text 型、
created は日時を入れる datetime 型という指定です。

数値型は int 以外にもいろいろあるので、ここ参照 : 数値型(データ型)のまとめ - [MySQL/SQL] ぺんたん info
ほかのデータ型についてはここにあるけど、char 型とか普通使わないものも書かれているので
混乱する可能性も… : MySQLのデータ型 - MySQLの使い方

8.カラム一覧見る

show columns from table_name;

9.データのセット

update table_name set column_name=値, column_name=値;
といった形。特定の行だけにデータをセットしたいなら、where 文を使って例えば

update users set role="admin" where id<=10;
これなら、id カラムの値が 10 以下のデータについて、role カラムの値を admin に設定するというふうになります。

update users set created=NOW() where created is null;
これは、created カラムが NULL のデータについて、NOW() メソッドを用いて、現在時刻をセットします。

update users set profile=NULL where user_name like "test%";
これは、test という文字列から始まる user_name を持つ USERS の profile に NULL 値をセットすることになります。

10.データ一覧見る

select * from table_name;

11.テーブルの複製

【データごと複製】
create table 新規作成するテーブル名 select * from コピー元のテーブル名;

【定義だけ複製】
create table 新規作成するテーブル名 like コピー元のテーブル名;

【同じテーブルを作るのに必要なSQL文を取得する】
show create table table_name;