天天看点

sql 大于某个日期_SQL(四)——复杂查询

sql 大于某个日期_SQL(四)——复杂查询

1. 视图

在数据库中有很多张表,表里存放的是实际数据,而视图中存放的是sql查询语句,当通过客户端连接数据库开始使用视图时,会运行视图里的sql查询语句创建出一张临时表。

视图不存放数据,存放的是sql查询语句。

创建视图:

create view 视图名称(<视图列名1>,<视图列名2>,…) as <select查询语句>;

sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询

在from子句中可以使用视图名称代替表名称:

sql 大于某个日期_SQL(四)——复杂查询

使用视图的好处:

①如果某些sql查询语句需要频繁使用,可以保存成视图,这样就不用每次都重新写一遍sql了,特别是当查询语句非常庞大的时候,使用视图可以帮助我们提高效率;

②视图中的数据随着原表的变化自动更新,可以保证数据的最新状态;

③视图不需要保存数据,可以节省存放数据设备的空间。

注意事项:

①避免在视图的基础上再创建视图,多重视图会降低sql的性能和效率;

②不能往视图中插入数据,不然会报错。

2.子查询

子查询实际上是一次性视图,在sql查询子句中,直接写定义视图的sql查询语句,在一个select语句中嵌套另一个select语句,可以把子查询看成是一个临时表,在sql语句运行结束后临时表就消失了。

sql运行顺序:先运行子查询,再运行外部查询语句。

in(子查询):

找出每门课程里成绩最低的学号:

sql 大于某个日期_SQL(四)——复杂查询

any(子查询),all(子查询)必须与比较运算符一起使用

any(子查询)与some(子查询)相同

哪些学生的成绩比课程“0002”的全部成绩里的任意一个高:

sql 大于某个日期_SQL(四)——复杂查询

哪些学生的成绩比课程“0002”的全部成绩里的都高:

sql 大于某个日期_SQL(四)——复杂查询

使用情况:偶尔使用某个查询,不用保存为视图直接使用子查询就可以了。

注意事项:

①子查询得到的不是一个数值,而是一个集合;

②避免使用多层嵌套子查询。

3.标量子查询

标量子查询在子查询做了一个特殊的限制,必须而且只能返回一行一列的查询结果,即返回的是一个单一的值,因此标量子查询返回值可以和比较运算符一起使用。

大于平均成绩学生的学号和成绩:

sql 大于某个日期_SQL(四)——复杂查询

成绩小于等于60的为差生,成绩大于80的为优等生,成绩介入差生平均成绩和优等生平均成绩的有哪些:

sql 大于某个日期_SQL(四)——复杂查询

标量子查询是子查询的一种,它返回的只有单一的值,可以和比较运算符和in、all、any、between等一起使用,实现复杂的查询条件。

4.关联子查询

查找出每个课程中大于对应课程平均成绩的学生:

sql 大于某个日期_SQL(四)——复杂查询

使用情况:在每个组里进行比较(关联条件)

5.如何用SQL解决业务问题

sql 大于某个日期_SQL(四)——复杂查询

6.各种函数

函数可分为汇总函数、算术函数、字符串函数、日期函数等。

sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询

7.sql练习(sqlzoo)

sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询
sql 大于某个日期_SQL(四)——复杂查询

继续阅读