💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 在 MySQL 中创建,更改和删除表 > 原文: [http://zetcode.com/databases/mysqltutorial/tables/](http://zetcode.com/databases/mysqltutorial/tables/) 在 MySQL 教程的这一部分中,我们将创建,更改和删除表。 我们将使用以下 SQL 语句: * `CREATE` * `ALTER` * `DROP` `CREATE`,`ALTER`和`DROP`语句不限于表。 我们可以使用它们来创建其他数据库对象,例如事件,触发器,视图,函数或过程。 这些语句是 SQL 规范的数据定义语言(DDL)的一部分。 ## `CREATE`和`DROP`语句 `CREATE`语句用于创建表。 它还用于创建索引,视图,事件,例程和触发器。 要创建表,我们给表及其列命名。 每列都有一个数据类型。 在上一章中,我们介绍了各种 MySQL 数据类型。 为列选择正确的数据类型是数据库初始设计的一部分。 ```sql mysql> CREATE TABLE Testing(Id INTEGER); ``` 我们使用`CREATE TABLE`语句创建一个简单的测试表。 表名称是`Testing`。 该表具有称为`Id`的一列。 列的数据类型为`INTEGER`。 ```sql mysql> SHOW CREATE TABLE Testing; +---------+------------------------------------------ | Table | Create Table +---------+------------------------------------------ | Testing | CREATE TABLE `Testing` ( `Id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +---------+------------------------------------------ 1 row in set (0.00 sec) ``` 使用`SHOW CREATE TABLE`语句,我们可以看到创建特定表的确切 SQL 语句。 还有一些默认设置。 如果我们不提供一些明确的属性,则选择这些属性。 如果没有另外指定,默认的 MySQL 引擎是 InnoDB。 (这适用于 MySQL 5.5+)。 默认字符集为 latin1。 ```sql mysql> SHOW TABLES LIKE 'T%'; +---------------------+ | Tables_in_mydb (T%) | +---------------------+ | Testing | +---------------------+ ``` 可以使用`SHOW TABLES`语法显示已创建的非临时表。 我们可以使用`LIKE`子句限制显示的表。 在我们的例子中,我们显示所有以`T`开头的表。 ```sql mysql> DROP TABLE Testing; Query OK, 0 rows affected (0.00 sec) mysql> SHOW TABLES LIKE 'T%'; Empty set (0.00 sec) ``` `DROP TABLE`语句从数据库中删除一个表。 ```sql mysql> CREATE TABLE Testing(Id INT NOT NULL) ENGINE=MEMORY CHARACTER SET='utf8' -> COLLATE='utf8_slovak_ci'; ``` 我们重新创建`Testing`表。 `INT`是`INTEGER`的同义词。 数据库引擎显式设置为`MEMORY`。 我们还指定字符集和排序规则。 ## `ALTER TABLE`语句 `ALTER TABLE`语句更改现有表的结构。 可以添加新列,删除列,重命名列和表或更改表的类型。 在下面的示例中,我们将演示一些可能性。 ```sql mysql> ALTER TABLE Testing RENAME TO TestTable; mysql> SHOW TABLES LIKE 'T%'; +---------------------+ | Tables_in_mydb (T%) | +---------------------+ | TestTable | +---------------------+ ``` 我们使用`RENAME TO`子句将测试表重命名为`TestTable`。 ```sql mysql> ALTER TABLE TestTable ADD iValues INT; ``` 我们将一个名为`iValues`的新列添加到表中。 ```sql mysql> SHOW COLUMNS FROM TestTable; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | Id | int(11) | NO | | NULL | | | iValues | int(11) | YES | | NULL | | +---------+---------+------+-----+---------+-------+ ``` 该语句显示表中的可用列。 我们看到新添加的列。 可以向表中添加约束。 ```sql mysql> ALTER TABLE TestTable ADD PRIMARY KEY (Id); ``` 我们向`TestTable`添加`PRIMARY KEY`约束。 ```sql mysql> DESCRIBE TestTable; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | Id | int(11) | NO | PRI | NULL | | | iValues | int(11) | YES | | NULL | | +---------+---------+------+-----+---------+-------+ ``` `DESCRIBE`是`SHOW COLUMNS FROM`的同义词。 我们可以在`Key`列下看到为 ID 列设置了主键约束。 ```sql mysql> ALTER TABLE TestTable CHANGE COLUMN iValues iValues1 INT; ``` 在此 SQL 语句中,我们将列名从`iValues`更改为`iValues1`。 ```sql mysql> ALTER TABLE TestTable MODIFY COLUMN iValues1 MEDIUMINT; mysql> DESCRIBE TestTable; +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | Id | int(11) | NO | PRI | NULL | | | iValues1 | mediumint(9) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+ ``` 我们使用上面的 SQL 语句来修改列定义。 我们将列数据类型从`INTEGER`更改为`MEDIUMINTEGER`。 ```sql mysql> ALTER TABLE TestTable DROP COLUMN iValues1; mysql> DESCRIBE TestTable; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | Id | int(11) | NO | PRI | NULL | | +-------+---------+------+-----+---------+-------+ ``` 在最后一个示例中,我们从表中删除了现有的列。 在 MySQL 教程的这一部分中,我们正在创建,更改和删除表。