当前位置: 首页 > news >正文

SQL语句创建视图:

前言

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨
🐻推荐专栏: 🍔🍟🌯 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.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/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中存储过程的介绍,
希望这篇文章对大家有帮助。欢迎小伙伴们私信提意见和提问哦!
最后,小伙伴们的点赞就是给牛牛最大的支持,能不能给牛牛来一个一键三连呢?谢谢支持。
在这里插入图片描述

相关文章:

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 开发坦克大战&#xff08;四&#xff09;坦克大战添加音效1. 初始化音效2. 加入游戏开始音效和坦克移动音效3. 添加坦克开火音效4. 添加装甲削减音效5. 添加坦克爆炸音效6. 添加子弹击中边界音效坦克大战添加音效 我的素材放到了百度网盘里&#xff0c;…...

New和Malloc的使用及其差异

1&#xff0c;new的使用关于new的定义&#xff1a;new其实就是告诉计算机开辟一段新的空间&#xff0c;但是和一般的声明不同的是&#xff0c;new开辟的空间在堆上&#xff0c;而一般声明的变量存放在栈上。通常来说&#xff0c;当在局部函数中new出一段新的空间&#xff0c;该…...

2023年细胞生物学复习汇总

细胞分化 1.什么是细胞分化&#xff1f;细胞分化的特点是什么&#xff1f; 答&#xff1a;&#xff08;1&#xff09;细胞分化&#xff08;cell differentiation&#xff09;是指同一来源的细胞逐渐产生出形态结构、功能特征各不相同的细胞类群的过程&#xff0c;其结果是在空间…...

光伏VSG-基于虚拟同步发电机的光伏并网逆变器系统MATLAB仿真

采用MATLAB2021b仿真&#xff01;&#xff01;&#xff01;仿真模型1光伏电池模块&#xff08;采用MATLAB自带光伏模块&#xff09;、MPPT控制模块、升压模块、VSG控制模块、电流滞环控制模块。2s时改变光照强度 &#xff01;&#xff01;&#xff01;VSG输出有功功率、无功功率…...

高可用 - 02 Keepalived_VRRP工作原理

文章目录Keepalived VS HeartbeatKeepalived的用途VRRP与工作原理物理路由器和虚拟路由器Keepalived VS Heartbeat Keepalived是Linux下一个轻量级的高可用解决方案&#xff0c;它与Heartbeat、RoseHA实现的功能类似&#xff0c;都可以实现服务或者网络的高可用&#xff0c;但…...

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修改本地仓库的文件 项目修改完成后&#xff0c;查看修改的内容 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自启动&#xff08;18.04&#xff09;一、Windows远程连接ubuntu linux系…...

大数据处理 - Overview

本文主要介绍大数据处理的一些思路。何谓海量数据处理?所谓海量数据处理&#xff0c;无非就是基于海量数据上的存储、处理、操作。何谓海量&#xff0c;就是数据量太大&#xff0c;所以导致要么是无法在较短时间内迅速解决&#xff0c;要么是数据太大&#xff0c;导致无法一次…...

12-Composer的配置与使用详解

1、自定义类与非类的自动加载与测试 # composer> php 包管理工具 &#xff0c;类似npm1.自己写的类&#xff0c;函数&#xff0c;接口&#xff0c;常量等全局成员&#xff0c;通过自动加载来实现按需加载 2.自己写的代码&#xff0c;有哪些依赖&#xff0c;用到了哪些外部成…...

RK3566开启wifi自适应

系统:linux(buildroot) 一、修改Makefile,使能RTW_ADAPTIVITY 文件路径:..\x3566_linux_v1.2.0\kernel\drivers\net\wireless\rockchip_wlan\rtl8821cs\Makefile 第74行&#xff1a; CONFIG_RTW_ADAPTIVITY_EN disable 改为&#xff1a; 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脚本&#xff1f;㈡ 什么时候用到脚本?㈢ shell脚本能干啥?㈣ 如何学习shell脚本&#xff1f;㈤ 学习s…...

Spring Cloud Alibaba 微服务简介

微服务简介 1 什么是微服务 2014年&#xff0c;Martin Fowler&#xff08;马丁福勒 &#xff09; 提出了微服务的概念&#xff0c;定义了微服务是由以单一应用程序构成的小服务&#xff0c;自己拥有自己的进程与轻量化处理&#xff0c;服务依业务功能设计&#xff0c;以全自动…...

【调试】GDB使用总结

启动 在shell下敲gdb命令即可启动gdb&#xff0c;启动后会显示下述信息&#xff0c;出现gdb提示符。 ➜ example gdb GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3: GNU GPL v…...

基于Spring、Spring MVC、MyBatis的招聘管理系统

文章目录项目介绍主要功能截图&#xff1a;首页账户管理招聘建议部分代码展示设计总结项目获取方式&#x1f345; 作者主页&#xff1a;Java韩立 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 …...

软件测试基础

文章目录前言一、软件测试入门1.什么是软件测试&#xff1f;2.测试和开发的区别3.调试和测试的区别4.一些常问面试题5.测试人员需要具备的素质二、软件测试基础1.需求2.测试用例3.Bug4.软件的生命周期5.开发模型三、Bug1.如何创建bug2.Bug的级别3.Bug的生命周期4.跟开发产生争执…...

