当前位置: 首页 > news >正文

MySQL表的操作:创建—修改—删除流程解析

文章目录

    • 1 创建表
      • 语法格式
      • 关键说明
    • 2 创建users表
      • SQL
      • 验证
    • 3 查看表结构
      • 语法与示例
      • 字段分析
      • 其他语句
    • 3.4 修改表
      • 3.4.1 添加字段
        • SQL
        • 验证
      • 3.4.2 修改字段类型/长度
        • SQL
        • 验证
      • 3.4.3 删除字段(谨慎操作!)
        • SQL
        • 验证
      • 3.4.4 修改表名
        • SQL
        • 验证
      • 3.4.5 修改列名
        • SQL
        • 验证
      • 区别分析
    • 3.5 删除表
      • 语法格式
      • SQL
      • 验证

在MySQL数据库日常开发中,表是数据存储的核心载体。无论是创建表、查看结构,还是修改字段、删除表,每一步操作都有规范的语法和潜在的坑点。本文介绍MySQL表的完整操作…

1 创建表

创建表是数据存储的第一步,需明确列名、数据类型、字符集和存储引擎,语法结构固定且严谨。

语法格式

CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

关键说明

  • field:表的列名,需体现列的业务含义(如id表示主键、name表示用户名);
  • datatype:列的数据类型(如int存整数、varchar(20)存短字符串、date存日期);(后续会详细讲解数据类型)
  • character set:表的字符集(若不指定,默认继承所在数据库的字符集);
  • collate:字符校验规则(若不指定,默认继承数据库规则);
  • engine:存储引擎(MySQL常用MyISAMInnoDB,两者文件存储差异极大)。

注意: 不同存储引擎在磁盘上生成的文件不同,若不清楚差异,可能误删或找不到数据:

  • 当存储引擎为MyISAM时,会生成3个文件:
    • 表名.frm:存储表结构;
    • 表名.MYD:存储表数据;
    • 表名.MYI:存储表索引;
  • 当存储引擎为InnoDB时(MySQL 5.7及以上),会生成2个文件:
    • 表名.frm:存储表结构;
    • 表名.ibd:存储表数据+索引(InnoDB将数据和索引融合存储)。

2 创建users表

以创建“用户表users”为例,指定存储引擎为MyISAM、字符集为utf8,包含用户ID、用户名、加密密码、生日字段。

SQL

create table users (id int,name varchar(20) comment '用户名',  -- 注释说明字段含义,便于维护password char(32) comment '密码是32位的md5值',  -- MD5加密后固定32位,用char更高效birthday date comment '生日'
) character set utf8 engine MyISAM;

在这里插入图片描述

验证

执行上述SQL后,在MySQL数据目录(如C:\ProgramData\MySQL\MySQL Server5.7\Data\test1)中,会看到3个文件:

文件名类型作用大小
users.frmFRM文件存储users表结构9KB
users.MYDMYD文件存储users表数据0KB(暂无数据)
users.MYIMYI文件存储users表索引1KB

在这里插入图片描述

3 查看表结构

创建表后,需确认表结构是否符合预期,MySQL提供desc命令快速查看列名、类型、是否允许为空等信息。

语法与示例

-- 语法:desc 表名;
desc users;

在这里插入图片描述

字段分析

FieldTypeNullKeyDefaultExtra
idint(11)YESNULL
namevarchar(20)YESNULL
passwordchar(32)YESNULL
birthdaydateYESNULL

各列含义:(如果是初学者了解即可,数据类型会详解)

  • Field:列名;
  • Type:列的数据类型(如int(11)表示整数,varchar(20)表示最大20位字符串);
  • Null:是否允许为空(YES表示允许,NO表示不允许);
  • Key:是否为索引(空表示非索引,PRI表示主键,UNI表示唯一索引);
  • Default:默认值;
  • Extra:额外信息(如auto_increment表示自增)。

其他语句

  • descshow create table
    desc仅显示简化的表结构,若需查看完整创建语句(含字符集、存储引擎),需用show create table 表名;,例如:
    show create table users;
    
    执行后会返回完整的CREATE TABLE语句,便于复现表结构。

在这里插入图片描述

3.4 修改表

实际开发中,表结构常需调整(如加字段、改类型、删列、改表名),MySQL用ALTER TABLE命令实现,不同修改场景语法不同,且需注意数据安全性

3.4.1 添加字段

需求:在users表的birthday字段后,新增assets字段存储图片路径。

SQL
-- 语法:ALTER TABLE 表名 ADD 字段名 类型 [comment '注释'] [after 已有字段名];
alter table users add assets varchar(100) comment '图片路径' after birthday;

在这里插入图片描述

