SQL语言之复杂查询与视图

复杂查询

子查询:出现在Where子句中的Select语句被称为子查询(subquery),子查询返回了一个集合,可以通过与这个集合的比较来确定另一个查询的集合

(NOT IN)IN
  • 语法: 表达式 [not] in (子查询)
  • 语义:判断某一表达式的值是否在子查询的结果中
  • eg: Select * from Student Where Sname in ["张三",“王三”]
Some,All
  • 语法: 表达式 西塔 some/all (子查询)
  • 语义: 将表达式的值与子查询的结果进行比较
  • eg:Select Tname From Teacher Where Salary <=all(Select Salary From Teacher)
(Not)EXISTS
  • 语法: [not] Exists (子查询)
  • 语义:子查询结果中有无元组存在
  • eg: Select DISTINCT Sname From Student Where not exists (Select * From SC,Course,Teacher Where SC.C#=Course.C# and SC.S#= Student.S# and Course.T# =Teacher.T# and Tname='赵三')
结果计算|聚集计算
  • 语法: Select 列名|expr|agfunc[列名] From 表名 where 检索条件
  • expr: 可以是常量,列名,或由常量,列名,特殊函数及算数运算符构成的算数运算式
  • agfunc():聚集函数,包括:COUNT,SUM,AVG,MAX,MIN
  • eg1: Select S.S# ,S.Sname,2015-S.Sage+1 as Syear From Student S;
  • eg2: Select Sum(Salary) From Teacher;
分组查询|分组过滤
  • 语法:Select 列名|expr|agfunc[列名] From 表名 Where 检索条件 Group By 分组条件 [Having 分组过滤条件];
  • 语义: 将检索到的元组按照某一条件进行分类,具有相同条件值的元组划到一个组或一个集合中
  • eg1: Select S#,AVG(Score) From SC Group By S#
  • eg2: Select S# From SC Where Score<60 Group by S# Having Count(*)>2;

视图(View)

视图对应外模式
视图

定义视图
  • 语法: create view view_name [列名] as 子查询 [with check option]
  • eg: create view CompStud AS (Select * From Student Where D# in (Select D# From Dept Where Dname='计算机'))
删除视图
  • 语法:Drop view view_name
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值