.Net_04_表表达式 (Sql 语句)

表表达式
-> 派生表
  就是将一个查询得到的结果作为另一个查询的数据源
  -> 加括号,取别名(数据源的别名,列的别名)
  -> 使用集合
-> 公用表表达式
  -> 有些时候发现表使用派生表,太长了,不好组织代码
  -> 将这个派生表写在前面,用一个变量记下来
  -> 那么在后面使用的时候,就很简短

  with 表的别名 as
  (
    派生表的查询
  )
  引用别名进行的查询
-> 视图
  -> 是一张虚拟表
    -> 在数据库中不存在这张表
    -> 在视图中存的是查询表的一个步骤
    -> 最后视图中应该是一个结果集

    create view vw_视图名
    as
    查询的SQL语句
  -> 视图在处理数据的时候,是一张虚拟表
    -> 真正的数据时存在最底层的真实表中
    -> 查询的时候,只是根据视图的组织关系分别到具体的真实表中将数据取出
    -> 按照视图中的规则显示给用户
    -> 视图在使用的时候,多半是提供权限的管理
-> (*)
  表表达式,相当于对各个表之间做了一个封装,对于使用查询,就是在底层访问实际的表
  组合结果显示给用户
  如果要对其进行修改等操作,也会将数据传递给底层的真实表进行对应的修改(注意表结构中设计引发的异常)

-> 表值构造函数(SQL Server 2008)
  (values
    (1,2,3)
  ) as t(col1,col2,col3);
-> 表值函数


  --- 派生表
1
select 2 tbl.stuId, 3 tbl.stuName 4 from 5 ( 6 --这是学生表的一个完整信息,可以作为数据源 7 select 8 --是学生id 9 s1.stuId, 10 s1.stuName, 11 case s1.stuSex 12 when 'f' then '' 13 else '' 14 end as [stuSex], 15 s2.className, 16 s2.classDescription 17 from 18 Student as s1 19 inner join 20 Course as s2 21 on s1.classId = s2.classId 22 ) as tbl 23 where 24 tbl.stuSex = '' 25 and 26 tbl.className like '%C++%';

 1 --公用表表达式(CTE)
 2 with tbl as
 3 (
 4     --这是学生表的一个完整信息,可以作为数据源
 5     select
 6         --是学生id
 7         s1.stuId, 
 8         s1.stuName, 
 9         case s1.stuSex
10             when 'f' then ''
11             else ''
12         end as [stuSex],
13         s2.className,
14         s2.classDescription
15     from 
16         Student as s1
17         inner join
18         Course as s2
19         on s1.classId = s2.classId
20 )
21 select * from tbl 

 

--创建视图 
create view S_view1  
 as  
     select Name,Sex,age from Student where age>20  

select * from  S_view1

 

 

 

 

posted @ 2013-01-29 15:12  陆俊杰_iOS  阅读(300)  评论(0编辑  收藏  举报

版权信息:©Copyright © 2010-2050 陆俊杰的博客