视图的相关操作

4.1.1 创建视图

语法格式:create [ or replace ] view view_name [ ( column_list ) ] as                                                  select_statement
                        [ with [ cascade | local ] check option ]

说明:
(1)select_statement:定义视图的select语句,用于创建视图,可查询多个表或视图。对select语句有以下限制:

①定义视图的用户必须对所涉及的基表或其他视图有查询的权限。
不能包含from子句中的子查询,不能引用系统或用户变量,不能引用预处理语句参数。
③在定义中引用的表或视图必须存在。
④在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。
⑤对于select语句中其他选项或子句,若所创建的视图中包含这些选项,则语句执行效果未定义。

(2)with check option:指出在视图上进行的修改都要符合select语句所指定的限制条件。

【例4.1】在数据库study中创建V_StudentScore视图,包括学号、姓名、性别、所在班级、课程号、成绩,且专业为计算机。

create or replace view V_StudentScore as
	select a.学号,姓名,性别,年龄,所在班级,课程号,成绩
	from 学生 a, 选课 b
	where a.学号 = b.学号 and 所在班级 = '19计科1'
	with check option;

【4.2】在数据库study中创建V_StudentCourseScore视图,包括学号、姓名、性别、课程名、成绩,按学号升序排列且专业为计算机。

create or replace view V_StudentCourseScore as
	select a.学号,姓名,性别,年龄,所在班级,课程名,成绩
	from 学生 a, 课程 b, 选课 c
	where a.学号 = c.学号 and b.课程号 = c.课程号 and 所在班级 = '19计科1'
	order by a.学号;

4.1.2 查询视图

【例4.3】分别查询V_StudentScore和V_StudentCourseScore两个视图。

使用select语句

select * from V_StudentScore;

select * from V_StudentCourseScore;

查询:

【例4.4】查询计算机专业学生的学号、姓名、性别和课程名。

查询计算机专业学生的学号、姓名、性别、课程名,不使用视图而直接使用select语句,需要连接“学生”  “课程” 两个表,较为复杂,故此处使用视图则十分简洁方便。

select 学号,姓名,性别,课程名
	from V_StudentCourseScore;

4.1.3 更新视图

1.可更新视图

 通过更新视图数据可更新基表数据,但只有满足可更新条件的视图才能更新。如果视图包含下述结构中的任何一种,那么它就是不可更新的。
(1)聚合函数。
(2)DISTINCT关键字。
(3)GROUP BY子句。
(4)ORDER BY子句。
(5)HAVING子句。
(6)UNION运算符。
(7)位于选择列表中的子查询。
(8)FROM子句中包含多个表。
(9)SELECT语句中引用了不可更新视图。
(10)WHERE子句中的子查询,引用FROM子句中的表。

【例4.5】在数据库study中,以 “学生” 为基表创建专业为通信的可更新视图                                                    V_StudentSpecialityComm。

create or replace view V_StudentSpecialityComm as
	select * from 学生
	where 所在班级 = '19电商1';


 

查询:

select * from V_StudentSpecialityComm;

2.插入数据

【例4.6】向V_StudentSpecialityComm视图插入一条记录:( ' 070104 ',' 程超 ',' 男 ','                      22 ',' 19电商1 ',' 山东济南 ' )。

insert into V_StudentSpecialityComm
	values('070104','程超','男','22','19电商1','山东济南');

查询:

select * from 学生;

 

有图片可见,070104数据插入成功。

注意:当视图依赖的基表有多个表时,不能向该视图插入数据。

3.修改数据

【例4.7】将V_StudentSpecialityComm视图中学号为070104的学生的年龄减2.

update V_StudentSpecialityComm set 年龄 = 年龄 - 2
	where 学号 = 070104;

查询:

注意:当视图依赖的基表有多个表时,一次修改视图只能修改一个基表的数据。 

4. 删除数据

【例4.8】删除V_StudentSpecialityComm视图中学号为070104的记录。

delete from V_StudentSpecialityComm
	where 学号 = 070104;

查询:

4.1.4 修改视图

语法格式:alter VIEW view_name[ ( column_list ) ] as
                        select_statement
                        [ with [ cascade | local ] check option ]

