ここではMySQLで使用するDDL/DMLのSQLの構文と標準で用意されているツールについて簡単ですが解説します。随時更新もしていきたいと思います。

[DDL(データベース・テーブルの作成・変更・削除)]  [データのインポートとエクスポート] 
[DML(テーブル内のレコードの追加・検索・更新・削除)] [データのバックアップとリカバリー]

DDL(データベース・テーブルの作成・変更・削除)

データベースの作成・削除
1) データベースの作成
・最大長:64Byte。/, `\', `.' を除くディレクトリ名として許されるすべての文字でデータベース名を指定。
 オラクルのような複雑な定義はありません。下記1行を実行するだけでデータベースが作成されます。
 作成時間も一瞬です。
create database データベース名;
 例)
   create database twonessdb;

2) 作成済データベースの確認
・データベース名:information_shema/mysql/testはインストール時に作成されたデータベースです。
show databases;

3) データベースの削除
drop database データベース名;
 例)
   drop database twonessdb;

テーブルの作成・変更・削除
1) フィールドの型の種類
@数値
a) TINYINT [UNSIGNED] [ZEROFILL] 所要容量:1Byte
 ・整数。符号つきの範囲は -128〜127。符号なしの範囲は 0〜255。

b) SMALLINT [UNSIGNED] [ZEROFILL] 所要容量:2Byte
 ・整数。符号つきの範囲は -32768〜32767。符号なしの範囲は 0〜65535。

c) INT [UNSIGNED] [ZEROFILL] 所要容量:4Byte
 ・整数。符号ありの範囲は -2147483648〜2147483647。符号なしの範囲は 0〜4294967295。

d) INTEGER [UNSIGNED] [ZEROFILL] 所要容量:4Byte
 ・INTの同義語です。

e) BIGINT [UNSIGNED] [ZEROFILL] 所要容量:8Byte
 ・整数。符号ありの範囲は -9223372036854775808〜9223372036854775807。
  符号なしの範囲は 0〜18446744073709551615。


f) FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] 所要容量:4Byte
 ・浮動小数点。範囲は -3.402823466E+38〜-1.175494351E-38、 0、 1.175494351E-38。

g) DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL] 所要容量:8Byte
 ・浮動小数点。範囲は -1.7976931348623157E+308〜-2.2250738585072014E-308 、
   0、2.2250738585072014E-308〜1.7976931348623157E+308。


h) DECIMAL[(M,D)] [UNSIGNED] [ZEROFILL] 
  所要容量:D > 0 の場合 M+2, D = 0 の場合 M+1 bytes (M < D の場合 D+2)
 ・パック無し浮動小数点数。

i) NUMERIC [UNSIGNED] [ZEROFILL]
 ・DECIMAの同義語です。


A日付・時刻
a) DATE 所要容量:3Byte
 ・日付。サポートされる範囲は'1000-01-01'から'9999-12-31'まで。書式 は'YYYY-MM-DD'。

b) DATETIME 所要容量:8Byte
 ・日付と時刻の組み合わせ。
  サポートされる範囲は'1000-01-01 00:00:00'〜 '9999-12-31 23:59:59'。
  書式は'YYYY-MM-DD HH:MM:SS'


c) TIMESTAMP 所要容量:4Byte
 ・タイムスタンプ。範囲は'1970-01-01 00:00:00'〜2037年末まで。
  この型で定義するとINSERT/UPDATE時にサーバーの日付が自動で設定されます。


d) YEAR[(2|4)]  所要容量:1Byte
 ・年。2桁または4桁形式(デフォルトは4桁)。許される値は、4桁形式では 1901〜2155, 0000 で、
  2桁形式(70〜69)では 1970〜2069 です。


e) TIME 所要容量:3Byte
 ・時間。範囲は'-838:59:59'〜'838:59:59'です。 書式は'HH:MM:SS'。


B文字列
a) CHAR(M) 所要容量:M bytes, 1 <= M <= 255
 ・固定長の文字列。Mは1〜255まで。

b) VARCHAR(M) 所要容量:L+1 bytes, where L <= M and 1 <= M <= 255 。Lは実際の格納文字長。
 ・可変長の文字列。Mは1〜255まで。


Cオブジェクト型
a) TINYBLOB, TINYTEXT  所要容量:L+1 bytes,where L。Lは実際の格納文字長。< 2^8
 

