4.12group by 子句查询
group by(列名) 根据行的值来进行分组,将行相同值分为一组
我们先执行group by(列名)后在执行前面的操作
我们可以执行where语句来进行条件查询
4.1.3having
having查询语句时时在group by 分组后进行条件查询
我们也可以用where 和 having来进行搭配条件查询
4.2联合查询(多表查询)
实际开发中往往数据来自不同的表,所以需要多表联合查询。多表查询是对多张表的数据取笛卡尔积:
也就是将两个表每一行和另一表的每一行进行联合查询
如下
在查询中我们会发现有我们不需要的数据,这样我们就可以来进行where来筛选查询
4.2.1内链接
我们先创建一些表
我们在多表查询的会发现有很多数据时多余的
例如我们可来查询许仙的成绩
利用select 列名,列名from(表名)join(表名) on 条件
join on 和where 应用类似(join on了解即可,一般我们使用两个表查询情况下更多会使用where)
我们来进行多表查询
rom 表名 join 表名 on 条件 join 表名 on 条件
4.2.2外连接
我们发现join on 这个条件很麻烦,容易出错
其实我们可以用join on来构造其他链接
select 列名,列名from(表名) inner join(表名) on 条件
select 列名,列名from(表名) left join(表名) on 条件
select 列名,列名from(表名) right join(表名) on 条件
我们来创建两个列与列没有相关联的表
当我们进行联合查询
当我们进行where语句查询后会发现我们有一些需要的数据会丢失
select 列名,列名from(表名) left join(表名) on 条件
我们进行做查询之后jiukey 找到我们需要的数据了
select 列名,列名from(表名) right join(表名) on 条件**
与左链接同理
我们发现内连接和外连接是有表与表的结构不同
如图1.内2.左外3.右外
4.2.3自连接(了解)
自连接是将本身一张表进行行和行转化成列联合查询
同理可以根据where语句进行查询来减少多余数据得到我们想要得到想要的数据
4.2.4合并查询
我们将两个select查询用 union 来进行合并查询
union all是不去重的,我们了解就可以了
当我们在一张表进行查询可以用or
五.内容总结
约束类型
not null - 指示某列不能存储 null值。 unique - 保证某列的每行必须有唯一的值。 default - 规定没有给列赋值时的默认值。 primary key - 是 (not null 和 unique )的结合确保某列(或两个列多个列的结合)有唯一标识有助于更容易更快速地找到表中的一个特定 的记录。 foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。 check - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。
聚合查询
*函数 说明 COUNT(expr) 返回查询到的数据的 数量 SUM(expr) 返回查询到的数据的 总和,不是数字没有意义 AVG(expr) 返回查询到的数据的 平均值,不是数字没有意义 MAX(expr) 返回查询到的数据的 最大值,不是数字没有意义 MIN(expr) 返回查询到的数据的 最小值,不是数字没有意义