数据库强化(1.视图)
1.什么是视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
2.为什么要使用视图
- 简化用户对数据的理解,以及简化他们的操作。通过定义视图,可以将经常使用的查询定义为视图,这样用户不必每次都指定全部的条件,只需要select * from view1就可以。
- 提高数据安全性。视图是虚拟的,物理上是不存在的,只是存储了数据的集合。同时,用户对视图不可以随意的更改和删除,可以保证数据的安全性。
- 逻辑数据独立性。视图可以帮助用户屏蔽真实表结构变化带来的影响。
3.视图的特点
- 简单:使用视图时,用户完全不需要关心后面对应的表的结构、关联条件和筛选条件。
- 安全:视图的使用限制了用户只能访问他们被允许查询的结果集,对于表的权限管理并不能限制到某个行或者某个列,但通过视图就可以简单的实现。
- 数据独立:一旦视图的结构被确定了,可以屏蔽表结构变化对用户的影响。例如源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
4.视图的语法
4.1创建视图
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
其中,view_name是视图的名称,column1, column2, …是要选择的列名,table_name是要从中选择数据的表名,condition是筛选条件。
例如,创建一个名为view1的视图,选择table1表中的column1和column2列,并筛选出column1值大于等于10的数据,可以使用以下语句:
CREATE VIEW view1 AS
SELECT column1, column2
FROM table1
WHERE column1 >= 10;
创建视图后,可以通过以下语句查看视图中的数据:
SELECT * FROM view1;
这将返回视图view1中的所有行。
4.2在视图上执行DML操作
在视图上执行DML操作与在普通表上执行DML操作类似,可以使用INSERT、UPDATE、DELETE等语句对视图进行操作。但是需要注意的是,视图本身并不存储实际的数据,而是基于其定义的查询语句从源表中选择数据。因此,对视图执行DML操作实际上是对源表执行相应的操作。
以下是在视图上执行DML操作的示例:
SELECT操作
要查询视图中的数据,可以使用SELECT语句。例如,如果要查询名为“view1”的视图中所有列的数据,可以使用以下语句:
SELECT * FROM view1;
这将返回视图“view1”中的所有行和所有列的数据。如果只想查询特定的列,可以在SELECT语句中列出这些列的名称,例如:
SELECT column1, column2 FROM view1;
这将返回视图“view1”中所有行中指定的列的数据。如果需要在查询中使用条件来筛选数据,可以在WHERE子句中添加条件,例如:
SELECT * FROM view1 WHERE column1 > 10;
这将返回视图“view1”中满足条件的行和所有列的数据。
INSERT操作
向视图中插入数据实际上是将数据插入到源表中。例如,向名为view1的视图中插入一条记录,可以使用以下语句:
INSERT INTO view1 (column1, column2) VALUES (value1, value2);
这将在名为view1的视图的源表中插入一条记录,其中column1的值为value1,column2的值为value2。
UPDATE操作
更新视图中数据的实际操作是更新源表中的数据。例如,更新名为view1的视图中column1列的值,可以使用以下语句:
UPDATE view1 SET column1 = new_value WHERE condition;
这将在名为view1的视图的源表中更新满足条件的数据行中的column1列的值为new_value。
DELETE操作
从视图中删除数据的实际操作是删除源表中的数据。例如,从名为view1的视图中删除满足条件的数据行,可以使用以下语句:
DELETE FROM view1 WHERE condition;
这将在名为view1的视图的源表中删除满足条件的数据行。
需要注意的是,对视图执行DML操作时,如果视图定义中包含WHERE子句或其他筛选条件,则必须满足这些条件才能对源表执行相应的操作。此外,如果视图是基于多个表连接或其他复杂查询定义的,则需要注意DML操作对源表之间数据一致性和完整性的影响。
4.3视图实例
下面是一个关于员工信息的视图实例:
- 首先,假设我们有一个名为 “employees” 的表,其中包含以下字段:员工 ID(employee_id)、姓名(name)、年龄(age)、部门(department)。
- 创建一个视图,名为 “active_employees”,用于查询在职员工的信息。视图的 SQL 语句如下:
CREATE OR REPLACE VIEW active_employees AS
SELECT employee_id, name, age, department
FROM employees
WHERE status = 'ACTIVE';
在这个视图中,我们筛选了 “employees” 表中状态为 “ACTIVE” 的员工,将其呈现为在职员工的信息。
3. 接下来,为了提高数据安全性,我们只允许特定用户查询 “active_employees” 视图。首先,创建一个具有较高权限的用户,例如:
CREATE USER manager IDENTIFIED BY manager_password;
然后,授权该用户具有创建、查询、更新和删除 “active_employees” 视图的权限:
GRANT CREATE, SELECT, UPDATE, DELETE ON active_employees TO manager;
- 最后,其他用户可以通过查询 “active_employees” 视图来获取在职员工的信息,而无需直接查询 “employees” 表。这样,我们既提高了数据安全性,又简化了查询过程。
注意:在实际应用中,视图的使用需谨慎,因为视图的数据与对应表数据互相关联。在操作视图时,务必确保了解相关表的结构和数据,以免造成错误或丢失数据。同时,为了优化查询性能,可以考虑使用同义词来进一步简化查询过程。
相关文章:
数据库强化(1.视图)
1.什么是视图 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的…...
Mysql与SeaweedFS数据不同步问题产生原因及解决办法
文章目录 Mysql与SeaweedFS数据不同步问题的探究与解决问题背景原因探究不一致的写操作缺乏事务管理 解决方案引入分布式事务处理使用消息队列 实践演示(python代码)结论 Mysql与SeaweedFS数据不同步问题的探究与解决 问题背景 在数据库和文件存储系统…...
Kotlin apply和with用法和区别
apply apply 是 Kotlin 标准库中的一个函数,它允许你在对象上执行一系列操作,然后返回该对象自身。它的语法结构如下: fun <T> T.apply(block: T.() -> Unit): T这个函数接受一个 lambda 表达式作为参数,该 lambda 表达…...

