MySQL秘籍:让你的表操作炉火纯青

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 表操作

💕每个人都有自己的一生,不要和别人去比较。比较只会让你感到沮丧和不满足。关注自己的成长和进步,并享受属于自己的旅程。 💕
🐼作者:不能再留遗憾了🐼
🎆专栏:MySQL学习🎆
🚗本文章主要内容:学习MySQL的对表操作。查看表、创建表、删除表,对表进行增删改查🚗
在这里插入图片描述

@[toc]

前言

前面我们已经基本了解了什么是MySQL、MySQL的发展以及MySQL的对库操作初识MySQL,那么今天我为大家分享的是MySQL中重要的对表操作。

显示数据库里的所有表

在进行表操作的之前,首先需要建立在库的基础上,因为我们的表是包含在库中的,所以我们需要先创建一个库,然后选中该库,表明对该库进行操作。

在这里插入图片描述

当选中库之后,使用 ==show tables== 来显示表。

在这里插入图片描述

因为这里我们并没有创建表,所以显示的为空

创建表

使用 ==create table 表名 (列名,类型);== 创建表。

要想创建表就需要知道MySQL的通用数据类型有哪些。
在这里插入图片描述

不同数据库的基本数据类型
在这里插入图片描述

然后我们选择合适的数据类型来创建表。
在这里插入图片描述

查看指定表结构

使用 ==desc 表名;== 查看指定表的表结构。

在这里插入图片描述
在这里插入图片描述

删除表

使用 ==drop table 表名== 删除表。
在这里插入图片描述

==注意这里删除表操作跟删除库操作一样,要十分小心,否则可能会出现很严重的问题。==

注释

MySQL跟其他编程语言都一样,都可以对源码进行注释。MySQL进行注释的方法有三种:
1.使用 ==comment== 关键字进行注释
2.使用 ==“--空格+描述”来表示注释说明== 来进行注释,- -
3.使用 ==#== 进行注释

在这里插入图片描述
在这里插入图片描述

==并且这个这个注释只是会出现在你的源代码中,不会存储到数据库中。==

对表进行增删改查

1.新增数据

单行数据,全列插入

使用 ==insert (into) 表名 values (值,值);== 新增数据,这里的into是可以省略的,但是不建议省略。

在这里插入图片描述
但是这里为什么会出现错误呢?很简单,因为这里默认的字符集是不支持汉字的,所以我们在创建库的时候需要指定字符集。
==平时常用的字符集包括:
gbk 两个字节表示一个汉字
utf8 三个字节表示一个汉字(更通用)==

在这里插入图片描述
在这里插入图片描述
这里 ==select * from student== 是全列查询,我们先使用,后面再分析,知道是查询列就行了。

单行数据,指定列插入

不仅如此,我们还可以指定列插入,使用 ==insert into 表名 (列名,列名) values (值,值);== 进行指定列插入。

在这里插入图片描述

多行数据插入

那么当我们想要插入多组数据的时候,难道我们要一组一组的添加吗?当然不是,我们可以一次添加多个数据。使用 ==insert into 表名(列名,列名) values (值,值),(值,值);== 进行多个数据的插入,可以搭配着指定列插入。

在这里插入图片描述
这里一次插入多个数据跟一次插入一个数据来说,效率提高了不少,因为 ==一次插入N个记录(只需要客户端和服务器交换一次);分N次插入,一次插入一个记录(需要客户端与服务器交互N次);== 客户端与服务器发生交互是需要时间的,所以一次插入多组数据大大节省了时间。

特殊类型:时间的插入

当我们想要插入数据的时候,只需要注意该信息所对应的数据类型就行了,但是都是这样的吗?有一个例外:时间的插入。==时间的插入需要特定格式的字符串来插入,比如说要插入一段时间,我们需使用datetime类型,并且插入使用 '2023-05-31 23:35:30',年月日之间用' - '隔开,时分秒之间用' : '隔开,时分秒与年月日用’ ‘隔开。==

在这里插入图片描述
在这里插入图片描述
MySQL还提供了一个函数来表示当前时间。==now()== 表示当前时间。
在这里插入图片描述

2.查询数据

服务器会根据请求的sql查询保存的数据,把数据读取出来通过为网络返回给客户端,生成一个“临时表”(结果集)。

我们创建一个新的表来分析查询数据
在这里插入图片描述
在这里插入图片描述

全列查询

前面我们已经使用了全列查询: ==select * from 表名;== 。使用全列查询可以将表中的所有列都给显示出来。

" "叫做通配符,可以理解为扑克牌中的赖子,不考虑大小王,赖子可以代替任何牌,所以这里" "就可以理解为所有。

在这里插入图片描述

指定列查询

当数据量非常大的时候,使用 select * from 表名 操作可能会发生危险,因为服务器需要从数据库中短时间内读取出大量的数据,瞬间吃满硬盘带宽和网络带宽,导致其它程序无法使用硬盘或者网络。

那么我们可以只读取我们需要的列,而不是读取出所有列。
==select 列名,列名··· from 表名;==,指定列读取数据。
在这里插入图片描述

查询字段为表达式

在查询数据的时候,我们可以将列于列之间进行计算之后再显示出来,也可以是单列进行计算,==需要注意是列与列之间的运算,不是行与行之间的计算。==

