在使用 MySQL 数据库时,操作表是最基本和最重要的任务之一。表是 MySQL 数据库的核心对象,用于存储数据,并且可以通过 SQL 语句进行查询、插入、更新和删除等操作。因此,熟练掌握 MySQL 表的操作是非常必要的。接下来我们将介绍常见的表的操作。
创建表
要在 MySQL 数据库中创建表,可以使用以下 SQL 语句:
CREATE TABLE table_name(
column1 datatype [optional_parameters],
column2 datatype [optional_parameters],
...
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];
说明:
- column1、column2 :要在表中创建的列名称。
- optional_parameters:列的可选参数,例如 NOT NULL 等。
- CHARSET -> 字符集格式存储、COLLATE -> 字符集校验规则、ENGINE -> 指定存储引擎。若没有指定这些参数,则以所在数据库的字符集为准。
- datatype :表示列的类型。
示例:下面是一个SQL语句,用于创建一个名为 students
的表,其中包含 id、name、birthday 三个列,其中 id 为主键,数据类型分别为 int、varchar、date:
说明:不同的存储引擎,创建的表不一样。
students
表存储引擎是 MyISAM
,在数据库目录中有三个文件,分别是:
- students.frm:表结构
- students.MYD:表数据
- students.MYI:表索引
查看表结构
MySQL 查看表结构的语句如下:
DESC 表名称;
示例:DESE 语句可以查看表的结构和字段信息,如下所示:
修改表
MySQL 中修改表的语句是 ALTER TABLE
。该语句可以用于添加、修改或删除表的列、约束、索引等。下面是常用的几种修改表结构的语句:
接下来,我们使用 students
表来对各操作进行演示:
添加列
MySQL 数据库表中添加列,可以使用 ALTER TABLE 语句
,下列是添加列的语法和说明:
ALTER TABLE table_name ADD column_name column_definition [FIRST|AFTER existing_column];
说明:
- table_name:要添加列的表名称。
- column_name:要添加的列名称。
- column_definition:新增列的属性,包括数据类型、长度、约束等。
- 可选参数:FIRST -> 将新增列放在第一列,AFTER existing_column -> 将新增列放在指定列之后。
示例:在 students
表中添加一个名为 phoneNum
的列,数据类型为 char(12)
,如下所示:
若不使用可选参数进行指定,则新增列在表的最后。
注意:在修改现有表时,要确保新增列与现有列不会产生冲突或重复。
修改列
MySQL 数据库表中修改列,可以使用 ALTER TABLE 语句
,以下是修改列的语法及说明:
ALTER TABLE table_name MODIFY column_name column_definition;
示例1:将 students
表中的 phoneNum
列的 char(12) 修改为 char(14),并将其属性改为 unique
:
示例2:将 students
中的 id
列名修改为 stuid
,并保持其它属性不变:
修改表名
MySQL 中修改表名,可以使用以下两种语句:
ALTER TABLE old_table_name rename new_table_name;
RENAME TABLE old_table_name TO new_table name;
说明:
- old_table_name:要修改表的旧名称。
- new_table_name:新的表名称。
例如:将 students
表名修改为 student
,如下所示:
使用 RENAME TABLE old_table_name TO new_table name;
语句将表名更改回来:
注意:在修改表名时,需要确保新表名在数据库中不存在,否则会出现错误。此外,修改表明可能会影响到引用该表的其它表或程序,因此在修改表名之前应该慎重考虑,并确保相应的更改已经进行了。一般情况下不要轻易的更改表名,应该在设计表的时候就考虑清楚。
删除列
MySQL 数据库表中删除列,可以使用 ALTER TABLE 语句
,以下是删除列的语法:
ALTER TABLE table_name DROP column_name;
示例:删除 students
表中的 phoneNum
列:
注意:在删除列之前,应该确保该列中的数据不再需要,并且该列不包含与表的主键或其它外键关联的数据。在删除列之前,也应该考虑备份数据以避免数据意外丢失。
修改主键
在 MySQL 中,修改主键的语句分为两步:1、删除原有的主键约束;2、添加新的主键约束。
删除原有的主键约束使用以下语句:
ALTER TABLE table_name DROP PRIMARY KEY;
添加新的主键约束使用以下语句:
ALTER TABLE table_name ADD PRIMARY KEY(column_name);
需要注意的是,修改主键约束可能会影响到表的数据完整性,所以应该谨慎操作。同时修改主键约束需要满足一些条件,例如被修改的列必须唯一且不允许为空,否则报错。另外,请确保新的主键不包含任何重复的值,否则修改将失败。
删除表
MySQL 中,可以使用 DROP TABLE
命令来删除表,具体语法如下:
DROP [TEMPOPARY] TABLE [IF EXISTS] table_name;
说明:
- TEMPOPARY 关键字用于在删除表时指定该表为临时表,它表示只在当前会话中存在的表,当会话结束时,临时表将被自动删除。
- 在删除表时加上 TEMPOPARY 关键字,表示删除的是当前会话中创建的临时表,而不是持久性的表。
- table_name 是要删除的表名。IF EXISTS 是可选参数,如果指定了该参数,表示在删除表之前先检查表是否存在,如果不存在不会报错,直接退出。如果存在,则直接进行删除。
示例:删除数据库中的表 t1
: