MySQL表的操作

06-01 1175阅读

目录

一、创建表

二、查看表结构

三、修改表

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:存储引擎,如 MyISAM、InnoDB。不同的存储引擎具有不同的特点和适用场景。MyISAM 引擎擅长读操作,但不支持事务;InnoDB 支持事务、行级锁,适合高并发读写的场景。

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

    MySQL表的操作

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

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

    MySQL表的操作

    说明:

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

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

      MySQL表的操作

      • 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;

        MySQL表的操作

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

        MySQL表的操作

        三、修改表

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

        MySQL表的操作

        1. 添加字段

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

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

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

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

        MySQL表的操作

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

        2. 修改字段类型

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

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

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

        ALTER TABLE users MODIFY name VARCHAR(60);

        MySQL表的操作

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

        3. 删除字段

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

        ALTER TABLE tablename DROP 列名;
        

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

        ALTER TABLE users DROP password;

        MySQL表的操作

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

        4. 修改表名

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

        ALTER TABLE tablename RENAME [TO] 新表名;

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

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

          MySQL表的操作

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

          5. 修改字段名称

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

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

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

          ALTER TABLE tablename CHANGE name xingming varchar(20);

          MySQL表的操作

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

          四、删除表

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

          DROP TABLE [IF EXISTS] tbl_name;

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

          DROP TABLE client;

          MySQL表的操作

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

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码