springboot通过aop自定义注解@Log实现日志打印
springboot通过aop自定义注解Log实现日志打印 文章目录 效果图实操步骤1.引入依赖2.自定义日志注解3.编写日志切面类4.UserController5.运行 效果图 实操步骤 注意,本代码在springboot环境下运行,jdk1.8 1.引入依赖 <dependency><groupId>…...
k8spod详解其二
一,资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量。 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源。 当为 Pod 中的容器指定了 request 资源时,调度器就使用该信息来决定将 Pod 调度到哪个节点上。当还为…...
golang包的管理
Go语言中包的使用 Go语言使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java 、python等语言相比,这算不上什么创新,但与C传统的include相比,则是显得“先进…...

Windows10安装Anaconda与Pytorch的记录
这是一篇关于安装Anaconda和Pytorch的记录与复盘,写的原因是我电脑恢复系统之后东西全没了,再装Pytorch的时候一脸懵逼忘了怎么弄了,写篇记录以备我下一次安装。 1、Anaconda的安装 1.1、Anaconda安装包下载 下载链接: Free Download | An…...

图解Kafka高性能之谜(五)
高性能的多分区、冗余副本集群架构 高性能网络模型NIO 简单架构设计: 详细架构设计: 高性能的磁盘写技术 高性能的消息查找设计 索引文件定位使用跳表的设计 偏移量定位消息时使用稀疏索引: 高响应的磁盘拷贝技术 kafka采用sendFile()的…...

opencv在linux上调用usb摄像头进行拍照
功能 1.按照指定的文件名创建文件夹,创建之前判断该文件夹是否存在 2.调用摄像头按可调整窗口大小的方式显示 3.按esc退出摄像头画面 4.按p保存当前摄像头的画面,并按当前时间为照片的名字进行保存打开终端查看是否有摄像头 ls /dev/video*一般video1就…...
软考之知识产品+例题
知识产权 保护期限 公民作品 没有限制 署名权、修改权、保护作品完整权 作者终生及其死亡后的第 50 年的 12月31日 发表权、使用权、获得报酬权 单位作品 首次发表后的第 50 年的 12月31 日,若未发表则不受保护 发表权、使用权、获得报酬权 公民软件作品 没…...

