【MySQL】—— 数据库 增删查改 练习(基础)(下)

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

条件查询

运算符

  1. >, >=, <, <= 大于,大于等于,小于,小于等于
  2. = 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL
  3. <=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
  4. !=, <> 不等于
  5. BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
  6. IN (option, ...) 如果是 option 中的任意一个,返回TRUE(1)
  7. IS NULL 是 NULL
  8. IS NOT NULL 不是 NULL
  9. LIKE模糊匹配 % 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符
  10. AND 多个条件必须都为 TRUE(1),结果才是 TRUE(1)
  11. OR 任意一个条件为 TRUE(1), 结果为 TRUE(1)
  12. NOT 条件为 TRUE(1),结果为 FALSE(0)

selcet 的后面加上一个where 字句,后面跟上一个具体的筛选条件
语法;select 列名 from 表名 where 条件;

(>,>=,<,<=)这一组是比较熟悉的大小操作,= 表示比较相等,而不是赋值。注意:NULL = NULL 结果仍然是 NULL,条件是不成立的。
<=>)也是比较相等,用法和 = 基本一直,只是 使用 <=> 比较空值结果是 真。NULL <=> NULL 进行比较,结果就是真。

  1. where条件可以使用表达式,但是不能使用别名
  2. and 的优先级高于 or 在同时使用时,需要使用小括号()包裹优先执行的部分

比较查询

-- 查询英语不及格的同学及英语成绩 ( < 60 )
mysql> select id, name, english from exam where english < 60;
+------+-----------+---------+
| id   | name      | english |
+------+-----------+---------+
|    1 | 刘备      |    40.9 |
|    2 | 关羽      |    30.8 |
|    3 | 大乔      |    30.8 |
|    6 | 孙尚香    |    10.0 |
|    7 | 小乔      |     4.3 |
+------+-----------+---------+
5 rows in set (0.00 sec)

-- 查询语文成绩好于英语成绩的同学
mysql> select id, name, chinese, english from exam where chinese > english;
+------+-----------+---------+---------+
| id   | name      | chinese | english |
+------+-----------+---------+---------+
|    1 | 刘备      |    90.1 |    40.9 |
|    2 | 关羽      |    90.1 |    30.8 |
|    3 | 大乔      |    99.0 |    30.8 |
|    4 | 吕布      |    80.5 |    70.2 |
|    6 | 孙尚香    |    99.0 |    10.0 |
|    7 | 小乔      |    98.0 |     4.3 |
+------+-----------+---------+---------+
6 rows in set (0.00 sec)

-- 查询总分在 200 分以下的同学
mysql> select id, name, chinese + math + english as totle from exam where chinese + math + english < 200;
+------+-----------+-------+
| id   | name      | totle |
+------+-----------+-------+
|    2 | 关羽      | 181.2 |
|    6 | 孙尚香    | 121.1 |
+------+-----------+-------+
2 rows in set (0.00 sec)

and与or

-- 查询语文成绩大于80分,且英语成绩大于80分的同学
mysql> select id, name, chinese, english from exam where chinese > 80 and english > 80;
+------+--------+---------+---------+
| id   | name   | chinese | english |
+------+--------+---------+---------+
|    5 | 貂蝉   |    80.5 |    90.3 |
|    8 | 孙权   |    85.0 |    87.0 |
+------+--------+---------+---------+
2 rows in set (0.00 sec)


-- 查询语文成绩大于80分,或英语成绩大于80分的同学
mysql> select id, name, chinese, english from exam where chinese > 80 or english > 80;
+------+-----------+---------+---------+
| id   | name      | chinese | english |
+------+-----------+---------+---------+
|    1 | 刘备      |    90.1 |    40.9 |
|    2 | 关羽      |    90.1 |    30.8 |
|    3 | 大乔      |    99.0 |    30.8 |
|    4 | 吕布      |    80.5 |    70.2 |
|    5 | 貂蝉      |    80.5 |    90.3 |
|    6 | 孙尚香    |    99.0 |    10.0 |
|    7 | 小乔      |    98.0 |     4.3 |
|    8 | 孙权      |    85.0 |    87.0 |
+------+-----------+---------+---------+
8 rows in set (0.00 sec)

范围查询

-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
mysql> select id, name, chinese from exam where chinese between 80 and 90;
+------+--------+---------+
| id   | name   | chinese |
+------+--------+---------+
|    4 | 吕布   |    80.5 |
|    5 | 貂蝉   |    80.5 |
|    8 | 孙权   |    85.0 |
+------+--------+---------+
3 rows in set (0.00 sec)

in 查询

-- 查询数学成绩是 99.0 或者 60.3 或者 70.3 的同学及数学成绩
mysql> select name, math from exam where math in (99.0, 60.3, 70.3);
+--------+------+
| name   | math |
+--------+------+
| 刘备   | 70.3 |
| 关羽   | 60.3 |
| 大乔   | 70.3 |
| 小乔   | 99.0 |
+--------+------+
4 rows in set (0.00 sec)

