Mysql高阶语句

一、group by

group by有个原则,凡是在group by 后面出现的字段,必须在select 后面出现

select ‘字段1’,sum(‘字段2’) from 表名 group by ‘字段1’

表情况如下

Mysql高阶语句_第1张图片

Mysql高阶语句_第2张图片

二、having

用来过滤group by 语句返回的记录集,通常与group by语句联合使用,弥补了where不能和聚合函数联合使用的不足,having的作用就是再过滤为group by 分组的表过滤

select ‘字段1’,sum(‘字段2’) from 表名 group by ‘字段1’ having 函数条件

Mysql高阶语句_第3张图片

Mysql高阶语句_第4张图片

三、 别名(给某个表起个别名)

Mysql高阶语句_第5张图片

 如果别名是带空格的可以用()括起来

四、子查询

1.in(内只返回两个表中连接字段相等的值)

 select  字段1 from 表名1 where 字段2 比较运算符   in ###外查询语句

 (select  字段1 from 表2 where 条件)                    ###内查询语句

Mysql高阶语句_第6张图片

 小实验:东部所有的的销售总额Mysql高阶语句_第7张图片

 实验2:查询东部每个城市的销售总额

Mysql高阶语句_第8张图片

 实验3.两张表有关联地区的销售总额Mysql高阶语句_第9张图片

 Mysql高阶语句_第10张图片

 2.exists() 

如果exists()没有产生结果就不会执行外面外查询

如果exists()产生结果就会执行外面外查询语句

Mysql高阶语句_第11张图片

 3、内连接

实验所用的两张表

Mysql高阶语句_第12张图片

只返回两个表中连接字段相等的字段

如果有两张表,表1和表2做内连接查询,表1是外查询表2是内查询,表1有五条数据(有两条是重复的)查询出来的表只有四条数据,因为两条重复的数据就是被内连接给合并了。

左连接和右连接则不同,首先是不会合并两条信息(意思就是说左连接就是以左表为主表,左表如果有五条记录,无论有几条记录是重复的,都是会显示出来的,不会被合并)

格式:select * from 表名1 inner/left/right jion 表名2 on  左表的相同字段 = 右表相同的字段 ;

Mysql高阶语句_第13张图片

 内连接第二种方式:select 字段 from 左表,右表 where 左表.字段 右表字段

Mysql高阶语句_第14张图片

 4、左连接

格式:select * from 表名1 inner/left/right jion 表名2 on  左表的相同字段 = 右表相同的字段 ;

(返回包括左表中的所有记录和与右表相等的行记录,以左表为主,左表有几条记录,就是以左表的这几条记录来查询)

Mysql高阶语句_第15张图片

 5、右连接

(返回包括右表中的所有记录和右表中与左表相等的行记录,以右表为主,右表有几条记录,就是以右表的这几条记录来查询)

格式:select * from 表名1 inner/left/right jion 表名2 on  左表的相同字段 = 右表相同的字段 ;

Mysql高阶语句_第16张图片

 小实验1:使用内连接分别查询出东部和西部的城市的销售总额

Mysql高阶语句_第17张图片

小实验二:成绩排序

Mysql高阶语句_第18张图片

 六、视图

视图和表格不同的是,表时实际存储数的,而视图是建立在表格之上的一个架构,它本身并不实际存储数据记录,临时表在用户退出或同数据库的连接端口后会自动消失,视图不会消失,用视图将几个表关联起来,然后对这个视图进行查询炒作,就和对一个表查询一样,很方便

操作和对普通表操作一样

作用:

简化复杂的sql操作,比如复杂的联结,只使用实际表的一部分数据,通过只给用户访问视图的权限,确保数据的安全性.是图标的查询结果会随着select语句查询的实际数据的变换而变化,如果向视图表更新数据,如果定义的select语句使用的是真实存在的表格字段,是可以更新表格数据的,如果视图是两个表格联合查询出的表(通过函数或者其他方式查询出来的)是不可以插入数据的

Mysql高阶语句_第19张图片

Mysql高阶语句_第20张图片

 Mysql高阶语句_第21张图片

七、 UNION  和 UNION ALL

(把两表的相同字段合并到一起)

Mysql高阶语句_第22张图片

Mysql高阶语句_第23张图片

 八、’ ‘空值和NULl值的区别

1.无值的长度为0,不占用空间,null值是占用空间的

2.null值是用not null 或者 is not null 来判断的

3.空值是可以用 ='  ' 来判断是否是空值<>代表不等于

4.在count()指定字段统计的时候会自动忽略null值 ,遇到无值会加入到记录中进行计算

Mysql高阶语句_第24张图片

你可能感兴趣的:(sql,数据库)