• MySQL表的操作


    目录

    MySQL表的操作

    创建表

    创建表案例

    查看表结构

    修改表

    删除表


    MySQL表的操作

    表操作至少会涉及如下两类SQL语句

    • DDL(Data Definition Language)数据定义语言:比如建表、删表、该表、新增列、删除列等。
    • DML(Data Manipulation Language)数据操作语言:比如插入记录、删除记录、修改记录等。

    本篇博客讲的是表的DDL操作,也就是操作表结构的SQL语句。

    创建表

    创建表

    创建表的SQL如下:

    1. CREATE TABLE [IF NOT EXISTS] table_name(
    2. field1 datatype1 [COMMENT '注释信息'],
    3. field2 datatype2 [COMMENT '注释信息'],
    4. field3 datatype3 [COMMENT '注释信息']
    5. )[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];

    说明一下:

    • SQL中大写的表示关键字,[ ]中代表的是可选项。
    • field表示列名,datatype表示列的类型。
    • CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
    • COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
    • ENGINE用于指定表所采用的存储引擎。
    • COMMENT用于对指定列添加注释信息。

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

    可以看到我当前的MySQL默认使用的是InnoDB存储引擎,如果我建表时没有指定使用哪种存储引擎,那么就会默认使用InnoDB存储引擎。

    创建表案例

    创建表案例

    在创建表之前需要先选中一个数据库,然后在数据库中创建表,这里我们先创建一个数据库。如下:

    数据库创建完毕后选中数据库,在该数据库中创建一个user表,并在建表时指定采用MyISAM存储引擎。如下:

    表创建完毕后在数据库的数据存储路径下的table_operation目录中,就会对应增加三个文件。如下:

    说明一下:

    • 采用不同的存储引擎,创建表时所产生的文件不一样。
    • 采用InnoDB存储引擎建表,会产生对应的xxx.frm(表结构)和xxx.ibd(表数据+表索引)文件。
    • 采用MyISAM存储引擎建表,会产生对应的xxx.frm(表结构)、xxx.MYD(表数据)和xxx.MYI(表索引)文件。

    查看表结构

    查看表结构

    使用desc 表名SQL可以查看表的结构。如下:

    说明一下:

    • Field表示该字段的名字。
    • Type表示该字段的类型。
    • Null表示该字段是否允许为空。
    • Key表示索引类型,比如主键索引为PRI。
    • Default表示该字段的默认值。
    • Extra表示该字段的额外信息说明。

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

    修改表

    修改表

    修改表的SQL如下:

    1. ALTER TABLE table_name ADD 新增列名 新增列的属性;
    2. ALTER TABLE table_name MODIFY 列名 修改后的列属性;
    3. ALTER TABLE table_name DROP 列名;
    4. ALTER TABLE table_name RENAME [TO] 新表名;
    5. ALTER TABLE table_name CHANGE 列名 新列名 新列属性;

    修改表的过程中可能会影响到表中的数据,为了演示这个过程,我们在修改表之前先在user表中插入两条数据。如下:

    一、新增列

    在user表中新增一列用于保存用户的照片路径。如下:

    说明一下: 新增列SQL中的after表示将该列新增到哪一列之后,如果想要将新增的列放到第一列,可以将after及其之后的SQL换成not null first

    新增列后可以通过desc命令确认新增成功,这时再插入一条用户记录后查看表中信息。如下:

    可以看到在新增列之前插入表中的两条记录对应的path值为NULL,因此新增列后可能还需要对原来插入的记录进行修改。

    二、修改列类型

    将user表中password列的类型由char(30)改成char(50)。如下:

    说明一下: 如果需要修改列类型后仍然保留comment字段,需要在修改时重新指定comment字段。

    三、修改列名

    将user表中password列的列名改成passwd。如下:

    四、修改表名

    将user表的表名改成employee。如下:

    五、删除列

    将employee表中的path列删除。如下:

    注意: 删除列后,该列对应的所有数据都没有了。

    删除表

    删除表的SQL如下:

    DROP [TEMPORARY] TABLE [IF EXISTS] table_name;
    

    说明一下:

    • 在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。
    • TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。
    • 为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。

    将employee表删除。如下:

  • 相关阅读:
    SpringBoot常用注解(详解)
    图像数据通道格式:NCHW和NHWC的区别
    leetcode25 K个一组反转链表
    阿里云服务器搭建 图文详细教程
    Demo20快乐数
    nodejs+vue教学辅助管理系统
    静态WEB容器镜像最小化实践
    .[nicetomeetyou@onionmail.org].faust深入剖析勒索病毒及防范策略
    Qt读写ini
    【软考 系统架构设计师】嵌入式系统③ 嵌入式系统软件
  • 原文地址:https://blog.csdn.net/zxj20041003/article/details/132738459