MySQL 表的增删查改(基础)(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL 表的增删查改(基础)

一、插入

       在SQL语句中,插入数据使用的关键字是insert

insert into  表名 values(value,value...);

  (1)一次插入一条记录

(2)指定列插入记录

指定列查询,需要在表名后面加上 列名

insert into  表名 (列名) values(value,value...);

  (3)插入多条记录

insert插入语句还可以一次插入多行,每条记录用逗号隔开

insert into  表名 values(value,value...),(value,value...)...;

一次插多条记录比一次插一条记录,分多次插入效率更高!!!

往数据库中插入记录也不是单纯的就往硬盘里一写就完事了,也是要做一些额外的工作的,一次插入多条记录只做一次额外工作,而插入多次记录要做多次额外的工作。

二、查询

 SQL 中是使用select 关键字,表示查询

(1)全列查找

select * from 表名;

* 称为通配符,表示所有的列

上述全列查询,其实是一个危险操作!!!

select * 操作,会让服务器大规模的读取磁盘上的数据,在把数据通过网卡写会到客户端

如果当前存储的数据量级非常大,就会导致读磁盘和写网卡的时间非常长,甚至于把 磁盘带宽 和 网卡 都吃满!!

 (2)指定列查询

select 列名 form 表名;

这里要求和表中的列名匹配,可以同时写多个列名,中间使用,分割。

相比于上述 select * 来说,指定列查询传输数据量少了不少!!!

思考:这里的查询只能看见两列,是否以为着其他的列就被删除了呢?

📍 在查询过程中,客户端这里显示的内容只是一个 临时表 ! 临时表是根据服务器的数据生成的!!! 所有查询操作,都不会影响服务器磁盘上是数据。

 (3)查询字段为表达式

一遍查,一遍计算      

1.对列进行计算

这里只是影响到临时表的数据展示!!对于数据库服务的原有数据没有温和影响!!!  

2.列和列之间进行计算

如果我们想要求 学生成绩 综合,我们就可以把所有列加到一起。

注意:

1、我们不能拿字符串跟数字相加,不然会报警告

拓展:我们可以通过 show warinings; 来查看警告信息!

2、查询结果,是“临时表”的数据类型,其不一定和原始的标一模一样,会尽量保证数据的正确有效性。

3.给查询结果的列起别名

在上述表达式查询过程中,临时表的列名,也就是表达式的内容,有时候比较长可读性不高,因此 SQL 允许在进行查询的时候,给临时表的列 指定 别名!

select 表达式 as 别名 from 表名;

as 可以省略,但是 代码可读性不高,容易把 total 误以为是 表达式中的一部分。

 (4)去重查询

       distinct 关键字,修饰某个列,针对这列的数据进行去重!!会把重复的记录,合并成一个!!

去重操作,也可以针对多个列进行。

多列去重条件:当多多个列都是相同的时候,才会去重!!

 (5)排序查询

       排序查询结果,使用 order by 关键字(默认为升序)!!

select 列名 表名 order by 列名1;//指定按照列名1进行排序  ~~ 默认为升序

🔻如果想要进行降序排序,在最后加上一个 desc 来表示~~

这里大家不要跟 desc 描述表结构关键字弄混


desc  tables;// 描述表的结构   describe


select * from exam_result order by Chinese desc; // 排序降序  descend

🔺与 desc 对应的就是 asc 升序,但是order by 默认就是升序,所以asc 加上没啥意义。


order by 既然能根据一个列排序,那必然也能根据多个列进行排序。


select 列名 from 表名 order by 列1 , 列2...;

多列排序规则:先根据 列1 进行排序,如果 列1 有数据重复,则根据 列2 排序,一次类推。

例如:对 数学 和 语文 进行排序,先根据 数学成绩 排序,遇到相同的数学成绩,在根据 语文成绩 进行排序。

💨而上述是升序排列,而对多列进行降序排列,那我们加多个 desc

(6)条件查询

       查询的时候指定筛选条件~ 用 where 关键字 来表示条件!、

select * from 表名 where 条件;

条件相当于是针对表,进行遍历~

依次取出每一条记录,带入条件,进行计算,看条件是 true 还是 false

条件成立,就把记录留下来放到结果中!

在SQL中提供一些条件运算符,分为两类:比较运算符和逻辑运算符

🌒比较运算符:

运算符 说明
>, >=, <, <= 大于,大于等于,小于,小于等于
= 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=, <> 不等于
BETWEEN a0 AND
a1
范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...) 如果是 option 中的任意一个,返回 TRUE(1)
IS NULL 是 NULL
IS NOT NULL 不是 NULL
LIKE 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字

🌘逻辑运算符:

运算符 说明
AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT 条件为 TRUE(1),结果为 FALSE(0)

