SQL语句创建视图:

news2024/9/21 22:29:07

前言

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏: 🍔🍟🌯 c语言初阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:介绍数据库中有关视图的知识,参考学校作业.
金句分享:
✨找不到答案的时候,就找自己。✨

目录

  • 前言
  • 视图的定义:
  • 一、创建视图
  • 二、查询视图的创建信息及视图中的数据
  • 三.修改视图的定义
  • 四.视图的更名与删除
  • 五.管理视图中的数据

视图的定义:

定义:
根据用户的各种需求重新构造表的数据结构,这种数据结构就是视图.
视图是从一张或多张表中导出来的表,它不是真实存在的基本表,而是一张虚表,并没有像基本表一样存储在数据库中,而是相当于一个查询结果集合保存一样.

基本概念:
视图同其它基本表一样,也包含了带有各种名称和列的数据行,对表能进行的查询,插入修改对视图同样可以,并且视图是动态生成的,对依赖的基本表中的数据修改,视图也会自动更新.

视图的优缺点:
优点:

1)安全性:
用户通过视图只能查看基本表中的部分数据,未符合要求的数据并没有被筛选出来,对于其它数据用户既看不到也操作不了.数据库授权命令可以限制用户对数据库检索到特定的数据库对象中上,但不能细致到限制为数据库中特定的行和列上.

例如:
基本表为:(1)班全体学生
视图为:年龄大于18的男学生

当我们设置号权限后,用户就只能查看符合要求的男学生信息,对于不符合条件的男学生和女学生的信息则既看不到,也操作不了.

2)简单性:
可以根据不同的需求创建不同的视图,简化用户的操作.

3)逻辑数据独立性:
视图可以在应用程序与数据表之间,起到让双方在一定程度上独立的作用.
即程序可以建立在视图上,当数据表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序可以不改变.反之,当应用程序发生变化时,也可以在表上修改视图,屏蔽应用的变化.

缺点::

1)影响查询效率:
由于数据库,管理系统必须把对视图的查询转化为对基本表的查询,当一个视图是由复杂的多个表连接定义时,即使对视图进行一个简单的数据查询也需要转变为一个复杂的多表查询,耗费一定的时间.

2)修改受限制:
对于复杂的视图,视图中的部分来源表中有数据不能被修改将导致视图也不能被修改.

一、创建视图

范例中的数据库在前几篇文章有提到,想要获取数据库中的数据可以翻看前几篇复制获取数据.
数据库和数据表的创建
对表添加数据

			student表
			course表
			sc表

创建视图的格式:

create view 视图名
as
查询语句

🌰栗子
(1)创建一个名为stuview2的水平视图,从数据库student infoStudent表中查询出性别为“”的所有学生的资料。
并在创建视图时使用with check option。(注:该子句用于强制视图上执行的所有修改语句必须符合由select语句where中的条件。)
解释:
WITH CHECK OPTION的作用?

1.对于update,有with check option,要保证update后,数据要被视图查询出来;
2.对于delete,有无with check option都一样;
4.对于insert,有with check option,要保证insert后,数据要被视图查询出来;
5.对于没有where 子句的视图,使用with check option是多余的。

语句:

create view stuview2--表示创建一个名为stuview2的视图
as
select * from student where sex='男'
with check option

查看视图:

语句:

select * from stuview2

执行结果:

在这里插入图片描述

(2)创建一个名为stuview3的投影视图,从数据库student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时。并在创建时对该视图加密。(提示:用with ENCRYPTION关键子句)
语句:

create view stuview3 with ENCRYPTION--创建视图并加密
as
select Cno , Cname , Total_perior from course where credit>3

(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。

create view stuview4
as
select * from sc 
where sno=(
select sno from student
where classno='051' and sex='女')

(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。

create view stuview5
as
select student.sno 学号,sname 姓名 ,Grade 成绩 from student,sc
where student.Sno=sc.sno

二、查询视图的创建信息及视图中的数据

(1)查看视图stuview2的创建信息。

a.通过系统存储过程sp_help查看

sp_help stuview2

执行结果:

b.通过查询表sysobjectsa、
–b

select so.name , sc.name , sc.colid, st.name
from sysobjects so , syscolumns sc, systypes st 
where so.id = sc.id
	and so.xtype = 'v'
	and so.status >= 0
	and sc.xtype = sT.xusertype
	and so.name = 'stuview2'
order by so.name,sc.colorder

执行结果:

(2)通过查看视图的定义脚本。

a.通过系统存储过程sp_helptext

sp_helptext stuview2

执行结果:

b.通过查询表sysobjects和表syscomments
(提示:视图的名称保存在表sysobjects的name列,定义脚本保存在表syscomments的text列)

select so.name , sc.text
from sysobjects so, syscomments sc where so.id = sc.id
and so.xtype = 'v'and so.status >= 0
and so.name = 'stuview2'

执行结果:

在这里插入图片描述

3)查看加密视图stuview3的定义脚本。

sp_helptext stuview3

执行结果:

在这里插入图片描述

三.修改视图的定义

(1)修改视图stuview3使其从数据库Student_info的student表中查询总学时大于60的所有课程的课程号、课程名、学分。(提示:若视图原具有加密保护,修改视图时若未加with encryption子句,则修改后的视图不再加密。)

alter view stuview3
with encryption
as
select Cno ,Cname , credit from course 
where Total_perior>60

查看视图:

select * from stuview3

四.视图的更名与删除

1)用系统存储过程sp_rename将视图stuview4更名为stuv4。

