javaweb实训第四天上午——MySQL基础(4)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 5.2.2 逻辑运算

javaweb实训第四天上午——MySQL基础(3)https://developer.aliyun.com/article/1414840

5.2.2 逻辑运算

20210528114841956.png

需求:

选择id,货品名称,批发价在300-400之间的货品

选择id,货品名称,分类编号为2,4的所有货品

选择id,货品名词,分类编号不为2的所有商品

选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200

5.2.3 优先级规则

20210528114859896.png注意: () 小括号跨越所有运算符优先级

5.2.4 范围查询-BETWEEN AND

使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。

语法:

SELECT <selectList>
FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

需求:

选择id,货品名称,批发价在300-400之间的货品

选择id,货品名称,批发价不在300-400之间的货品

5.2.5 集合查询- IN

使用IN运算符,判断列的值是否在指定的集合中。

语法:

SELECT <selectList>
FROM table_name
WHERE 列名 IN (值1,值2....);

需求:

选择id,货品名称,分类编号为2,4的所有货品

选择id,货品名称,分类编号不为2,4的所有货品

5.2.6 空值查询 IS NULL

IS NULL:判断列的值是否为空。

语法:WHERE 列名 IS NULL;

需求: 查询商品名为NULL的所有商品信息。

注意 : 列的值是 null 和空字符串不一样,如果是空字符串 应该 = “”

5.2.7 模糊查询 LIKE

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:

%:通配符:可表示零或多个任意的字符。

_:通配符:可表示任意的一个字符。

通配符:用来实现匹配部分值得特殊字符。


需求: >查询id,货品名称,货品名称匹配'%罗技M9_' 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配'%罗技M1__' ### 5.2.8 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配 ![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20210528115034715.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlYXJRaUhhbw==,size_16,color_FFFFFF,t_70)

需求:查找product_name字段中包含字母的所有数据:

5.3 结果排序

使用ORDER BY子句将结果的记录排序:

ASC : 升序,缺省–不写默认。

DESC: 降序。

ORDER BY 语句出现在SELECT语句的最后。

语法:

SELECT <selectList> 
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;

需求:


选择id,货品名称,分类编号,零售价并且按零售价降序排序

选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序

查询M系列并按照批发价排序(加上别名)

查询分类为2并按照批发价排序(加上别名)


注意:别名不能使用引号括起来,否则不能排序。

讨论&思考:

SELECT语句执行顺序?

5.4 分页查询 LIMIT

分页设计:

假分页(逻辑分页): 把数据全部查询出来,存在于内存中,翻页的时候,直接从内存中去截取.

真分页(物理分页): 每次翻页都去数据库中去查询数据.

假分页: 翻页比较快,但是第一次查询很慢,若数据过大,可能导致内存溢出.
真分页: 翻页比较慢,若数据过大,不会导致内存溢出.

语法:

SELECT * FROM table_name LIMIT ?,?;
SELECT * FROM table_name LIMIT beginIndex,pageSize;

第一个?: 表示本页,开始索引(从0开始).

第二个?: 每页显示的条数


规定:每页显示3条数据. pageSize = 3


第一页: SELECT * FROM product LIMIT 0, 3

第二页: SELECT * FROM product LIMIT 3, 3

第三页: SELECT * FROM product LIMIT 6, 3

第 N页: SELECT * FROM product LIMIT (N-1)*3, 3

5.5 聚集函数

定义:聚集函数作用于一组数据,并对一组数据返回一个值。

COUNT:统计结果记录数 如果列的值为null 不会计算在内的

MAX: 统计计算最大值

MIN: 统计计算最小值

SUM: 统计计算求和

AVG: 统计计算平均值 如果列的值为null 不会计算在内的

需求:


查询所有商品平均零售价

查询商品总记录数(注意在Java中必须使用long接收)

查询分类为2的商品总数

查询商品的最小零售价,最高零售价,以及所有商品零售价总和

5.6 分组查询 GROUP BY

可以使用GROUP BY 子句将表中的数据分成若干组,再对分组之后的数据做统计计算,一般使用聚集函数才使用GROUP BY.

语法格式:

SELECT  聚集函数或者分组的列
FROM table_name  
WHERE 条件
GROUP BY 列名
HAVING 分组之后的条件;

注意:GROUP BY 后面的列名的值要有重复性分组才有意义;

使用HAVING字句,对分组之后的结果作筛选;

不能在 WHERE 子句中使用组函数(注意);

可以在 HAVING 子句中使用组函数;


需求:


查询每个商品分类编号和每个商品分类各自的平均零售价

查询每个商品分类编号和每个商品分类各自的商品总数。

查询每个商品分类编号和每个商品分类中零售价大于100的商品总数:

查询零售价总和大于1500的商品分类编号以及总零售价和:

6 课程总结

6.1 重点

  1. 理解数据库管理系统、数据库、表之间的关系
  2. 正确安装MySql数据库与Navicat工具
  3. 掌握常用的列类型
  4. 掌握进入MySql库的方式(dos与Navicat两种方式)
  1. 会导入数据到数据库中
  2. 表的查询一定要多写多练 ★★★★★★★★★★★★★★★★★★★★★★★★★…

6.2 难点

1、安装数据库可能会失败

2、相关的概念,理解

7 常见面试题

1、常见的数据库有那些

2、数据库的存储引擎有哪些,区别是什么

8 每日一练

1、使用命令的方式创建一个数据库和一张表,表中至少有3种以上数据类型的列

9 课后练习

今天完成上课所有的查询操作,必须熟练对应的语法

以下是习题汇总:

需求: 查询所有货品信息

需求: 查询所有货品的id,productName,salePrice

需求: 查询商品的分类编号。

需求: 查询所有货品的id,名称和批发价(批发价=卖价*折扣)

需求: 查询所有货品的id,名称,和各进50个的成本价(成本=costPirce)

需求: 查询所有货品的id,名称,各进50个,并且每个运费1元的成本

需求: 查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)

需求: 查询商品的名字和零售价。格式:xxx商品的零售价为:xxx

需求: 查询货品零售价为119的所有货品信息.

需求: 查询货品名为罗技G9X的所有货品信息.

需求: 查询货品名 不为 罗技G9X的所有货品信息.

需求: 查询分类编号不等于2的货品信息

需求: 查询货品名称,零售价小于等于200的货品

需求: 查询id,货品名称,批发价大于350的货品

需求: 查询id,货品名称,批发价在300-400之间的货品(使用 and)

需求: 查询id,货品名称,分类编号为2,4的所有货品

需求: 查询id,货品名词,分类编号不为2的所有商品

需求: 选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200

需求: 查询id,货品名称,批发价在300-400之间的货品(使用between)

需求: 查询id,货品名称,批发价不在300-400之间的货品

需求: 查询id,货品名称,分类编号为2,4的所有货品

需求: 查询id,货品名称,分类编号不为2,4的所有货品

需求: 查询商品名为NULL的所有商品信息。

需求: 查询id,货品名称,货品名称匹配’%罗技M9_’

需求: 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配’%罗技M1__’

需求: 查询id,货品名称,分类编号,零售价并且按零售价降序排序

需求: 查询id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序

需求: 查询M系列并按照批发价排序(加上别名)

需求: 查询分类为2并按照批发价排序(加上别名)

需求:分页查询

每页最多3条记录: pageSize = 3:


第一页: 第二页: 第三页: 第四页: 第七页: 第N页: 需求: 查询所有商品平均零售价 需求: 查询商品总记录数(注意在Java中必须使用long接收) 需求: 查询分类为2的商品总数 需求: 查询商品的最小零售价,最高零售价,以及所有商品零售价总和 需求: 查询每个商品分类编号和每个商品分类各自的平均零售价 需求: 查询每个商品分类编号和每个商品分类各自的商品总数。 需求: 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数: 需求: 查询零售价总和大于1500的商品分类编号以及总零售价和:

远程连接失败:找到MySQL自带的数据库mysql> 表user > 把 localhost改成%10扩展阅读


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
7月前
|
存储 SQL 关系型数据库
javaweb实训第四天上午——MySQL基础(3)
4.3 表的操作 4.3.1 创建表 语法:
117 0
|
7月前
|
存储 关系型数据库 MySQL
javaweb实训第四天上午——MySQL基础(2)
3.2 启动和连接MySQL 3.2.1 启动MySQL服务
101 0
|
3月前
|
SQL 关系型数据库 MySQL
JavaWeb基础1——MySQL
SQL语句、DDL、DML、DQL(分组查询、子查询等)、Navicat、约束、 一对多等数据库设计、多表查询(联合查询/连接查询)、事务、函数
JavaWeb基础1——MySQL
|
6月前
|
Java 关系型数据库 MySQL
JavaWeb基础第一章(MySQL数据库与JDBC)
JavaWeb基础第一章(MySQL数据库与JDBC)
|
6月前
|
SQL 存储 关系型数据库
Javaweb - MySQL 精华篇
Javaweb - MySQL 精华篇
37 0
|
7月前
|
SQL Java 关系型数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
JavaWeb(JDBC编程)看这一篇就够了 —— 如何使用Java操作mysql数据库
294 0
|
5天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
23 3
|
5天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
28 3
|
5天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE &#39;log_%&#39;;`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
33 2
|
19天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
135 15