玩了一下 Jenkins,最新版本 + JDK11
背景 今年五月的时候玩了一下 Jenkins,最新版本 2.414.3 ,JDK 11 。本机有两个 JDK,只放到 Tomcat 里面了,看到了一个启动页面,后面有其他事情就忘记了。最近又想起来,觉得还是应该玩一下这么有技术含量的…...

自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试,开源项目
自定义的卷积神经网络模型CNN,对图片进行分类并使用图片进行测试模型-适合入门,从模型到训练再到测试:开源项目 开源项目完整代码及基础教程: https://mbd.pub/o/bread/ZZWclp5x CNN模型: 1.导入必要的库和模块&…...
C# 使用.NET的SocketAsyncEventArgs实现高效能多并发TCPSocket通信
简介: SocketAsyncEventArgs是一个套接字操作得类,主要作用是实现socket消息的异步接收和发送,跟Socket的BeginSend和BeginReceive方法异步处理没有多大区别,它的优势在于完成端口的实现来处理大数据的并发情况。 BufferManager类…...
设计模式——观察者模式(Observer Pattern)+ Spring相关源码
文章目录 一、观察者模式定义二、例子2.1 菜鸟教程例子2.1.1 定义观察者2.1.2 定义被观察对象2.1.3 使用 2.2 JDK源码 —— Observable2.2.1 观察者接口Observer2.2.1 被观察者对象Observable 2.3 Spring源码 —— AbstractApplicationContext2.3.1 观察者2.3.2 被观察者 2.3 G…...

openpnp - code review - 开机对话框历史记录和贡献者名单
文章目录 openpnp - code review - 开机对话框历史记录和贡献者名单概述笔记D:\my_openpnp\openpnp_dev_2022_0801\src\main\java\org\openpnp\gui\AboutDialog.javaEND openpnp - code review - 开机对话框历史记录和贡献者名单 概述 偶然发现, 自己打包后的openpnp, 开机后…...
JavaSE22——HashMap
集合框架_HashMap 一、概述 HashMap 是用于存储 Key-Value 键值对的集合。 (1)HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,所以具有很快的访问速度,但遍历顺序不确定。 (2&…...

「图像 merge」无中生有制造数据
在进行一个新项目的时候,往往缺少一些真实数据,导致没办法进行模型训练,这时候就需要算法工程师自行制作一些数据了,比如这篇文章分享的 bag 目标检测,在检测区域没有真实的 bag数据 此时,就可以采用图像拼…...
RK3588之ArmSoM-W3 + MPP实现多路硬解码拉流
简介 学习完MPP的解码Demo之后,想必大家都想通过一个项目来进行RK3588-MPP的解码实战。本篇文章就基于ArmSoM-W3开发板,开发一个多路硬解码项目,实现四路MPP硬解码拉流显示实现的效果如下: RK3588四路MPP硬解码拉流 环境介绍 硬件…...
【Rust日报】2023-10-29 隆重推出 Rerun 0.10!
Lapce代码编辑器发布v0.3.0 Lapce代码编辑器新发布v0.3.0! https://lapce.dev/ 距离我们上次发布已经过去很长一段时间了。我们正忙着在自己的 UI 工具包Floem中重写 Lapce ,这将使我们以后对 UI 部分代码的开发变得更容易、更快。 另一件值得注意的事情…...
AI智能识别如何助力PDF,轻松实现文档处理?
AI智能识别如何助力PDF,轻松实现文档处理? 随着科技的不断发展,人工智能(AI)在各个领域都发挥着重要的作用。其中,文档智能( Document AI )在金融、医疗、教育、保险、能源、物流等…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...