sp_rename stuview4, stuv4

运行结果:
在这里插入图片描述

五.管理视图中的数据

1)从视图stuview2查询出班级为“051”、姓名为“张虹的资料。

select * from stuview2
where classno='051' and sname='张虹'

2)向视图stuview2中插入一行数据,内容为:

学号姓名学号性别家庭住址入学时间出生年月
20110009赵小林054南京2011/09/011993/01/09

语句:

insert into stuview2
values ( '20110009','赵小林','男','1993/01/09', '054','2011/09/01',
		'南京','CH ','201111')
--查看视图:
select * from stuview2

可以观察到视图中已经有了赵小林的信息.
3)查询student,查看表中的内容有何变化。Student表中是否也已有“赵小林”的信息
语句:

select * from student--查询student表

在这里插入图片描述

4)向视图stuview2中插入一行数据,内容为:

学号姓名学号性别家庭住址入学时间出生年月
20110010赵静054南京2011/09/011993/11/09

问题:能成功插入吗?原因何在?
在这里插入图片描述

答案:
不能插入,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。
在这里插入图片描述

5)修改视图stuview2中的数据。

a.将stuview2中054班、姓名为“赵小林”同学的家庭地址改为“扬州市”。

update stuview2
set Home_addr='扬州市'
where Home_addr='南京' and sname='赵小林' and classno='054'

b.查询student,查看表中的内容有何变化student表中的赵小林的家庭住址已发生了改变

select * from student

运行结果:

在这里插入图片描述

6)从视图stuview1中将班级为054、姓名为“赵小林”同学删除。

delete from stuview2
where sname=’赵小林’’

好了,今天的SQL Server知识就分享到这里了.下一篇将会是SQL server中存储过程的介绍,
希望这篇文章对大家有帮助。欢迎小伙伴们私信提意见和提问哦!
最后,小伙伴们的点赞就是给牛牛最大的支持,能不能给牛牛来一个一键三连呢?谢谢支持。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/357717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot的在线文档管理系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…

进程-操作系统结构

进程-操作系统结构 中文仅本人理解,有错误请联系我。 操作系统为不同方面服务,有不同的设计角度。 为用户: 使用 为程序员:创造 程序员需要关注的就是system call接口的调度 file systems:ntfs,ext4 commu…

eclipse快捷开发学习笔记

快速收起java类中的所有代码当类中方法过多时,收起所有方法,可以方便查看注释找到方法右击左侧栏任意行号位置-点击Folding-点击Collapse All效果图如下代码格式化混乱的代码格式化后,方便阅读分析菜单栏-Source-Format效果如下3.查看方法被哪…

Bland-Altman图

介绍 Bland-Altman图是一种一致性评价测量方法,简称BA,常用于医学实验和数据分析。 可使用它检测两组数据的一致性,比如对比新旧两种方法,对比一组实际值和预测值等。相对于校准曲线,它能更好地对比两组数据中每个数据…

Unit Test and Integration Test

Unit Test and Integration Test Background It is the first time that I try to write an article in English. In the past, I didn’t write test code. Just thinking QA is responsible for testing. As a developer, I don’t need to care about tests. Although I …

Robust Self-Augmentation for Named Entity Recognition with Meta Reweighting

摘要 近年来,自我增强成为在低资源场景下提升命名实体识别性能的研究热点。Token substitution and mixup (token替换和表征混合)是两种有效提升NER性能的自增强方法。明显,自增强方法得到的增强数据可能由潜在的噪声。先前的研究…

【Vue3源码】第四章 实现isReadonly和isReactive

【Vue3源码】第四章 实现isReadonly和isReactive 前言 上一章节我们实现readonly API,并且优化之前写的reactive API。这一章我们实现isReadonly和isReactive两个API。 1、实现isReactive 官网是这么介绍的:检查一个对象是否是由 reactive() 或 shallo…

WebView2 (Chromium) 右键菜单大全

在开发WebView2浏览器时,需要定制右键上下文菜单,但是微软的官方网站上没有详细的菜单,这里整理出来,以方便大家使用。以下是在win11上测试获取的,经过测试win7上稍有不同。一、网页上空白处右键 Target:Pa…

Mybatis Notes