验证
  1. 查看修改后的结构:

    desc users;
    

    在这里插入图片描述

    会新增assets列,位于birthday之后:

    FieldTypeNullKeyDefaultExtra
    birthdaydateYESNULL
    assetsvarchar(100)YESNULL
  2. 对原有数据无影响:

    select * from users;
    

    原有2条数据的assets列值为NULL(新增字段默认无值),但不会丢失旧数据:

    idnamepasswordbirthdayassets
    1ab1982-01-04NULL
    2bc1984-01-04NULL

3.4.2 修改字段类型/长度

需求:将name字段的长度从varchar(20)改为varchar(60)(应对更长的用户名需求)。

SQL
-- 语法:ALTER TABLE 表名 MODIFY 字段名 新类型;
alter table users modify name varchar(60);

在这里插入图片描述

验证
desc users;

在这里插入图片描述

name字段的Type会变为varchar(60),原有用户名数据不会丢失。

3.4.3 删除字段(谨慎操作!)

需求:删除password字段(假设密码存储逻辑变更,不再需要该列)。

SQL
-- 语法:ALTER TABLE 表名 DROP 字段名;
alter table users drop password;

在这里插入图片描述

验证
desc users;

在这里插入图片描述

password列会被彻底删除,且该列的所有数据也会丢失,无法恢复!

3.4.4 修改表名

需求:将users表改名为employee(表的业务含义变更)。

SQL
-- 语法:ALTER TABLE 旧表名 RENAME [TO] 新表名;(TO可省略)
alter table users rename to employee;

在这里插入图片描述

验证
-- 查看新表名的数据
select * from employee;

会正常返回原users表的数据,表名已更新。

3.4.5 修改列名

需求:将employee表的name列改名为xingming,保持类型为varchar(60)

SQL
-- 语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 完整类型;(必须指定完整类型)
alter table employee change name xingming varchar(60);

在这里插入图片描述

验证
desc employee;

name列会变为xingming,类型仍为varchar(60)

在这里插入图片描述

区别分析

  1. MODIFYCHANGE

    • MODIFY:仅修改字段类型/长度,不修改列名,语法为MODIFY 字段名 新类型
    • CHANGE:可同时修改列名和类型,语法为CHANGE 旧列名 新列名 完整类型(必须写新列名和完整类型,缺一不可);
      错误示例:用change改长度却不写新列名:
    -- 错误!CHANGE必须指定旧列名和新列名
    alter table employee change name varchar(60);
    
  2. 添加字段时未指定位置,默认在最后
    若不写after 已有字段名,新增字段会默认放在表的最后一列。若需指定位置(如在id后),需明确写after id,例如:

    alter table employee add age int comment '年龄' after id;
    

3.5 删除表

当表不再需要时,可使用DROP TABLE命令删除,但表的结构、数据、索引会全部删除,无法恢复。

语法格式

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...;
  • TEMPORARY:仅删除临时表(避免误删永久表);
  • IF EXISTS:若表不存在,不报错(否则会报“表不存在”错误);
  • 可同时删除多个表,用逗号分隔。

SQL

drop table employee;

在这里插入图片描述

验证

#查看表数据
select * from employee;

在这里插入图片描述

http://www.dtcms.com/a/455255.html

相关文章:

  • 网站专题方案工程建设标准网站
  • 企业网站建设 调研芜湖市建设厅网站
  • 使用Xenon工具搭建高可用MySQL集群实战(上)
  • MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
  • 有哪些网站建设的方法做母婴网站赚钱
  • 想把公司的外部网站替换东营建设信息网(东营市住房和城乡建设局)
  • 做旅游广告在哪个网站做效果好国外素材网站
  • 网站设计怎么收费网站空间代理加盟
  • 网站制作现状解决方案域名反查网站
  • 河北建设厅官网站首页北京服装设计公司前十名
  • 做网站是什么软件seo快速排名利器
  • 主要网站 开发语言教做衣服网站
  • 深圳网站制作07551python做网站的书
  • 完整网站开发看什么书wordpress做成公众号
  • 合肥企业建站系统模板免费黄页营销网站
  • 网站的ftp怎么登陆做房地产一级市场的看什么网站
  • 外贸企业网站系统源码代前导页的网站
  • 网站外部链接如何建设网站建设与推广方案
  • 新洲建设投标网站网站建设国标行业分类
  • 平安保险网站官方网址做健身网站步骤
  • 怎么给一个网站做seo智联招聘网站怎么做微招聘
  • 网页模板网站互联网平台有哪些
  • 可以免费下源码的网站电商网站首页图片
  • 做网站网站需要注意什么wordpress版本文件
  • C++基础语法详解:从命名空间到内联函数
  • 广东网站建设网站网站怎么做购物车
  • 最专业的做网站公司哪家好易企秀怎么制作
  • 响应式网站有什么弊端seo怎么收费的
  • wordpress 资源站模板wordpress文章图片全屏浏览
  • 华为网站推广策略前端移动端开发