【算法基础】链表

一、单链表例题&#xff1a;实现一个单链表&#xff0c;链表初始为空&#xff0c;支持三种操作&#xff1a;向链表头插入一个数&#xff1b;删除第 k个插入的数后面的数&#xff1b;在第 k&#xfffd; 个插入的数后插入一个数。现在要对该链表进行 M次操作&#xff0c;进行完所…...

[AUTOSAR][Fls模块] Flash Driver Module

Flash Driver Module--jianqiang.xue一、 简介二、 措施方式一&#xff1a;将FLASH操作程序作为Bootloader组件的一部分固化在存储器中方式二&#xff1a;通过通讯口将该部分代码从上位机下载到指定的RAM方式三&#xff1a;将Flash功能函数作为数据运行(推荐&#xff01;&#…...

如何正确选择好用的投票平台微信公众平台投票链接链接投票平台

“年度人物楷模”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说&#xff0c;公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序&#xff0c;网友们就可以通过手机拍视频上传视频参加活动&#xff0c;而短视频微信投票评选活动既可以给用户发…...

gocd部署应用

产品需要在多个环境部署测试&#xff0c;为了提高部署测试效率&#xff0c;故计划使用CD工具&#xff0c;jenkins确实足够强大&#xff0c;但是使用部署功能是需要安装插件的&#xff0c;再说自己本身只用部署功能&#xff0c;故决定找一个小巧的CD工具&#xff0c;经过一番查找…...

P2P视频聊天技术分析

整个P2P视频过程需要知道双方的媒体类型、流和候选者&#xff0c;所以这里就会用到一下技术&#xff1a; ​ 信令服务器socket.io ​ 状态机 ​ ICE服务器 ​ WebRTC框架 ​ 媒体协商 信令服务器Socket.io 信令服务器说白了作用就是发消息的中转站&#xff0c;A把msg发到…...

MyBatis 的一级、二级缓存机制

目录标题缓存什么是缓存为什么使用缓存什么样的数据能使用缓存&#xff0c;什么样的数据不能使用适用于缓存不适用于缓存MyBatis 一级缓存、二级缓存关系1. 一级缓存1.1 什么是一级缓存mybatis1.2 一级缓存配置1.3 什么情况下会命中一级缓存mybatis清除一级缓存的几种方法1.4 内…...

剑指 Offer 65. 不用加减乘除做加法

摘要 剑指 Offer 65. 不用加减乘除做加法 一、位运算 有符号整数通常用补码来表示和存储&#xff0c;补码具有如下特征&#xff1a; 正整数的补码与原码相同&#xff1b;负整数的补码为其原码除符号位外的所有位取反后加 11。可以将减法运算转化为补码的加法运算来实现。符…...

网站开发用什么图片格式最好/域名注册网站有哪些

在在win7下安装了Ubuntu 13.04后&#xff0c;在grub中&#xff0c;win7启动想是最后一个&#xff0c;为了把win7设置为默认启动项&#xff0c;需要更改grub设置。google了半天&#xff0c;发现更改/etc /default/grub是无效的&#xff0c;打开/boot/grub/grub.cfg&#xff0c;里…...

泰安手机网站建设/seo友情链接

我尝试了这个例外的可用解决方案。我清除了整个本地存储库&#xff0c;也maven update但仍然收到此错误。我检查了JRE和tomcat java versions的版本都是相同的。堆栈跟踪如下&#xff1a;java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Fa…...

班级网站中个人简介怎么做/电脑培训

PROXMOX6.3.6 更改机器名称 参考链接 https://www.baidu.com/link?urlljbh9wHn6YRho6nxxBdbydXNZ3vDERHVZF98SqkDNxJagu4NCtTfvnz5NilOiqqs-peS57O0v5z1t7r2-Zy2dhGQ7D5oIilOM6guFO9uTIa&wd&eqida61791420001d917000000066083e127 参考这个链接准备不停机修改主机名…...

海北州公司网站建设/seo自然排名优化

我是在企业信息化领域做开发派的工作。站来开发角度来看&#xff0c;企业信息化领域有两个分支&#xff1a;一个是对开发和技术要求不高&#xff0c;客户购买管理软件&#xff0c;更多的是想引入更好的更标准的行业最佳实践。软件公司常年扎在一个行业&#xff0c;东西南北、大…...

做网站所需要的项/优化的定义

前提&#xff1a;过年放假回家.用360无线网卡分了一个网络出来,发现虚拟机启动后不能用以前的xshell去远程连接. 于是自己把网线插到电脑上面,笔记本用有线网络,仍然连不上,手动设置IP 不行 最后 无奈各种方法尝试之后 .重启网络服务 用到了命令: service network restart …...

接做效果图网站/武汉seo网站优化运营

与 From/To/By 动画类似&#xff0c;关键帧动画以也可以以动画形式显示目标属性值。 和From/To/By 动画不同的是&#xff0c; From/To/By 动画只能控制在两个状态之间变化&#xff0c;而关键帧动画则可以在多个状态之间变化&#xff0c;例如&#xff0c;对于前面那个改变按钮宽…...