javaweb实训第四天上午——MySQL基础(3)https://developer.aliyun.com/article/1414840
5.2.2 逻辑运算
需求:
选择id,货品名称,批发价在300-400之间的货品
选择id,货品名称,分类编号为2,4的所有货品
选择id,货品名词,分类编号不为2的所有商品
选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200
5.2.3 优先级规则
注意: () 小括号跨越所有运算符优先级
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 重点
- 理解数据库管理系统、数据库、表之间的关系
- 正确安装MySql数据库与Navicat工具
- 掌握常用的列类型
- 掌握进入MySql库的方式(dos与Navicat两种方式)
- 会导入数据到数据库中
- 表的查询一定要多写多练 ★★★★★★★★★★★★★★★★★★★★★★★★★…
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扩展阅读