文章目录1 Mybatis 介绍1.1 快速入门2 JDBC2.1 JDBC介绍2.3 JDBC问题分析2.4 Mybatis与JDBC技术对比3 数据库连接池3.1 数据库连接池介绍3.2 数据库连接池产品产品3.3 Druid引入项目4lombok4.1 lombok介绍4.2 lombok使用4.2.1 在pom.xml文件中引入依赖4.2.2 pojo类代码引入1 My…

强化学习 Reinforcement Learning(1) ~ 介绍

1. 强化学习概念和分类 强化学习,Reinforcement Learning 通过价值选行为: Q LearningSarsaDeep Q Network 直接选行为: Policy Gradients 想象环境并从众学习: Model Based RL 1.1 通过环境分类 1.1.1 不理解环境 Model-Fr…

4.5 习题(王晓云 主编)

一、选择题1. 下面( ) 是错误的if 语句&#xff08;设int x,a,b;&#xff09;BA&#xff09;if (ab) x; B&#xff09;if (a<b) x;C&#xff09;if (a-b) x; D&#xff09;if (x ) x;2. 以下程序片段( )。Dvoid main ( ){int x0,y0,z0;if (xyz) printf(“***”);else printf…

RT-Thread SP使用教程

RT-Thread SPI 使用教程 实验环境使用的是正点原子的潘多拉开发板。 SPI从机设备使用的是BMP280温湿度大气压传感器。 使用RT-Thread Studio搭建基础功能。 1. 创建工程 使用RT-Thread Studio IDE创建芯片级的工程。创建完成后&#xff0c;可以直接编译下载进行测试。 2.…

JVM学习篇垃圾收集器ParNewCMS与底层三色标记算法详解

1. 垃圾收集算法 2. 分代收集理论 当前虚拟机的垃圾收集都采用分代收集算法&#xff0c;这种算法没有什么新的思想&#xff0c;只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代&#xff0c;这样我们就可以根据各个年代的特点选择合适的垃圾收集算法…

因果推断7--深度因果模型综述(个人笔记)

目录 0摘要 1介绍 2预习 3治疗和指标 4深层因果模型的发展 4.1发展时间表 4.2模型分类 5典型的深层因果模型 6实验指南 6.1数据集 6.2code 6.3实验 7结论 参考 编码 1.自编码器(AE)&#xff1a; 2.去噪自编码器(DAE) 3.变分自编码器VAE 4.去耦变分自编码 文章…

复旦MBA父女“接力”,圆梦复旦|校友故事

父亲&#xff1a;钱一&#xff0c;2006级复旦MBA校友      女儿&#xff1a;钱盈&#xff0c;2017级财务管理本科&#xff0c;金融硕二年级在读      在管院的众多校友中&#xff0c;有这样一对父女&#xff1a;2006年&#xff0c;父亲钱一考上了复旦MBA&#xff0c;每…

node基于springboot 口腔卫生防护口腔牙科诊所管理系统

目录 1 绪论 1 1.1课题背景 1 1.2课题研究现状 1 1.3初步设计方法与实施方案 2 1.4本文研究内容 2 2 系统开发环境 4 2.1 JAVA简介 4 2.2MyEclipse环境配置 4 2.3 B/S结构简介 4 2.4MySQL数据库 5 2.5 SPRINGBOOT框架 5 3 系统分析 6 3.1系统可行性分析 6 3.1.1经济可行性 6 3.…

Hadoop配置文件常用配置-Yarn容器调度策略配置

Yarn资源调度 当同时向Yarn集群提交多个Job任务时&#xff0c;Yarn可以对任务进行资源&#xff08;CPU、MEMORY&#xff09;隔离。 容器调度策略是Yarn默认的调度策略&#xff0c;容器调度策略把整个集群资源划分成队列来管理&#xff0c;默认有一个root根队列&#xff0c;下…

聚类-理论补充

目录 一。聚类的定义 二。相似度/距离计算方法总结 1.闵可夫斯基距离Minkowski/欧式距离 2.杰卡德相似系数(Jaccard) 3.余弦相似度(cosine similarity) 4.Pearson相似系数 5.相对熵(K-L距离) 6.Hellinger距离 三。聚类的基本思想 四。k-Means算法 五。对k-Means的思…

图像显著性目标检测

一、概述 1、定义 图像显著性检测(Saliency Detection,SD)&#xff0c; 指通过智能算法模拟人的视觉系统特点&#xff0c;预测人类的视觉凝视点和眼动&#xff0c;提取图像中的显著区域(即人类感兴趣的区域)&#xff0c;可以广泛用于目标识别、图像编辑以及图像检索等领域&am…

从0到1一步一步玩转openEuler--19 openEuler 管理服务-特性说明

文章目录19 管理服务-特性说明19.1 更快的启动速度19.2 提供按需启动能力19.3 采用cgroup特性跟踪和管理进程的生命周期19.4 启动挂载点和自动挂载的管理19.5 实现事务性依赖关系管理19.6 与SysV初始化脚本兼容19.7 能够对系统进行快照和恢复19 管理服务-特性说明 19.1 更快的…