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

20b42c9c036c1a928256438bb6da890d.png

1. 视图

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

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

创建视图:

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

8191eeb3711607ae933b1b1211352e6a.png

88814a004974a3eec59643e486b202eb.png

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

b17eae537d2f2ef02fa7e57d03e67434.png

使用视图的好处:

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

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

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

注意事项:

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

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

2.子查询

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

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

in(子查询):

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

4e97e2318175e2c5ef50c4c27080cddc.png

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

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

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

fd32e3748912fe6611df0d175055f3e9.png

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

74fea7b8d075e1d3995816b1239b196f.png

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

注意事项:

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

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

3.标量子查询

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

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

8e3a91a7f6ee059fa392b7db88d40b4d.png

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

0781b91fc1e9e223a21a544fd8d20988.png

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

4.关联子查询

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

339383fbedce0f2b42117acb166fbc5f.png

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

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

23f519edf08b957a4858e99df297d5ea.png

6.各种函数

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

7648367d18c3838e30e1d456c3a42b40.png

2f08db51657615ce2ac48575814fede8.png

35ea319538639d7011b78448f1704a96.png

1099a97dc128a7011ab84388992a2d88.png

7.sql练习(sqlzoo)

0fcb39b8e9e496deae4001589499277f.png

be3fcb06dd94369647549d1477c45bdb.png

2dcbd7c94d24be66dd9aeec9a3dc5ba0.png

5c5140865d2f5c1387c50b1cf418b28a.png

1483468f05a56d9b4ace6afb866e3fc4.png

715bd9215ceafd1d7486269e974e2245.png

869875658bfe24496ed4db8ca3414a1d.png

60599c9e67101b94637716177866eada.png

3aab422d78fcf29ba7439e65b75ed85f.png

f78b7703714d09a84554d91364b6a5f6.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值