一、group by
group by有个原则,凡是在group by 后面出现的字段,必须在select 后面出现
select ‘字段1’,sum(‘字段2’) from 表名 group by ‘字段1’
表情况如下
用来过滤group by 语句返回的记录集,通常与group by语句联合使用,弥补了where不能和聚合函数联合使用的不足,having的作用就是再过滤为group by 分组的表过滤
select ‘字段1’,sum(‘字段2’) from 表名 group by ‘字段1’ having 函数条件
如果别名是带空格的可以用()括起来
select 字段1 from 表名1 where 字段2 比较运算符 in ###外查询语句
(select 字段1 from 表2 where 条件) ###内查询语句
小实验:东部所有的的销售总额
实验2:查询东部每个城市的销售总额
实验3.两张表有关联地区的销售总额
如果exists()没有产生结果就不会执行外面外查询
如果exists()产生结果就会执行外面外查询语句
实验所用的两张表
只返回两个表中连接字段相等的字段
如果有两张表,表1和表2做内连接查询,表1是外查询表2是内查询,表1有五条数据(有两条是重复的)查询出来的表只有四条数据,因为两条重复的数据就是被内连接给合并了。
左连接和右连接则不同,首先是不会合并两条信息(意思就是说左连接就是以左表为主表,左表如果有五条记录,无论有几条记录是重复的,都是会显示出来的,不会被合并)
格式:select * from 表名1 inner/left/right jion 表名2 on 左表的相同字段 = 右表相同的字段 ;
内连接第二种方式:select 字段 from 左表,右表 where 左表.字段 右表字段
格式:select * from 表名1 inner/left/right jion 表名2 on 左表的相同字段 = 右表相同的字段 ;
(返回包括左表中的所有记录和与右表相等的行记录,以左表为主,左表有几条记录,就是以左表的这几条记录来查询)
(返回包括右表中的所有记录和右表中与左表相等的行记录,以右表为主,右表有几条记录,就是以右表的这几条记录来查询)
格式:select * from 表名1 inner/left/right jion 表名2 on 左表的相同字段 = 右表相同的字段 ;
小实验1:使用内连接分别查询出东部和西部的城市的销售总额
小实验二:成绩排序
视图和表格不同的是,表时实际存储数的,而视图是建立在表格之上的一个架构,它本身并不实际存储数据记录,临时表在用户退出或同数据库的连接端口后会自动消失,视图不会消失,用视图将几个表关联起来,然后对这个视图进行查询炒作,就和对一个表查询一样,很方便
操作和对普通表操作一样
作用:
简化复杂的sql操作,比如复杂的联结,只使用实际表的一部分数据,通过只给用户访问视图的权限,确保数据的安全性.是图标的查询结果会随着select语句查询的实际数据的变换而变化,如果向视图表更新数据,如果定义的select语句使用的是真实存在的表格字段,是可以更新表格数据的,如果视图是两个表格联合查询出的表(通过函数或者其他方式查询出来的)是不可以插入数据的
(把两表的相同字段合并到一起)
1.无值的长度为0,不占用空间,null值是占用空间的
2.null值是用not null 或者 is not null 来判断的
3.空值是可以用 =' ' 来判断是否是空值<>代表不等于
4.在count()指定字段统计的时候会自动忽略null值 ,遇到无值会加入到记录中进行计算