SQL语句(十五)视图
视图
实际上是一个查询语句, 如果将子查询保存为视图,
就可以将子查询的结果当作数据表使用 从而来简化查询语句
引言
例1 查询参加"数据库技术"课程的考试的学生学号、姓名、班级、分数
需要连接学生表, 成绩表 和 课程表
查询航天班各课程的考试信息, 显示学生的学号、姓名、课程名称、分数
也需要连接学生表, 成绩表 和 课程表
由于数据库连接查询语句麻烦,可以先写一个一般的等值连接, 将三个表连接起来
use teaching
select * from Student
select * from Course
select * from Study --连接学生表, 成绩表, 课程表
Select a.sclass, a.Snumb, a.sname, a.sgender,
c.cname, b.score, c.chours, c.credit
from Student as a
INNER JOIN Study as b on a.snumb = b.snumb
INNER JOIN Course as c on b.cnumb= c.cnumb --由于上述查询经常使用, 所以将之保存为视图
--CREATE VIEW 视图名 [(字段别名列表)]
--AS
--查询 Create View examinfo
AS
Select a.sclass, a.Snumb, a.sname, a.sgender,
c.cname, b.score, c.chours, c.credit
from Student as a
INNER JOIN Study as b on a.snumb = b.snumb
INNER JOIN Course as c on b.cnumb= c.cnumb --加别名
GO
Create View examinfo2(班级,学号,姓名,性别,课程,成绩,学时,学分)
AS
Select a.sclass, a.Snumb, a.sname, a.sgender,
c.cname, b.score, c.chours, c.credit
from Student as a
INNER JOIN Study as b on a.snumb = b.snumb
INNER JOIN Course as c on b.cnumb= c.cnumb --4.使用视图 --查询所有学生的所有课程的考试成绩
--显示班级,学号,姓名,性别,课程,成绩,学时,学分
select * from examinfo2 --查询参加"c++"课程的考试的学生的
--班级,学号,姓名,性别,课程,成绩,学时,学分
select * from examinfo2
where 课程 = 'c++' --查询"航天"班各课程考试的信息,显示学号,姓名,课程名称,分数 Select Snumb, Sname, Cname, Score
From examinfo
where Sclass = '航天' --例2 查询平均年龄大于20岁的班级的学生信息
Select *
From Student
where sclass in (
select sclass as 班级 from Student
group by sclass
having avg(sage) >=
) --使用视图
--创建视图
Create View myClass
AS
select Sclass as avgage from Student
group by Sclass
having AVG(sage) >= --使用视图
Select * From Student
Where sclass in (
select * from myClass
) --删除视图
Drop View Myclass
注意事项:
视图是一个虚拟表或临时表
视图保存的是Select查询语句,而不是数据本身
数据表中的数据发生改变,通过视图查到的数据也会发生改变
创建视图时,不允许使用
ORDER BY, INTO 等字句
如果一个查询或子查询经常使用,则保存为视图
SQL语句(十五)视图的更多相关文章
- python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数
python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...
- 抓取锁的sql语句-第五次修改
CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 VARCHA ...
- Entity Framework 使用sql语句分页(查询视图)
1.查询视图 //3.查询视图 var sql = @" SELECT D.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY TestView.B_M ...
- Oracle中SQL语句学习五(统计分组语句group by和having)
oracle(41) 在 应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句.分组函数.having子句共同实现的.其中 ...
- SQL语句(五)子查询
目录 一.子查询含义 二.子查询分类 按子查询的位置分 按结果集的行列数不同分 三.WHERE后面的子查询 1. 标量子查询 2. 列子查询(多行子查询) 3. 行子查询(结果为一行多列或多行多列) ...
- SQL语句(五)数据的修改
数据的修改 UPDATE 格式 UPDATE 表名 SET 字段名 = 字段值(这个可以是表达式) [WHERE 条件表达式] 关系运算符 (>.<.>=. <=.=.< ...
- SHELL中执行Oracle SQL语句查询性能视图
数据库日志是否报错信息 vi check_log.sh #!/bin/bash # Created : 2019.10.10 # Updated : # Author : # Description ...
- 必须会的SQL语句(五)NULL数据处理和类型转换
1.Null数据的处理 1)检索出null值 select * from 表 where xx is null 2)null值替换 sele ...
- oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列
create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列
- LINQ to SQL语句非常详细(原文来自于网络)
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
随机推荐
- 经验分享(Android开发)
以前对于Android开发一点了解都没有,当然,以前觉得是一件很高大上的事情,而且是我没有能力去做的工作,但是在这个小组合作开发Android后,我觉得我有了很大的进步,当然我的进步也是Android ...
- Beta阶段团队项目开发篇章1
例会时间:2016.12.1 例会照片: 个人工作: 任务分配: 组员 任务内容 李文涛 编写并发布调查问卷 姬索肇 审核并传播调查问卷 韩慧敏 审核并传播调查问卷 任务截止时间 2016.12.4 ...
- 0603团队变化+sprint第二个冲刺
开始一个新的冲刺: 起止:2016.6.1~2016.6.14 按照以下过程进行 ProductBacklog:继续向下细化 Sprint 计划会议:确定此次冲刺要完成的目标 Sprint Backl ...
- 1014 C语言文法定义与C程序的推导过程
<程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | <声明> ...
- 四人小组:vip会员管理系统
需求概述: 针对各类商铺百花齐放的现状,越来越多的商家考虑用各种方式招揽顾客,会员制度一向是吸引回头客的不二法宝.用户持有会员卡能够迅捷的购物,享有普通顾客更多的优惠或回馈.乃至新品推送.积分等一系列 ...
- 处理编译错误"0" is an invalid value for the "DebugInformation" parameter of the "DCC" task.
在安装一个从XE6复制到XE4的控件时出现编译错误: [MSBuild Error] "0" is an invalid value for the "DebugInfo ...
- golang build 的简单用法.(菜鸟初学)
1. golang 里面的 go build 可以编译代码. go build helloworld.go 2. 这里面有一个注意事项事项. 如果引用非go语言的 内置package的话 需要在环境变 ...
- redis压力测试工具-----redis-benchmark
redis做压测可以用自带的redis-benchmark工具,使用简单 压测命令:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 压测需要一段 ...
- HDU 6166 Senior Pan(二进制分组+最短路)
题意 给出一个\(n\)个点\(m\)条边的有向图\((n,m<=100000)\),从中选择\(k\)个点\((k<=n)\),问这k个点两两之间的最短路最小值是多少? 思路 直接的想法 ...
- [BJOI2017]树的难题 点分治 线段树
题面 [BJOI2017]树的难题 题解 考虑点分治. 对于每个点,将所有边按照颜色排序. 那么只需要考虑如何合并2条链. 有2种情况. 合并路径的接口处2条路径颜色不同 合并路径的接口处2条路径颜色 ...