其语法结构与create view类似,我就不详细说了,可参考前边内容。

【例4.9】将例4.1定义的V_StudentScore视图进行修改,取消专业为“计算机”的要求。

alter view V_StudentScore as
	select a.学号,姓名,性别,年龄,所在班级,课程号,成绩
	from 学生 a, 选课 b
	where a.学号 = b.学号
	with check option;

查询:

【例4.10】修改例4.2创建的V_StudentCourseScore视图,学号以降序排列。

alter view V_StudentCourseScore as
	select a.学号,姓名,性别,年龄,所在班级,课程名,成绩
	from 学生 a, 课程 b, 选课 c
	where a.学号 = c.学号 and b.课程号 = c.课程号 and 所在班级 = '19计科1'
	order by a.学号 desc;

查询:

4.2.5 删除视图

删除视图对创建该视图的基表没有任何影响。

语法格式:drop view [ if exist ]
                        view_name [ ,view_name ] ...

【例4.11】在数据库study中,将V_StudentCourseScore视图删除。

drop view V_StudentCourseScore;

注意:删除视图时,应将由该视图导出的其他视图删去。删除基表时,应将由该表导出的其他视图删去。

文章内容较为简单,可将视图看作是一个表,结果表的相关语法知识来记忆。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis的SDS数据结构解决C语言字符串缺陷

