一.视图

1.视图是什么

视图中存放的是SQL语句。视图运行时从表中查找数据,保存到一张临时表中,当客户端与数据库的连接断开以后,临时表会自动消失。

2.如何创建视图

1.创建视图操作步骤:查询→新建→编辑SQL语句→运行→视图→刷新。展开视图菜单栏即可看到新建的视图。

2.视图语句结构:

create view 视图名称(<视图列名1>,<视图列名2>,...)as <select查询语句>,此处select语句的排列顺序与视图中的排列顺序一一对应,列的名称可以不同。

3.视图的优点和限制

1.视图的优点

  • 视图无需保存数据,节省了存储设备的空间。
  • 视图会随着原表的变化而更新,可将频繁使用的select语句保存成视图,能很好的提高使用效率,减少工作量的同时还能提高系统性能。

2.视图的限制

  • 多重视图会降低SQL的性能,应避免在视图的基础上创建视图。
  • 不能往视图中插入数据,否则会报错。
  • 定义视图时不能使用order by子句。
  • 通过多表或group by对原表聚合得到的视图是不能进行自动更新。

二.子查询

常用的子查询有三种,分别是普通子查询,标量子查询和关联子查询。三种子查询相关内容如下。

1.普通子查询

  • 子查询是什么

子查询是一次性的SQL语句。子查询在 select语句执行完毕后就会消失。子查询返回的结果可以是多行或者单一的值。

  • 子查询的使用

1.放在from子句中,示例如下




SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql


2.放在where子句里,与in、all、any等构成复杂查询,示例如下


SQL server 视图 查询最新数据 sql视图怎么查询_sql查询 关联帖子_02


SQL server 视图 查询最新数据 sql视图怎么查询_子查询_03


SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql_04


  • 子查询运行顺序

子查询作为内层查询会先执行,然后再执行外层的select语句。

  • 子查询注意事项

1.根据使用目的选择,如果频繁使用某个SQL语句,则保存为视图,如果偶尔使用,则选择子查询

2.如果2个数字进行比较,如a>3*all(b),在SQL中不能这样书写,因为3*all(b)得到的不是一个数字,而是一个集合。正确的书写方式应为a÷3>all(b)。

3.避免使用多层嵌套子查询。如果使用多层嵌套子查询,这样不易于明白SQL语句,同时会降低SQL性能,对后期维护也会带来不必要的麻烦。

4.子查询中'as'关键字与查询名称都可省略。如:select (<列名1>,<列名2>,...) from(子查询)as 查询名称 中的as和查询名称可以省略。

2.标量子查询

  • 什么是标量子查询

标量子查询是子查询的一种,但标量子查询只能返回1行1列的结果,即返回的是一个值。它可以与比较运算符一起使用,与in、or、between一起实现复杂查询。

  • 标量子查询如何使用

通常能够使用常数或者列名的地方,无论是select子句、group by子句、having子句,还是order by子句,几乎所有的地方都可以使用标量子查询。


SQL server 视图 查询最新数据 sql视图怎么查询_标量_05


SQL server 视图 查询最新数据 sql视图怎么查询_标量_06


SQL server 视图 查询最新数据 sql视图怎么查询_sql查询 关联帖子_07


  • 标量子查询注意事项

标量子查询不能返回多行结果,如果返回多行结果即不是标量子查询

3.关联子查询

  • 什么是关联子查询

关联子查询也是子查询的一种,它与group by子句一样,也可以对表中的集合数据进行切分,它在细分的组内进行比较时使用。

  • 关联子查询的使用方法,示例如下


SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql_08


上图中,s1与s2为关联子查询的关联条件。

  • 关联子查询注意事项

1.关联子查询的关联条件一定要写在子查询中,否则将发生错误无法正确执行。

2.关联子查询内部设定的关联名称,只能在该子查询内部使用,因为内部可以看到外部的信息,而外部是看不到内部的关联名称的。

三.SQLZOO练习


SQL server 视图 查询最新数据 sql视图怎么查询_子查询_09


SQL server 视图 查询最新数据 sql视图怎么查询_sql三表关联查询_10


SQL server 视图 查询最新数据 sql视图怎么查询_sql三表关联查询_11


SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql_12


SQL server 视图 查询最新数据 sql视图怎么查询_子查询_13


SQL server 视图 查询最新数据 sql视图怎么查询_sql三表关联查询_14


SQL server 视图 查询最新数据 sql视图怎么查询_标量_15


SQL server 视图 查询最新数据 sql视图怎么查询_sql查询 关联帖子_16


SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql_17


SQL server 视图 查询最新数据 sql视图怎么查询_查询上次 查询的sql_18