模糊查询 like

like 搭配通配符来使用,只要对方的字符串符合你此处的描述的一个形式就行.
% 代表任意个任意字符~
_ 代表任意一个字符

此处这里的'孙%'就能匹配到任意 孙 开头的字符串,其他的类型于这样的名字也能匹配到.
比如: ,或者 孙sadsadasda
但是类似于 这种就匹配不到:aaa孙aaa,bbb孙

-- % 匹配任意多个(包括 0 个)字符
mysql> select id, name from exam where name like '孙%';
+------+-----------+
| id   | name      |
+------+-----------+
|    6 | 孙尚香    |
|    8 | 孙权      |
|    9 | 孙策      |
+------+-----------+
3 rows in set (0.00 sec)


-- _ 匹配严格的一个任意字符
mysql> select id, name from exam where name like '孙__';
+------+-----------+
| id   | name      |
+------+-----------+
|    6 | 孙尚香    |
+------+-----------+
1 row in set (0.00 sec)

mysql> select id, name from exam where name like '孙_';
+------+--------+
| id   | name   |
+------+--------+
|    8 | 孙权   |
|    9 | 孙策   |
+------+--------+
2 rows in set (0.00 sec)


-- 语文成绩以9开头并且姓为孙
mysql> select id, name, chinese from exam where name like '孙%' and chinese like '9%';
+------+-----------+---------+
| id   | name      | chinese |
+------+-----------+---------+
|    6 | 孙尚香    |    99.0 |
+------+-----------+---------+
1 row in set (0.00 sec)

null查询

语法:select 列名 from 表名 where 条件
查找语文成绩为空的同学信息:
【MySQL】—— 数据库 增删查改 练习(基础)_增删查改_02

注意:这里 比较 NULL 是不能用 = 的, = 是无法比较的,结果是 假,如果要比较空 只能用 <=> 比较

或者 这样写 也可以

【MySQL】—— 数据库 增删查改 练习(基础)_数据库_03

-- 查成绩为null的同学
mysql> select id, name, chinese + math + english as totle from exam where chinese + math + english <=> null;
+------+--------+-------+
| id   | name   | totle |
+------+--------+-------+
|    9 | 孙策   |  NULL |
|   10 | 刘禅   |  NULL |
+------+--------+-------+
2 rows in set (0.00 sec)

分页查询

SQL中可以通过 limit 来实现分页查询
语法:select 列名 from 表名 limt 值(数字)

-- 查询成绩前三 0-3
mysql> select * from exam order by chinese + math + english desc limit 3;
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    5 | 貂蝉   |    80.5 | 87.6 |    90.3 |
|    8 | 孙权   |    85.0 | 77.0 |    87.0 |
|    1 | 刘备   |    90.1 | 70.3 |    40.9 |
+------+--------+---------+------+---------+
3 rows in set (0.00 sec)


-- 查询成绩4~6 4-6
-- offset 可以想成数组下标一样
mysql> select * from exam order by chinese + math + english desc limit 3 offset 3;
+------+--------+---------+------+---------+
| id   | name   | chinese | math | english |
+------+--------+---------+------+---------+
|    7 | 小乔   |    98.0 | 99.0 |     4.3 |
|    4 | 吕布   |    80.5 | 50.3 |    70.2 |
|    3 | 大乔   |    99.0 | 70.3 |    30.8 |
+------+--------+---------+------+---------+
3 rows in set (0.00 sec)


-- 查询  limit  或者 offset  过大也不会报错
mysql> select * from exam order by chinese + math + english desc limit 300 offset 300;
Empty set (0.00 sec)

【MySQL】—— 数据库 增删查改 练习(基础)_MySQL_04


修改

语法:update 表名 set 列名 = 值,列名 = 值 where 条件
注意:这里的 set不能省略的,where 条件—指的是针对哪些进行修改,符合条件的就会修改,不符合条件的就不变,如果这里的 where 省略了,就是修改所有记录.
update 是会修改数据库 服务器 上面原始数据的!

-- 将孙权同学的数学成绩变更为 80 分
-- Rows matched 表示where涉及到几行  Changed: 1表示改了几行 Warnings: 0表示出错多少
mysql> update exam set math = 80 where name = '孙权';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0


-- 将总成绩倒数前三的 3 位同学的数学成绩加上 10 分
mysql> update exam set math = math + 10 order by chinese + math + english asc limit 3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 3  Changed: 1  Warnings: 0

删除

-- 删除 刘备的成绩
mysql> delete from exam where name = '刘备';
Query OK, 1 row affected (0.01 sec)

-- 删除整张表的数据
mysql> delete from test_exam;
Query OK, 0 rows affected (0.00 sec)

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
25 1
|
12天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
28 4
|
19天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
87 1
|
6天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
51 0
|
20天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
131 6
|
1月前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
61 3
Mysql(4)—数据库索引
|
1月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
71 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
21天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
62 2
|
24天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
92 4