MySQL表的操作

发布于:2025-05-16 ⋅ 阅读:(10) ⋅ 点赞:(0)

目录

一、创建表

二、查看表结构

三、修改表

1. 添加字段

2. 修改字段类型

3. 删除字段

4. 修改表名

5. 修改字段名称

四、删除表


一、创建表

创建表是数据库操作的起点,其基本语法如下:

CREATE TABLE table_name (
    field1 datatype,
    field2 datatype,
    field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;
  • field:指定列名,用于存储不同类型的数据,如用户姓名、年龄等。
  • datatype:定义列的数据类型,例如 int(整数)、varchar(n)(长度可变的字符串,n 为最大长度)、date(日期)等。数据类型的选择应根据实际存储需求确定,以确保数据的准确性和存储效率。例如,存储年龄使用 int,存储姓名使用 varchar(50)
  • character set:指定字符集,如 utf8,用于支持不同语言字符的存储和显示。若未指定,则采用数据库默认字符集。正确的字符集设置可避免字符乱码问题,尤其在处理多语言数据时至关重要。
  • collate:校验规则,用于确定字符的比较和排序方式。不同校验规则可能影响数据查询和排序的结果,未指定时沿用数据库默认规则。
  • engine:存储引擎,如 MyISAMInnoDB。不同的存储引擎具有不同的特点和适用场景。MyISAM 引擎擅长读操作,但不支持事务;InnoDB 支持事务、行级锁,适合高并发读写的场景。

使用show enginesSQL可以查看当前MySQL支持的存储引擎:

🌴案例:创建一个用户信息表 users,存储用户的基本信息。

CREATE TABLE users (
    id INT,
    name VARCHAR(20) COMMENT '用户名',
    password CHAR(32) COMMENT '密码是32位的md5值',
    birthday DATE COMMENT '生日'
) charset=utf8mb4 engine=MyISAM;

说明

  • id 列为整数类型,用于存储用户唯一标识。
  • name 列为长度不超过20的可变字符串,存储用户名,并添加注释说明。
  • password 列为固定长度32的字符类型,存储经过 MD5 加密的密码。
  • birthday 列为日期类型,记录用户生日。
  • 指定字符集为 utf8mb4,以支持中文等多语言字符。
  • 使用 MyISAM 存储引擎。

不同存储引擎创建的表文件也不同。以 MyISAM 引擎为例,在数据库(8.0版本)目录下会生成三个文件:

  • users_376.sdi:存储序列化字典信息(Serialized Dictionary Information,SDI)。
  • users.MYD:存储表数据。
  • users.MYI:存储表索引。

若创建 InnoDB 引擎的表,表结构和数据存储在 .ibd 文件中

注:在 MySQL 8.0 中,传统的 .frm 文件已被废弃,取而代之的是新的数据字典架构。数据字典是一个存储数据库元数据的系统,它包含了数据库中所有对象的定义和相关信息。users_376.sdi 文件的作用类似于之前的 .frm 文件,用于存储表的元数据,如表的结构定义、列信息、索引信息等。

二、查看表结构

在对表进行操作或调试时,可能需要查看表的结构以了解其定义。可以使用以下命令查看表结构:

DESC 表名;

例如,查看 users 表的结构:

DESC users;

 如果想要查看创建表时的相关细节,可以使用 show create table 表名 \G 命令。如下:

三、修改表

        在实际的数据库操作中,修改表结构有可能对表内的数据产生影响。为了更直观地展示这一过程,我们可以在对表进行修改之前,先向用户表(如 users 表)中插入示例数据。这一操作将为后续的演示提供基础数据,便于观察修改表结构时数据的变化情况。以下是插入数据的示例:

1. 添加字段

当需要存储新的数据信息时,可以向表中添加字段。语法如下:

ALTER TABLE tablename ADD 新增列名 新增列的属性;

🌴案例:向 users 表中添加一个用于保存图片路径的字段 assets,放置在 birthday 列之后。

ALTER TABLE users ADD assets VARCHAR(100) COMMENT '图片路径' AFTER birthday;

        执行后,users 表的结构将新增 assets 列。对于原有数据行,新添加的字段值将为 NULL(若该字段允许为空)或默认值(若指定了默认值)。

2. 修改字段类型

随着需求的变化,可能需要修改字段的数据类型、长度、默认值等属性。语法如下:

ALTER TABLE tablename MODIFY 列名 修改后的列属性;

🌴案例:将 users 表中的 name 字段长度从 20 修改为 60。

ALTER TABLE users MODIFY name VARCHAR(60);

        执行后,name 字段的数据类型保持 varchar,但长度变为 60。修改字段属性时,需确保修改后的数据类型与原有数据兼容,避免数据丢失或错误。

3. 删除字段

如果某个字段不再需要,可以将其从表中删除。但需谨慎操作,删除字段的同时会丢失该字段的所有数据。语法如下:

ALTER TABLE tablename DROP 列名;

🌴案例:删除 users 表中的 password 列。

ALTER TABLE users DROP password;

执行后,password 列将从表结构中移除,相应数据也不再保留。

4. 修改表名

根据项目需求,可能需要修改表名。语法如下:

ALTER TABLE tablename RENAME [TO] 新表名;

🌴案例:将 users 表重命名为 client

  • to:可以省掉 
ALTER TABLE users RENAME TO client;

执行后,表名变为 client,但表结构和数据保持不变。

5. 修改字段名称

当需要更改字段名称时,可以使用以下语法:

ALTER TABLE tablename CHANGE 列名 新列名 新列属性;

🌴案例:将 client表中的 name 列修改为 xingming

ALTER TABLE tablename CHANGE name xingming varchar(20);

需注意,在 CHANGE 子句中要重新指定新字段的数据类型,确保与原有数据兼容。

四、删除表

当表不再需要时,可以将其删除。此操作将永久移除表及其所有数据,需谨慎执行。语法如下:

DROP TABLE [IF EXISTS] tbl_name;

🌴案例:删除名为 client 的表。

DROP TABLE client;

若添加 IF EXISTS 子句,当表不存在时不会报错,避免因表不存在而导致的脚本执行中断。


网站公告

今日签到

点亮在社区的每一天
去签到