视图

实际上是一个查询语句, 如果将子查询保存为视图,

就可以将子查询的结果当作数据表使用 从而来简化查询语句

  • 引言

    • 例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语句(十五)视图的更多相关文章

  1. python操作MySQL,SQL注入的问题,SQL语句补充,视图触发器存储过程,事务,流程控制,函数

    python操作MySQL 使用过程: 引用API模块 获取与数据库的连接 执行sql语句与存储过程 关闭数据库连接 由于能操作MySQL的模块是第三方模块,我们需要pip安装. pip3 insta ...

  2. 抓取锁的sql语句-第五次修改

    CREATE OR REPLACE PROCEDURE SOLVE_LOCK AS V_SQL VARCHAR2(3000); --定义 v_sql 接受抓取锁的sql语句V_SQL02 VARCHA ...

  3. Entity Framework 使用sql语句分页(查询视图)

    1.查询视图 //3.查询视图 var sql = @" SELECT D.* FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY TestView.B_M ...

  4. Oracle中SQL语句学习五(统计分组语句group by和having)

    oracle(41) 在 应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句.分组函数.having子句共同实现的.其中 ...

  5. SQL语句(五)子查询

    目录 一.子查询含义 二.子查询分类 按子查询的位置分 按结果集的行列数不同分 三.WHERE后面的子查询 1. 标量子查询 2. 列子查询(多行子查询) 3. 行子查询(结果为一行多列或多行多列) ...

  6. SQL语句(五)数据的修改

    数据的修改 UPDATE 格式 UPDATE 表名 SET 字段名 = 字段值(这个可以是表达式) [WHERE 条件表达式] 关系运算符 (>.<.>=. <=.=.< ...

  7. SHELL中执行Oracle SQL语句查询性能视图

    数据库日志是否报错信息 vi check_log.sh #!/bin/bash # Created : 2019.10.10 # Updated : # Author : # Description ...

  8. 必须会的SQL语句(五)NULL数据处理和类型转换

    1.Null数据的处理     1)检索出null值               select * from 表 where xx is null        2)null值替换      sele ...

  9. oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列

    create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列

  10. LINQ to SQL语句非常详细(原文来自于网络)

    LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...

随机推荐

  1. 手机访问本地php项目遇到的问题及解决

    做html5的本地应用要调试后台,学了下php 按照和连j2ee的时候一样,电脑发射wifi,ipconfig..等等  发现tomcat的可以访问,apache的不能访问,搜索好久,没找到解答, j ...

  2. Unity3D游戏开发——物品存储:List与Dictionary

    本篇简介 本文介绍如何将碰撞处理后的物体存储在管理器中,分别用到两种不同的数据结构--List和Dictionary.我们将继续在上一篇博客的编程基础上进行完善. List和Dictionary的区别 ...

  3. 微信小程序倒计时实现

    思路:跟一般js倒计时一样,主要在于this的变相传递. 实现效果: wxml文件部分代码: common.js文件 : 引用页JS文件: PS: 1.在data里初始化时间格式,是避免时间加载的第1 ...

  4. 将博客搬至CSDN和和自己的网站

    将博客同步一份到CSDN去, CSDN博客地址:https://blog.csdn.net/klkfl ---------------- 分割线 2018-10-7 自己用typecho 搭建了一个博 ...

  5. find K maximum value from an unsorted array(implement min heap)

    Maintain a min-heap with size = k, to collect the result. //Find K minimum values from an unsorted a ...

  6. true和false

    下面这些值在JavaScript中都是falsy: false 0 (数字零) "" (空字符串) null undefined NaN (一个特殊的Number值,意为Not-a ...

  7. 熟悉常用Linux操作

    cd命令:切换目录 (1)切换到目录 /usr/local cd /usr/local (2)去到目前的上层目录 cd .. (3)回到自己的主文件夹 cd ~ ls命令:查看文件与目录 (4)查看目 ...

  8. BZOJ 2668: [cqoi2012]交换棋子

    2668: [cqoi2012]交换棋子 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 1112  Solved: 409[Submit][Status ...

  9. 【BZOJ2962】序列操作(线段树)

    [BZOJ2962]序列操作(线段树) 题面 BZOJ 题解 设\(s[i]\)表示区间内选择\(i\)个数的乘积的和 考虑如何向上合并? \(s[k]=\sum_{i=0}^klson.s[i]*r ...

  10. ---web模型 --mvc和模型--struts2 入门

    关于web模型: 早期的web 应用主要是静态页丽的浏览〈如新闻的制监),随着Internet的发展,web应用也变得越来越复杂,不仅要 和数据库进行交互 ,还要和用户进行交互,由此衍生了各种服务器端 ...