Search

テーブルの作成
CREATE TABLE文

unknown

CREATE TABLE [IF NOT EXISTS] [データベース名.]テーブル名 ( ... );

既に同名のデータベースを作成しようとすると、エラーになります。
エラーを発生させないためには、キーワードIF NOT EXISTSを指定します。

キーワードIF NOT EXISTSを指定すると、同名のテーブルが存在するか確認し、存在しない場合のみ作成処理を行うため、エラーが発生しません。
⇒ CREATE TABLE IF NOT EXISTS [データベース名.]テーブル名 ( ... );

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。

# db_Customerデータベースに、tbl_Addressテーブルを作成
# 既にデータベースが選択されている場合は、データベース名の指定は不要
mysql> CREATE TABLE IF NOT EXISTS db_User.tbl_Customer( Enter
    -> UserID INT NOT NULL PRIMARY KEY, Enter
    -> FirstName VARCHAR(32) NOT NULL, Enter
    -> LastName VARCHAR(32) NOT NULL, Enter
    -> Sex CHAR(2) DEFAULT 0, Enter
    -> Age INT DEFAULT NULL Enter
    -> ); Enter
Query OK, 0 rows affected (0.06 sec)

# テーブルが作成されているか確認
mysql> DESCRIBE tbl_Customer; Enter
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| UserID    | int(11)     |      | PRI | 0       |       |
| FirstName | varchar(32) |      |     |         |       |
| LastName  | varchar(32) |      |     |         |       |
| Sex       | char(2)     | YES  |     | 0       |       |
| Age       | int(11)     | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

テーブルの削除
DROP TABLE

unknown

DROP TABLE [IF EXISTS] [データベース名.]テーブル名 [, [データベース名.]テーブル名, ... ] [RESTRICT | CASCADE]

複数のテーブルを削除する場合は、削除するテーブル名をカンマ区切りで指定します。

テーブルが存在するか調べてから削除文を実行する場合は、IF EXISTSを指定します。 これがないと、テーブル名がデータベースに存在しない場合、エラーになります。 IF EXISTSを指定していれば、テーブルが存在しない場合に削除文が実行されないため、エラーが発生しません。

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。

# データベース選択
mysql> USE db_User Enter

# データベースからテーブルを削除
mysql> DROP TABLE IF EXISTS tbl_CustomerA; Enter
Query OK, 0 rows affected (0.00 sec)

# データベースから、複数のテーブルを削除
# 削除するテーブル名はカンマ(,)区切りで指定
mysql> DROP TABLE IF EXISTS  tbl_CustomerA, tbl_CustomerB; Enter
Query OK, 0 rows affected (0.00 sec)

mysql>

テーブル構造を変更

unknown

ALTER [IGNORE] TABLE テーブル名 alter_specification[, alter_specification … ]

テーブルの名前を変更
ALTER TABLE RENAME / RENAME TABLE

unknown

ALTER [IGNORE] TABLE 旧テーブル名 RENAME [TO] 新テーブル名;
または
RENAME TABLE 旧テーブル名 TO 新テーブル名[, 旧テーブル名 TO 新テーブル名, ... ];

テーブルの名前を変更します。
複数のテーブル名を1文で変更したい場合は、RENAME TABLE文を使用します。

IGNOREを指定すると、ユニークキーの重複があった場合、最初のレコードを使用し、他の重複レコードを削除します。

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。

ALTER TABLE文の使用例
# データベース選択
mysql> USE db_User Enter
Database changed

# テーブル名を確認
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customera     | ←「tblA」にリネーム
| tbl_customerb     |
+-------------------+
2 rows in set (0.00 sec)

# テーブル名変更
mysql> ALTER TABLE tbl_CustomerA RENAME tblA; Enter
Query OK, 0 rows affected (0.39 sec)

# リネームされているか確認
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customerb     |
| tbla              | ←リネームされている
+-------------------+
2 rows in set (0.00 sec)

mysql>
REMANE TABLE文の使用例
# データベース選択
mysql> USE db_UserEnter
Database changed

# テーブル名を確認
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customerb     |
| tbla              | ←「tbl_CustomerA」にリネーム
+-------------------+
2 rows in set (0.00 sec)

### テーブル名変更
mysql> RENAME TABLE tblA TO tbl_CustomerA; Enter
Query OK, 0 rows affected (0.09 sec)

# リネームされているかテーブル名を確認
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customera     | ←リネームされている
| tbl_customerb     |
+-------------------+
2 rows in set (0.00 sec)

### 複数のテーブル名を変更
mysql> RENAME TABLE Enter
    -> tbl_CustomerA TO tbl1, Enter
    -> tbl_CustomerB TO tbl2; Enter
Query OK, 0 rows affected (0.43 sec)

# リネームされているかテーブル名を確認
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl1              |
| tbl2              |
+-------------------+
2 rows in set (0.00 sec)

mysql>

テーブル作成時のSQL文を表示
SHOW CREATE TABLE文

unknown

SHOW CREATE TABLE テーブル名;
または
SHOW CREATE TABLE テーブル名\G