😊 单列之间的计算
在这里插入图片描述
这里可能有人会问了,我创建表的时候不是定义了decimal(3,1)吗,那么这里的位数都超过3了,为什么还能显示出来呢?
答:前面我们说过我们看到的表只是一个临时表,跟数据库中的表其实并没有什么关系,所以临时表的数据类型取决于默认数据类型。

👨‍🦱列与列之间的计算
在这里插入图片描述
通过上面的图片我们可以知道,新的列名是我们进行计算的表达式。
但是我们可以看到这个列名chinese + math + english属实不好看且不直观,那么我们是否有办法可以使展示的列名好看又直观呢?

别名

使用 ==select 列名,列名 as 别名 from 表名;== 来使显示出来的列名改为我们的别名。这里的as可以省略,但还是建议不省略。
在这里插入图片描述

去重

我们可以使用 ==select distinct 列名 from 表名;==,来指定列进行去重,只保留一个数据。

在这里插入图片描述

查询结果排序

使用 ==select 列名 from 表名 order by 列名 desc(asc);== ,后面的desc表示按降序排列,asc按升序进行排列。排序查询可以结合前面的指定列查询、别名、去重和表达式查询使用。

在这里插入图片描述
不仅如此,查询结果排序还可以指定多个列,在这多个列中分主次地位,也就是说他们所占的权重是从大到小的。按降序排列,就算你A后面的列大于B的列,但是你前面的列B大于A,那么B就排序在A的前面。

在这里插入图片描述
如果两个人的数学成绩相同,那么就接着比较语文成绩,如果语文成绩也相同的话就在比较英语成绩。

条件查询

==select 列名 from 表名 where 子句;== 在查询的时候指定查询条件,符合条件的数据留下,不符合的就跳过。

在使用条件查询之前,我们需要知道MySQL中有哪些比较运算符和逻辑与算符。

🎁比较运算符
在这里插入图片描述
🎁逻辑运算符
在这里插入图片描述

基本查询

在这里插入图片描述
在这里插入图片描述
这里可能会有人问了,既然我前面的chinese + math + english已经别名为total了,那么我的where后面可以将chinese + math + english换成total吗?
在这里插入图片描述
答案是不可以的,我们看报错可以知道,这里根本就不认识total,这是为什么呢?我前面不是重命名了吗?那是因为 ==sql命令是先执行where条件,然后再执行前面的select语句==,所以在执行where条件的时候total并未定义。

and 与 or

and 与 or就类似于c语言和Java的&& 和 || ,是并且和或者的意思。
🎁and
在这里插入图片描述
🎁or
在这里插入图片描述

范围查询

==between A and B== ,查询出数据在A到B之间的数据,注意这里的范围是左闭右闭,A <= C <= B

在这里插入图片描述

in

如果我们需要查询出数学成绩为65、84、85的同学,该怎么办呢?我们可以使用 or 。
在这里插入图片描述
如果数据少的话,我们这样写倒无所谓,但是如果数据多的时候呢?我们难道也是一个or一个or写吗?很显然是不方便的,所以就有 in 来解决这个问题。
在这里插入图片描述

模糊查询

当我们需要找出姓孙的人,而不是每一个具体的人时,我们就可以使用模糊查询。MySQL的模糊查询是使用 ==like== 关键字,用 ==%== 代表任意0个或者N个字符, ==_== 代表1个字符。
🎁 % 表示1个或者多个字符
在这里插入图片描述
🎁 _ 表示1个字符
在这里插入图片描述

null查询

如果我们需要查询出没有考试数学的人也就是数学成绩为null的人怎么办?

在这里插入图片描述
根据上面的图我们可以知道,通过' = '来判断是否为null是不行的,那么我们应该如何判断null呢?
==1. <=>

  1. is null 和 is not null==
    在这里插入图片描述

    分页查询

    当表中的数据太多的时候,如果我们将他从全部展现出来的时候,不光人看不过来,系统方面的压力也是特别大的,那么我们应该如何解决呢?
    在这里插入图片描述
    这个分页我们都见过吧,就是如此,我们每个表出现的数据可以使用 ==limit== 来限制数据的个数。

在这里插入图片描述
limit当然也可以搭配前面的几种查询使用。
在这里插入图片描述
limit还可以搭配offset使用,查询从第几个开始的几个数据。
在这里插入图片描述

3.修改

==update 表名 set 列名 = 值 where 子句==
在这里插入图片描述

4.删除

==delete from 表名 where 子句==
在这里插入图片描述
==记住这里的where条件要设置好,如果没有where和limit限制,那么这个表中的数据都会被删除,只剩下一个空表了。==

结语

MySQL数据库的每一个操作都是很危险的,大家在操作的时候一定要小心再小心,如果你的操作失误并且sql命令执行时间较长的时候,可以及时使用按CTRL+C取消命令,这样可以尽量降低损失。

最后,祝大家儿童节快乐,在这个六一儿童节,愿你们的内心依然保持着童真,享受着生活的美好,永远拥有一个快乐的童年!

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
67 4
|
4月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
60 0
|
4月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
47 2
|
4月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之运行mysql to doris pipeline时报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之整库同步mysql到starRock提交任务异常,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
SQL Java 数据库
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作
MySQL设计规约问题之为什么应尽量避免使用子查询,而可以考虑将其优化为join操作
|
4月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
4月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
4月前
|
分布式计算 DataWorks 关系型数据库
MaxCompute操作报错合集之配置mysql数据源querysql模式,同步到MC时遇到报错,该怎么处理
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
下一篇
无影云桌面