本节目标,即完成对MySQL查询模块的详细分析解读
文章目录
1、基本的select语句
注意:SQL语言大小写不敏感、可以写在一行或者多行、关键字不能被缩写或是分行、各子句一般要分行写、使用缩进提高语句的可读性。
- 查询全部列的全部数据
- 查询指定列的全部数据
- 列的别名=>主要是用于修改数据展示的列的表头,如刚刚上面查询的username,我给他设置成name
(1)用法:一般是 需要查询的列名 as 想取的列名(其中as也可以省略,建立留着,提高代码可读性)
- 字符串:其中日期和字符只能在单引号中出现
- 显示表结构:describe 表名
2、过滤和排序数据
过滤:可以理解为把不满足条件的筛选掉
- 例如,查询刚刚person表中名字为谭笑生的个人信息=>where即是过滤,一定放在from之后
2.1、常用运算:以product表为例
- 查询价格在100 到 1000之间的商品:用between … and …
- 查询索尼和松下的商品:用in
- 模糊查询:用like
(1)%代表任意字符:例子查询价格首字母为数字9的商品
(2)_代表一个字符:例子查询价格第三个字母为9的商品
- null:判断空值
2.2逻辑运算
- and(要求并的关系为真):例子查询价格大于1000且品牌为罗技的商品
- or(要求或的关系为真):例子查询索尼或松下的产品 => 神似in,注意理解
- not in(不包含):与in形成相反对比,这里就不做过多描述
2.3、排序数据
- order by子句:放在selec的结尾
(1)asc 升序(不写默认升序):例子将商品价格按照升序排序
(2)desc降序
3、分组函数 及 分组查询
3.1、分组函数
概述:作用于一组数据(即一列),并对一组数据返回一个值
-
AVG(平均数):查询商品价格的平均值,其他同理
-
COUNT(个数)
-
MAX(最大值)
-
MIN(最小值)
-
SUM(总数)
3.2、分组查询
- 找出id为1和id为2的笔的平均价格,这个时候我们就要用到AVG函数,并且要分组,即按照id分组
- 注意:不能再where中使用组函数,可以在having中使用
- having子句:例子找到商品平均价格大于10块的商品
4、多表查询
4.1、笛卡尔积
- 产生条件:
(1)省略连接条件
(2)连接条件无效
(3)所有表中的所有行互相连接
- 避免:可以在where中加入有效的连接条件
4.2、等值连接
注意点:
- 在where中写入连接条件
- 表中含有相同列的时候,在列名之前加上表名的前缀
- 表的别名:用现有名字 as 想改的名字
- 连接n个表:至少需要n-1个条件
4.3、join连接
分类:
-
内连接:(inner) join on
-
外连接
(1)左外连接:left join on
(2)右外连接:right join on
- 多表连接