SQL文の末尾をセミコロンはなく、\Gにすると、実行結果を縦方向に出力します。

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。

# 指定したデータベースの全テーブル情報を表示
mysql> SHOW TABLE STATUS FROM db_User; Enter
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| Name          | Type   | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Create_options | Comment |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| tbl_customera | MyISAM | Dynamic    |    4 |             28 |         112 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:08 | NULL       |                |         |
| tbl_customerb | MyISAM | Dynamic    |    3 |             28 |          84 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:09 | NULL       |                |         |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
2 rows in set (0.10 sec)

### ワーイルドカード使用
# テーブル名が「B」で終るテーブルの情報のみ表示
mysql> SHOW TABLE STATUS LIKE '%B'; Enter
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| Name          | Type   | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Create_options | Comment |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| tbl_customerb | MyISAM | Dynamic    |    3 |             28 |          84 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:09 | NULL       |                |         |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
1 row in set (0.06 sec)

mysql>

テーブル情報を表示
SHOW TABLE STATUS文

unknown

SHOW TABLE STATUS [FROM データベース名] [LIKE 'ワイルドカード']

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。 SHOW TABLE STATUS;と入力すれば、テーブル情報が表示されます。

# 指定したデータベースの全テーブル情報を表示
mysql> SHOW TABLE STATUS FROM db_User; Enter
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| Name          | Type   | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Create_options | Comment |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| tbl_customera | MyISAM | Dynamic    |    4 |             28 |         112 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:08 | NULL       |                |         |
| tbl_customerb | MyISAM | Dynamic    |    3 |             28 |          84 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:09 | NULL       |                |         |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
2 rows in set (0.10 sec)

### ワーイルドカード使用
# テーブル名が「B」で終るテーブルの情報のみ表示
mysql> SHOW TABLE STATUS LIKE '%B'; Enter
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| Name          | Type   | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Create_options | Comment |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
| tbl_customerb | MyISAM | Dynamic    |    3 |             28 |          84 |      4294967295 |         2048 |         0 |           NULL | 2007-02-27 20:30:05 | 2007-02-27 20:30:09 | NULL       |                |         |
+---------------+--------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+----------------+---------+
1 row in set (0.06 sec)

mysql>

テーブル一覧表示
SHOW TABLES文

unknown

SHOW TABLES [FROM データベース名] [LIKE 'ワイルドカード'];

データベース未選択の場合は、データベース名.テーブル名のようにテーブル名の前にデータベース名を指定してして下さい。 USE文などで既にデータベースが選択されている場合は、テーブル名の前にデータベース名の指定は不要です。

SHOW TABLES 文の使用例
# データベース未選択の場合は、FROM データベース名を指定
mysql> SHOW TABLES FROM db_User; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customera     |
| tbl_customerb     |
+-------------------+
2 rows in set (0.00 sec)

# データベース選択
mysql>USE db_User Enter
Database changed

# テーブル名一覧表示
mysql> SHOW TABLES; Enter
+-------------------+
| Tables_in_db_user |
+-------------------+
| tbl_customera     |
| tbl_customerb     |
+-------------------+
2 rows in set (0.00 sec)

# ワイルドカード使用
# テーブル名が「B」で終わるテーブルのみ表示
mysql> SHOW TABLES LIKE'%B'; Enter
+------------------------+
| Tables_in_db_user (%B) |
+------------------------+
| tbl_customerb          |
+------------------------+
1 row in set (0.00 sec)

mysql>

このページで使用しているサンプルデータ

unknown

サンプルデータ
### データベース(db_User)作成
CREATE DATABASE IF NOT EXISTS db_User;

###データベース選択
USE db_User;

### テーブル(tbl_CustomerA)作成
CREATE TABLE tbl_CustomerA(
UserID VARCHAR(4) NOT NULL PRIMARY KEY,
FirstName VARCHAR(32) NOT NULL,
LastName VARCHAR(32) NOT NULL,
Sex CHAR(2) DEFAULT NULL,
Age INTEGER DEFAULT NULL
);

# データ挿入
INSERT INTO tbl_CustomerA (UserID,FirstName,LastName,Sex,Age) VALUES
('U001','花子','鈴木','f',21),
('U002','太郎','田中','m',30),
('U003','一郎','鈴木','m',45),
('U004','萌子','山口','f',18);

### テーブル(tbl_CustomerB)作成
CREATE TABLE IF NOT EXISTS db_User.tbl_CustomerB(
UserID VARCHAR(4) NOT NULL PRIMARY KEY,
FirstName VARCHAR(32) NOT NULL,
LastName VARCHAR(32) NOT NULL,
Sex CHAR(2) DEFAULT NULL,
Age INTEGER DEFAULT NULL
);

# データ挿入
INSERT INTO tbl_CustomerB (UserID,FirstName,LastName,Sex,Age) VALUES 
('P001','まなみ','青山','f',43),
('P002','綾子','沢崎','f',36),
('P003','研二','羽山','m',45);

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop

polarized women