redis设计了SDS这一数据结构来表示字符串而不是使用c语言的字符串:字符数组 那么redis为什么要大费周章自己设计字符串呢? 答案是C语言字符串有缺陷 1.获取字符串长度,需要遍历字符数组,时间复杂度是O(N&#xff09…

167.二叉树:另一棵树的字树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

PostgreSQL 16 小课推广

PostgreSQL 16 小课推广 1. PostgreSQL 16 基础知识 PostgreSQL 16 的特点与优势安装与配置PostgreSQL 16数据库和表的基本概念与操作数据类型与约束SQL 语言基础 2. 数据查询与操作 SELECT 语句的使用聚合函数与分组查询子查询与连接查询数据插入、更新与删除视图与索引的…

二维码生成

摘要 QRCoder 是一个功能强大的 C# 库,用于生成 QR 码。QR 码是一种二维码,可以存储大量的信息,并且具有良好的识别率和存储容量。使用 QRCoder,用户可以方便地生成各种类型的 QR 码,包括 URL、文本、电话号码、电子邮…

<网络安全VIP>第二篇《工业控制软件》

1 PLC PLC,(Programmable Logic Controller),可编程逻辑控制器(PLC)是种专门为在工业环境下应用而设计的数字运算操作电子系统。 2 DCS 四、DCS的发展趋势 一、DCS的基本定义 DCS是分布式控制系统(Distributed Control System)的英文缩写,在国内自控行业又称之为集…

运放IC:HC358:1MHz,轨到轨I/O,低功耗运算放大ic,供应:传感器压力传感放大器移动通讯设备音频输出便携应用烟雾监测电池驱动的设备

运放IC: HC358:1MHz,轨到轨I/O,低功耗运算放大ic 概述:HC358是一款轨到轨输入输出,电压反馈运算放大 器。输入共模范围和输出摆幅较大,最低工作电源电压仅 为2.1V,最高电压可达5.5V。工作环…

冥想第一千一百七十八天

1.周末,早上先骑着电车到绿谷公园拿了姐给的精油,40分钟到家。 2.早上带着媳妇吃了饭,等丈母娘和小侄子。一起去荥泽水乡特别的推荐。感受特别好玩。 3.晚上带着丈母娘和小侄子吃了饭,给送到中原福塔。回来都都12点了。 4.累的&am…

【Nacos】docker-compose启动nacos v2.2.3,启动时修改默认密码不使用naocs

1. 背景 出于安全考虑,我司DevOps平台自动部署的容器化nacos密码不能是弱密码或默认值 但是nacos-v2.2.3官方镜像启动后会初始化nacos用户密码为nacos,修改启动时的变量并没有生效。 2. 部署验证 2.1 yml文件如下 注意将derby库的初始化文件挂载出来…

群体优化算法---蜂群优化算法应用于数据挖掘

介绍 蜂群优化算法(Bee Algorithm, BA)及其变种主要模拟蜜蜂的觅食行为,以解决复杂的优化问题。这类算法通过蜜蜂之间的信息交流和协作来探索解空间,寻找全局最优解。主要应用于参数优化,结构优化,机器学习…

初讲解运算符重载

运算符的重载 运算符重载基本概念运算符重载入门技术推演运算符重载碰上友元函数运算符重载的限制 什么是运算符重载? 运算符重载基本概念 所谓重载,就是重新赋予新的含义。 函数重载就是对一个已有的函数赋予新的含义,使之实现新功能&#x…

[Algorithm][动态规划][回文串问题][回文子串][最长回文子串][分割回文串Ⅳ]详细讲解

目录 0.原理讲解1.回文子串1.题目链接2.算法原理详解3.代码实现 2.最长回文子串1.题目链接3.代码实现 3.分割回文串 IV1.题目链接2.算法原理详解3.代码实现 0.原理讲解 动态规划能够将所有的子串是否是回文的信息,保存在dp表里面状态表示一般经验:以[i,…

【Redis】redis高阶-使用zset实现延时队列

Hi,大家好,我是抢老婆酸奶的小肥仔。 最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。 废话不多说,直接开撸。 1、为…

Kafka之Broker原理

1. 日志数据的存储 1.1 Partition 1. 为了实现横向扩展,把不同的数据存放在不同的 Broker 上,同时降低单台服务器的访问压力,我们把一个Topic 中的数据分隔成多个 Partition 2. 每个 Partition 中的消息是有序的,顺序写入&#x…

【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战

目录 一、引言 二、模型简介 2.1 Qwen1.5 模型概述 2.2 Qwen1.5 模型架构 三、训练与推理 3.1 Qwen1.5 模型训练 3.2 Qwen1.5 模型推理 四、总结 一、引言 Qwen是阿里巴巴集团Qwen团队的大语言模型和多模态大模型系列。现在,大语言模型已升级到Qwen1.5&…

分布式session共享配置

目录 1、spring-session 1.1 添加依赖 1.2 spring-mvc.xml配置文件 1.3 web.xml 2、tomcat配置session、共享 2.1 Tomcat配置 2.2 Web.xml配置 1、spring-session 官方文档:https://docs.spring.io/spring-session/docs/1.3.0.RELEASE/reference/html5/ 1.…

【vue-7】图片轮播

实现功能&#xff1a; 1、通过button实现图片轮训播放&#xff1b; 2、通过标签列表项实现图片的播放&#xff1b; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…

AI网络爬虫:对网页指定区域批量截图

对网页指定区域批量截图&#xff0c;可以在deepseek的代码助手中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;一步一步的思考&#xff0c;完成一个对网页指定区域截图的python脚本的任务&#xff0c;具体步骤如下&#xff1a; 设置User-Agent: Mozilla/5.0 (…

【AIOT-Robot】3D pos 相关

1. Mediapipe 3D detection 使用移动增强现实(AR)会话数据(session data),开发了新的数据pipeline。大部分智能手机现在都具备了增强现实的功能,在这个过程中捕捉额外的信息,包括相机姿态、稀疏的3D点云、估计的光照和平面。 利用相机的姿势、检测到的平面、估计的照明,来生…

JVM学习-监控工具(一)

使用数据说明问题&#xff0c;使用知识分析问题&#xff0c;使用工具处理问题 无监控&#xff0c;不调优&#xff01; 命令行工具 在JDK安装目录下&#xff0c;可以查看到相应的命令行工具&#xff0c;如下图 jps(Java Process Status) 显示指定系统内所有的Hotpot虚拟机…

网络工程师----第四十七天

1、请简述super vlan和sub vlan的区别&#xff1f; 2、请简述mux vlan 中不同vlan的特点&#xff1f; 3、请基于工作原理简述GVRP协议中三种接口模式的特点&#xff1f; 4、请简述STP的选举过程&#xff1f; 5、两台交换机在不增加成本的情况下为提高链路带宽和可靠性采用链路聚…