下面根据不同的条件进行举例讲解

  • 基本查询(大于、小于、不等于)

 🧡 ' < ' : 查询英语成绩 不及格的同学

💛' > ' : 查询语文成绩好于英语成绩的同学,总分大于 200 的学生

这里要注意一点,where 中条件不能写 我们重新命名的列,不然会报错

这里要注意一点,where 中条件不能写 我们重新命名的列,不然会报错


💚' = ' ' <=> ' : 查询语文成绩等于数学成绩的人

注意:‘ = ’ 只能比较非空值,如果比较 null 和 null 那结果就为 null

例如:我向表中插入  insert into exam_result values('9','公孙燕',null,null,null); 这行代码

再用 ‘=’ 进行查询

大家不难发现,没有公孙燕这一行

但是我用 ‘<=>’ 进行比较时,这一行就会出现

这个两个运算符的特点,希望大家能够记住

  • and 与 or

 💙' and ' : 查询语文成绩大于80分,且英语成绩大于80分的同学

 🤎' or ' : 查询语文成绩大于80分,或英语成绩大于80分的同学

❗注意:在SQL中 and 的优先级 比 or 更高,当一个条件里同时有 and 和 or 的时候,先算 and。

  • 范围查询

 💕' between...and... ' : 查询语文成绩在 [80, 90] 分的同学及语文成绩

 💗' in ' : 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

 🤍 ' like'  模糊查询

       like 模糊查询,依赖一些 通配符 来表示要匹配的值是啥样的~

select 列名 from 表名 where 列名1 like '通配符+文字';

通配符主要分为两种

% 匹配任意多个(包括0个)字符
_ 匹配严格的一个任意字符

例如:查找姓 ‘孙’ 的人(匹配以 ‘孙’ 开头的)

‘%孙’ 匹配以 ‘孙’ 结尾的

‘%孙%’ 匹配内容包含‘ 孙’

查询以  ‘孙’ 开头,名字字数为 2 的人

 查询以  ‘孙’ 开头,名字字数为 2 的人那就是 '孙__'。

 💟null 的查询

       查询 null 我们可以用 is null, 查询非 null 可以用 is not null

例如:查询语文成绩为空的人

查询数学成绩非空的人

注意:查询 null 值时不能用 = 而要用 <=>,用 = 的话 会判断为假。

例如 a = b: 等号会先判断 a 和 b 是否为null,为空表达式直接为假。若不为空,则判断 a 是否等于 b,等于为真,否为假。

 (7)分页查询  

   分页查询 用 limit 关键字

select 列名 from 表名 limit N; -- 查询前 N 条记录
select 列名 from 表名 limit N offset M; -- 从第 M 条记录开始,查询 N 条记录(M从0开始算)

例:查询前三条记录

从第三条开始,查询三条记录

上述查询方式是可以结合在一起使用的~~

例:找出总成绩三名,且姓名不为 猪悟能

select name,Chinese + math + English as total from exam_result where name !='猪悟能' order


这里 我们需要注意一点,一般 where 是紧跟 from 后面, order by 在where 后,limit 在最后

select 列名 from 表名 (where 条件) (order by 列名 (desc)) (limie N);


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
29天前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
29天前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
1月前
|
运维 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在处理MySQL表新增数据记录时,没有正确触发变更事件,该如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
关系型数据库 MySQL
蓝易云 - 如何修复MySQL中损坏的表
最后,为了防止数据丢失,定期备份数据是非常重要的。
131 3
|
2月前
|
SQL 关系型数据库 MySQL
ClickHouse(23)ClickHouse集成Mysql表引擎详细解析
ClickHouse的MySQL引擎允许执行`SELECT`查询从远程MySQL服务器。使用`MySQL(&#39;host:port&#39;, &#39;database&#39;, &#39;table&#39;, &#39;user&#39;, &#39;password&#39;[,...])`格式连接,支持简单`WHERE`子句在MySQL端处理,复杂条件和`LIMIT`在ClickHouse端执行。不支持`NULL`值,用默认值替换。系列文章涵盖ClickHouse安装、集群搭建、表引擎解析等主题。[链接](https://zhangfeidezhu.com/?p=468)有更多
103 0
|
2月前
|
SQL 缓存 关系型数据库
MySQL操作全攻略:库、表、数据、事务全面指南
MySQL操作全攻略:库、表、数据、事务全面指南
|
2月前
|
SQL 关系型数据库 MySQL
经验大分享:MySQL(三)数据库表的查询操作【重要】
经验大分享:MySQL(三)数据库表的查询操作【重要】
35 0
|
2月前
|
存储 SQL 关系型数据库
【MySQL技术内幕】4.1-索引组织表
【MySQL技术内幕】4.1-索引组织表
23 0
|
2月前
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之新创建的工作空间,任务提交了,但是周期实例里面没任何数据,是什么导致的
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。