SQL语句创建视图:
前言
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏: 🍔🍟🌯 c语言初阶
🔑个人信条: 🌵知行合一
🍉本篇简介:>:介绍数据库中有关视图的知识,参考学校作业.
金句分享:
✨找不到答案的时候,就找自己。✨
目录
- 前言
- 视图的定义:
- 一、创建视图
- 二、查询视图的创建信息及视图中的数据
- 三.修改视图的定义
- 四.视图的更名与删除
- 五.管理视图中的数据
视图的定义:
定义:
根据用户的各种需求重新构造表的数据结构,这种数据结构就是视图.
视图是从一张或多张表中导出来的表,它不是真实存在的基本表,而是一张虚表,并没有像基本表一样存储在数据库中,而是相当于一个查询结果集合保存一样.
基本概念:
视图同其它基本表一样,也包含了带有各种名称和列的数据行,对表能进行的查询,插入修改对视图同样可以,并且视图是动态生成的,对依赖的基本表中的数据修改,视图也会自动更新.
视图的优缺点:
优点:
1)安全性:
用户通过视图只能查看基本表中的部分数据,未符合要求的数据并没有被筛选出来,对于其它数据用户既看不到也操作不了.数据库授权命令可以限制用户对数据库检索到特定的数据库对象中上,但不能细致到限制为数据库中特定的行和列上.
例如:
基本表为:(1)班全体学生
视图为:年龄大于18的男学生
当我们设置号权限后,用户就只能查看符合要求的男学生信息,对于不符合条件的男学生和女学生的信息则既看不到,也操作不了.
2)简单性:
可以根据不同的需求创建不同的视图,简化用户的操作.
3)逻辑数据独立性:
视图可以在应用程序与数据表之间,起到让双方在一定程度上独立的作用.
即程序可以建立在视图上,当数据表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而使应用程序可以不改变.反之,当应用程序发生变化时,也可以在表上修改视图,屏蔽应用的变化.
缺点::
1)影响查询效率:
由于数据库,管理系统必须把对视图的查询转化为对基本表的查询,当一个视图是由复杂的多个表连接定义时,即使对视图进行一个简单的数据查询也需要转变为一个复杂的多表查询,耗费一定的时间.
2)修改受限制:
对于复杂的视图,视图中的部分来源表中有数据不能被修改将导致视图也不能被修改.
一、创建视图
范例中的数据库在前几篇文章有提到,想要获取数据库中的数据可以翻看前几篇复制获取数据.
数据库和数据表的创建
对表添加数据
student表
course表
sc表
创建视图的格式:
create view 视图名
as
查询语句
🌰栗子
(1)创建一个名为stuview2的水平视图,从数据库student info的Student表中查询出性别为“男”的所有学生的资料。
并在创建视图时使用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.idand so.xtype = 'v'and so.status >= 0and sc.xtype = sT.xusertypeand 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/01 | 1993/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/01 | 1993/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中存储过程的介绍,
希望这篇文章对大家有帮助。欢迎小伙伴们私信提意见和提问哦!
最后,小伙伴们的点赞就是给牛牛最大的支持,能不能给牛牛来一个一键三连呢?谢谢支持。

