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

MySQL 第三讲---基础篇 库与表操作(下)

前言:

欢迎回到《MySQL 第三讲——基础篇:库与表操作(下)》!在上一节课中,我们学习了如何通过基础命令创建、管理数据库与数据表。那么接下来,让我们继续深入,解锁MySQL库与表操作的完整能力体系!


一、表操作语句

表操作至少需要会下面两类的SQL语句:

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

    当然在本文当中,我们是介绍表结构操作语句,也就是DDL语句,关于DML语句我们会在后面的博客中学习到。


1.1 创建表

创建表
创建表的SQL语句如下:

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


SQL中大写的表示关键字,[ ]中代表的是可选项。

  1. field表示列名,datatype表示列的类型。
  2. CHARSET用于指定表所采用的编码格式,如果没有指定则以所在数据库的编码格式为准。
  3. COLLATE用于指定表所采用的校验规则,如果没有指定则以所在数据库的校验规则为准。
  4. ENGINE用于指定表所采用的存储引擎。
  5. COMMENT用于对指定列添加注释信息。

这里我们需要注意的是:我的MySQL默认使用的是InnoDB存储引擎,如果我没有指定使用哪种存储引擎那么就会默认使用InnoDB存储引擎。

如果大家想要查询自己的默认引擎,可以根据我们之前学习到的show enginee查询

演示:


1.2 查看表结构

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

desc user;

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

如果想要查看创建表时的相关细节,可以使用 show create table 表名SQL。实际上,当我们对表的结构进行改变时,改变同样可以在创建表结构查询。

如下:

show create table user\G

实际上,MySQL在内部其实会将我们的语句,存储成上表显示的样子。 


1.3 修改表


修改表的 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 列名 新列名 新列属性;


先看一下表中原有的信息:

1)我们现在要新增一列。

指令:

alter table table_name add 列名与列的属性;

我们也是可以指定新增列的位置,使用after即可,后接列名,表示的是新增列放在那一列后面。

如果想要将新增列放在第一列,可以将after及其之后的语句换成 not null first。 

2)我们要删除某一列

 

3)我们要修改某一列。

例如,我们想将path路径可容纳字符数,提到更高的数量。

 

关于修改操作,大家可以就像在创建表时那样,对结构进行操作。

4)我们想要修改列名

 当然对列属性进行修改也是该语句,大家可以直接使用该语句对列名与属性同时修改。

5)我们想要对整张表名修改


1.4 删除表

删除表
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;

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

当然在普通情况下,我们肯定没有必要专门创建一个临时表。

演示:


总结:

不过,仅仅学会“建库建表”还不够——字段的数据类型直接影响数据的存储效率、查询性能以及业务逻辑的严谨性。例如,为什么有的字段要用INT而不是VARCHARDATETIMETIMESTAMP有何区别?如何避免因类型选择不当导致的数据错误或资源浪费?

在下一讲《MySQL 第四讲——基础篇:数据类型》中,我们将深入探讨这些问题。

下一讲预告
《MySQL 第四讲——基础篇:数据类型》
关键词:数值类型、字符类型、日期时间、枚举与集合、类型选择优化

我们下期见。

http://www.xdnf.cn/news/5046.html

相关文章:

  • 华为防火墙双机热备(负载分担)
  • U9C-SQL-调出单视图
  • 小厂golang面经
  • Delphi12安装Android开发的配置
  • 盖雅工场人效飞轮数字化套件入选36氪AI原生应用创新案例
  • Path to Integer_ABC402分析与解答
  • 理解 Envoy 的架构
  • MIMO 检测(1)--接收机模型
  • leetcode0310. 最小高度树-medium
  • 高频数据结构面试题总结
  • [AI Tools] Dify 平台插件开发全解:如何构建 Tools 插件并解析输出逻辑
  • RT-Thread 深入系列 Part 2:RT-Thread 内核核心机制深度剖析
  • 将 iconfont 图标转换成element-plus也能使用的图标组件
  • Spring Cloud 以Gateway实现限流(自定义返回内容)
  • 经过多年发展,中国机械工业已经具备了独特的国际比较优势
  • 鱼眼摄像头(一)多平面格式 单缓冲读取图像并显示
  • DeepSeek“智”造:解锁旅游行业新玩法
  • 【Spring AI 实战】基于 Docker Model Runner 构建本地化 AI 聊天服务:从配置到函数调用全解析
  • 手撕红黑树的 左旋 与 右旋
  • 全球首套100米分辨率城市与农村居住区栅格数据(2000-2020)
  • AI文旅|暴雨打造旅游新体验
  • 如何优化系统启动时间--基于米尔瑞萨MYD-YG2LX开发板
  • linux ptrace 图文详解(八) gdb跟踪被调试程序的子线程、子进程
  • Python 中方法命名中下划线的使用规则
  • 深入解析:思维链模型在大语言模型中的应用与实践
  • 力扣-21.合并两个有序链表
  • 抓取大站数据与反爬策略
  • 掌握单元测试:提升软件质量的关键步骤
  • 基于HTML+JavaScript+CSS实现教学网站
  • 免布线视频桩:智慧城市停车降本增效的破局利器