b) BLOB, TEXT 所要容量:L+2 bytes,where L < 2^16 。Lは実際の格納文字数。
 

c) MEDIUMBLOB, MEDIUMTEXT 所要容量:L+3 bytes,where L < 2^24 。Lは実際の格納文字数。
 

d) LONGBLOB, LONGTEXT 所要容量:L+4 bytes,where L < 2^32 。Lは実際の格納文字数。
 


2) テーブルの作成
create table テーブル名(
    フィールド名 フィールド型 NULL許可 デフォルト値,・・・);

 例)
    create table test(
        aaa    char(3)         default '' not null,
        bbb    varchar(10)   default '' not null,
        ccc   int               default 0 not null,
        ddd    numeric(5,3) default 0 not null,
        eee   datetime       not null,
        fff     timestamp     not null
    );


プライマリーキーも追加する場合(上記例でaaaとbbbをプライマリーキーにする場合)
primary key (フィールド名,・・・);
 例)
    create table test(
        aaa    char(3)         default '' not null,
        bbb    varchar(10)   default '' not null,
        ccc   int               default 0 not null,
        ddd    numeric(5,3) default 0 not null,
        eee   datetime       not null,
        fff     timestamp     not null,
        primary key (aaa,bbb)
    );


※補足説明
SQLを実行する場合、MySQL Command Line Clientから直接実行します。ただし上記SQLを1行づつ 入力するのは大変ですし、実行後エラーがあった場合、再度1から入力し直さないといけないので大変やっかいです。
そこでこのような場合はSOURCEコマンドを使用して下さい。手順は

 1)上記のようなSQLをエディタで編集し保存する。ファイル名はcreate_test.sql等
 2)MySQL Command Line Clientを立ち上げる
 3)SOURCEコマンドを実行する。
  mysql>SOURCE c:\temp\create_test.sql
 4)エラーがあれば再度1)〜3)の処理を行う。

なお上記例だとコマンドプロンプトよりc:\tempにディレクトリチェンジをしてMySQL Command Line Clientを 起動するとフォルダ名の指定は不要でファイル名だけ指定して実行が出来ます。

3) テーブルの確認
・使用するデータベースの切替 use データベース名;
use twonessdb;

・該当データベースに作成済のテーブル表示
show tables;

・該当テーブルの内容を確認 desc テーブル名;
desc test;

4) テーブルの削除
drop table テーブル名;
 例)
   drop table test;

5) 該当テーブルへのフィールドの追加
alter table テーブル名
    add  フィールド名 フィールド型 NULL許可 デフォルト値 [FIRST | AFTER 既存フィールド名],・・・

 例)下記SQLを実行するとTESTテーブルのaaaの前にaaa0がaaaの後ろにaaa2が追加されます。
    alter table test
        add aaa0    char(1)    default '' not null FIRST,
        add aaa2    char(3)    default '' not null AFTER aaa;

6) 該当テーブルからフィールドの削除
alter table テーブル名
    drop  フィールド名,・・・;

 例)下記SQLを実行するとaaa2に値が入っていても削除されます。
    alter table test
        drop aaa2;

7) 該当テーブルの名称変更
alter table テーブル名
    rename  新テーブル名;

 例)
    alter table test
        rename test01;


INDEXの作成・変更・削除
1) プライマリーキーの再作成
再作成する場合は現在のプライマリーキーを削除後して作成する。
-- プライマリーキーの削除
alter table テーブル名
    drop primary key;
-- プライマリーキーの作成
alter table テーブル名
    add primary key(フィールド名,・・・);

 例)
    alter table test01
        drop primary key;
    alter table test01
        add primary key(aaa0,aaa);

2) INDEXの追加
create  [UNIQUE|FULLTEXT]  INDEX  インデックス名
    on  テーブル名  (フィールド名[(length)],・・・)

 例)test01というテーブルにtest01_I1というINDEX名でbbbの項目をINDEXとして追加
    create index test01_I1
        on  test01(bbb);

 例)test01というテーブルにtest01_I2というINDEX名でbbbの項目先頭5bayteをUNIQUE INDEXとして追加
    create UNIQUE index test01_I2
        on  test01(bbb(5));

3) INDEXの削除
drop  INDEX  インデックス名
    on  テーブル名;

 例)test01というテーブルからtest01_I1というインデックスを削除
    drop index test01_I1
        on  test01;

Copyright (C)2006 TwoNess,inc. All rights reserved.