相关文章:
SQL语句创建视图:
前言 🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏: 🍔🍟🌯 c语言初阶 🔑个人信条: 🌵知行合一 🍉本篇简介:>:介绍数据库中有关视图的知识,参考学校作业. 金句分享:…...
使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)
👨🎓个人主页:研学社的博客💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密…...
JavaWeb9-volatile解决内存可见性和指令重排序问题
目录 1.解决内存可见性问题 2.解决指令重排序问题 3.volatile缺点 4.特使使用场景 volatile(易变的,易挥发的,不稳定的)可以解决内存可见性和指令重排序的问题。 1.解决内存可见性问题 代码在写入 volatile 修饰的变量时&am…...
Docker - 镜像操作命令
镜像名称一般分为两部分组成:[repository]:[tag]在没有指定tag时,默认是latest,代表最新版本的镜像1.下载docker镜像 docker pull repository:tag2.查看本地所有镜像 docker images3.创建镜像别名 docker tag repository:tag repository111:tag4.查看镜像…...
全栈之路-前端篇 | 第三讲.基础前置知识【前端标准与研发工具】学习笔记
欢迎关注「全栈工程师修炼指南」公众号 点击 👇 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习! 涉及 企业运维、网络安全、应用开发、物联网、人工智能、大数据 学习知识 “ 花开堪折直须折,莫待无花…...
Tomcat 线上调优记录
原始Tomcat配置 启动参数Plaintext-Xms256m -Xmx512m -XX:MaxPermSize128m Tomcat 参数配置XML<Executor name"tomcatThreadPool" namePrefix"catalina-exec-" maxThreads"1500" minSpareThreads"50" maxIdleTime"600000&q…...
学习 Python 之 Pygame 开发坦克大战(四)
学习 Python 之 Pygame 开发坦克大战(四)坦克大战添加音效1. 初始化音效2. 加入游戏开始音效和坦克移动音效3. 添加坦克开火音效4. 添加装甲削减音效5. 添加坦克爆炸音效6. 添加子弹击中边界音效坦克大战添加音效 我的素材放到了百度网盘里,…...
New和Malloc的使用及其差异
1,new的使用关于new的定义:new其实就是告诉计算机开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上。通常来说,当在局部函数中new出一段新的空间,该…...
2023年细胞生物学复习汇总
细胞分化 1.什么是细胞分化?细胞分化的特点是什么? 答:(1)细胞分化(cell differentiation)是指同一来源的细胞逐渐产生出形态结构、功能特征各不相同的细胞类群的过程,其结果是在空间…...
光伏VSG-基于虚拟同步发电机的光伏并网逆变器系统MATLAB仿真
采用MATLAB2021b仿真!!!仿真模型1光伏电池模块(采用MATLAB自带光伏模块)、MPPT控制模块、升压模块、VSG控制模块、电流滞环控制模块。2s时改变光照强度 !!!VSG输出有功功率、无功功率…...
高可用 - 02 Keepalived_VRRP工作原理
文章目录Keepalived VS HeartbeatKeepalived的用途VRRP与工作原理物理路由器和虚拟路由器Keepalived VS Heartbeat Keepalived是Linux下一个轻量级的高可用解决方案,它与Heartbeat、RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但…...
vue实现xml在线编辑功能
先看效果 避免误会 这是一个在线编辑器 我们可以在这上面随意的编写xml代码格式 我们修改上面的内容之后 就可以在控制台输出内容 如果这正是您想要的东西 那就可以先创建一个vue项目 我们先引入依赖 npm install brace -S npm install element-ui -S npm install vue-cli…...
GitHub Workflow
GitHub Workflow 基本流程 把远程仓库克隆到本地 git clone xxxx.git在本地切换至新的分支 git checkout -b new_branch修改本地仓库的文件 项目修改完成后,查看修改的内容 git diff上传修改之后的内容到本地暂存区 git add modified_files将本地暂存区的代码更新…...
vue学习
vue 其实你只要安装一个vue-cli 就可以了 vue-cli 你可以用比较高的版本 这 当然是 可以滴...
Windows使用ssh协议远程连接ubuntu linux系统
Windows使用ssh协议远程连接ubuntu linux系统一、Windows远程连接ubuntu linux系统二、开启ubuntu ssh服务三、获取ubuntu子系统的ip地址四、从windows上通过ssh连接到ubuntu子系统五、设置ubuntu系统ssh自启动(18.04)一、Windows远程连接ubuntu linux系…...
大数据处理 - Overview
本文主要介绍大数据处理的一些思路。何谓海量数据处理?所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次…...
12-Composer的配置与使用详解
1、自定义类与非类的自动加载与测试 # composer> php 包管理工具 ,类似npm1.自己写的类,函数,接口,常量等全局成员,通过自动加载来实现按需加载 2.自己写的代码,有哪些依赖,用到了哪些外部成…...
RK3566开启wifi自适应
系统:linux(buildroot) 一、修改Makefile,使能RTW_ADAPTIVITY 文件路径:..\x3566_linux_v1.2.0\kernel\drivers\net\wireless\rockchip_wlan\rtl8821cs\Makefile 第74行: CONFIG_RTW_ADAPTIVITY_EN disable 改为: CONFIG_RTW_ADAPTIVITY_EN enab…...
shell编程之变量定义
typora-copy-images-to: pictures typora-root-url: …\pictures 文章目录typora-copy-images-to: pictures typora-root-url: ..\..\pictures一、SHELL介绍㈠ 什么是shell脚本?㈡ 什么时候用到脚本?㈢ shell脚本能干啥?㈣ 如何学习shell脚本?㈤ 学习s…...
Spring Cloud Alibaba 微服务简介
微服务简介 1 什么是微服务 2014年,Martin Fowler(马丁福勒 ) 提出了微服务的概念,定义了微服务是由以单一应用程序构成的小服务,自己拥有自己的进程与轻量化处理,服务依业务功能设计,以全自动…...
如何将Smart AM60电视盒子变身高性能Armbian服务器:完整实战指南
如何将Smart AM60电视盒子变身高性能Armbian服务器:完整实战指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l…...
手把手教你用华为昇腾A2-910b显卡,一键部署中文Embedding和Rerank模型
华为昇腾A2-910b实战:中文Embedding与Rerank模型高效部署指南 当你在深夜的办公室里盯着昇腾显卡的报错日志时,可能正经历着每个AI工程师都熟悉的"部署地狱"。别担心,这份指南将带你绕过所有坑点,用最直接的方式在华为A…...
老游戏重生记:如何让经典作品在Win11焕发新生?
老游戏重生记:如何让经典作品在Win11焕发新生? 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DD…...
霍里思特获2亿融资,矿业分选新势力崛起?
硬氪消息,矿石AI智能分选设备企业霍里思特完成近2亿元C轮融资,由招商局资本领投。该公司技术实力强,产品优势明显,市场表现佳,未来发展值得关注。融资情况与用途霍里思特完成近2亿元C轮融资,由招商局资本领…...
Pixel Script Temple多场景落地:政务宣传短视频、乡村振兴纪录片脚本生成
Pixel Script Temple多场景落地:政务宣传短视频、乡村振兴纪录片脚本生成 1. 专业剧本创作工具介绍 Pixel Script Temple(像素剧本圣殿)是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。它将先进的AI推理能力与独特的8-B…...
STM32C8T6新手入门:用定时器中断和外部中断做一个99秒倒计时器(附完整代码)
STM32C8T6实战:构建高精度99秒倒计时器的5个关键步骤 第一次拿到STM32开发板时,我盯着那些密密麻麻的引脚发呆——这玩意儿真能做出实用的倒计时器?直到成功完成这个项目后才发现,原来从零开始构建一个稳定可靠的倒计时系统&#…...
揭秘seL4微内核:如何通过创新资源管理实现高效公平的任务调度?
揭秘seL4微内核:如何通过创新资源管理实现高效公平的任务调度? 【免费下载链接】seL4 The seL4 microkernel 项目地址: https://gitcode.com/gh_mirrors/se/seL4 seL4微内核作为一款经过形式化验证的实时操作系统内核,其资源管理机制是…...
S2-Pro跨语言编程能力评测:根据中文注释生成多国语言代码
S2-Pro跨语言编程能力评测:根据中文注释生成多国语言代码 1. 评测背景与目标 在软件开发领域,跨语言编程能力正变得越来越重要。开发者经常需要在不同技术栈间切换,或者将一个语言的算法实现迁移到另一个语言。传统方式下,这需要…...
H5游戏整合平台源码:70款游戏一键搭建,支持流量主变现的完整解决方案
一、平台概述与核心优势这套H5游戏整合平台源码是一套全面、实用且零门槛的一站式解决方案。它专为站长、开发者、创业团队及游戏爱好者打造,无需分散搜罗各类零散源码,一次获取即可拥有70余款经典H5网页小游戏。所有源码均基于原生H5技术开发࿰…...
HarmonyOS ArkTS开发实战:用Axios封装一个带拦截器的网络请求工具类
HarmonyOS ArkTS实战:构建企业级Axios网络请求工具库 在HarmonyOS应用开发中,网络请求作为数据交互的核心通道,其稳定性和可维护性直接影响应用质量。本文将带你从零构建一个支持Token自动刷新、错误统一处理的Axios企业级封装库,…...
