数据库强化(1.视图)

这篇具有很好参考价值的文章主要介绍了数据库强化(1.视图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是视图

视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

2.为什么要使用视图

  1. 简化用户对数据的理解,以及简化他们的操作。通过定义视图,可以将经常使用的查询定义为视图,这样用户不必每次都指定全部的条件,只需要select * from view1就可以。
  2. 提高数据安全性。视图是虚拟的,物理上是不存在的,只是存储了数据的集合。同时,用户对视图不可以随意的更改和删除,可以保证数据的安全性。
  3. 逻辑数据独立性。视图可以帮助用户屏蔽真实表结构变化带来的影响。

3.视图的特点

  1. 简单:使用视图时,用户完全不需要关心后面对应的表的结构、关联条件和筛选条件。
  2. 安全:视图的使用限制了用户只能访问他们被允许查询的结果集,对于表的权限管理并不能限制到某个行或者某个列,但通过视图就可以简单的实现。
  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视图实例

下面是一个关于员工信息的视图实例:

  1. 首先,假设我们有一个名为 “employees” 的表,其中包含以下字段:员工 ID(employee_id)、姓名(name)、年龄(age)、部门(department)。
  2. 创建一个视图,名为 “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” 视图的权限:文章来源地址https://www.toymoban.com/news/detail-737094.html

GRANT CREATE, SELECT, UPDATE, DELETE ON active_employees TO manager;  
  1. 最后,其他用户可以通过查询 “active_employees” 视图来获取在职员工的信息,而无需直接查询 “employees” 表。这样,我们既提高了数据安全性,又简化了查询过程。
    注意:在实际应用中,视图的使用需谨慎,因为视图的数据与对应表数据互相关联。在操作视图时,务必确保了解相关表的结构和数据,以免造成错误或丢失数据。同时,为了优化查询性能,可以考虑使用同义词来进一步简化查询过程。

到了这里,关于数据库强化(1.视图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库原理及应用实验报告-实验4-SQL的视图

    实验目的 熟悉SQL支持的有关视图的操作,能够熟练使用SQL语句来创建需要的视图,对视图进行查询和删除视图。 实验内容 定义常见的视图形式,包括: 行列子集视图 WITH CHECK OPTION的视图 基于多个基表的视图 基于视图的视图 带表达式的视图 分组视图 通过实验考察WITH CHEC

    2023年04月26日
    浏览(59)
  • SQL Server判断数据库、表、列、视图、存储过程、函数是否存在

    在写一些业务逻辑相对复杂点的存储过程的时候,经常会用到临时表或者数据表作为临时结果的保存。但每次在作表是否存在的判断时,往往想不起完整的SQL写法。因此,记录一些常用的数据库对象是否存在的判断方法,可以达到快速查找的目的。正是:好记性不如烂笔头。

    2024年02月02日
    浏览(128)
  • SQL server设置用户只能访问特定数据库、访问特定表或视图

    在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我

    2023年04月09日
    浏览(78)
  • 【SQL Server】数据库开发指南(六)索引和视图的使用技巧、方法与综合应用

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月06日
    浏览(80)
  • 数据库 实验8 视图

    实验8  视图 一、实验目的: (1) 理解视图的概念。 (2) 掌握创建、更改、删除视图的方法。 (3) 掌握使用视图来访问数据的方法。 二、实验要求 1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验

    2024年02月06日
    浏览(70)
  • 数据库的视图

    数据库视图是一种虚拟的表,它不是一个实际的表,而是根据一个或多个实际表的查询结果生成的一个虚拟表,它可以看作是对一个或多个表的一个或多个列的子集的逻辑表示。在数据库中,视图有以下几个作用: 数据安全:数据库视图可以隐藏数据库中某些敏感的数据,只

    2024年02月09日
    浏览(42)
  • 【MySQL 数据库】8、视图

    视图(View)是一种虚拟存在的表 视图中的数据并不在数据库中真实存在 行和列数据来自 定义视图的查询中使用的表 ,并且是在使用视图时动态生成的 当使用 WITH CHECK OPTION 子句创建视图时,MySQL 会通过视图检查正在更改的每个行,例如 插入,更新,删除 ,以使其符合视图

    2024年02月08日
    浏览(64)
  • 【数据库原理】(13)视图的使用

    视图(View) 是一种虚拟的表,它的内容由查询定义,但不存储实际的数据。视图是从一个或多个基本表(或其他视图)生成的。 特点: 虚拟性 :视图不包含数据本身,仅保存了一个查询,这个查询在每次访问视图时动态地执行。 动态性 :视图显示的数据是从基本表中实时

    2024年02月02日
    浏览(41)
  • 数据库视图与索引经典题

    https://www.jianshu.com/p/d0aa8ac94f40 可以通过视图对某些用户查询的数据进行限制 可以把一些常用的、复杂的统计类的做成视图 使用视图 :当做一张虚拟的表来使用 视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。 数据库只存放视图的定义,而不

    2024年02月12日
    浏览(43)
  • 数据库实验3---索引和视图

    使用SQL语句ALTER TABLE分别删除studentsdb数据库的student_info表、grade表、curriculum表的主键索引。 使用SQL语句为curriculum表的课程编号创建唯一性索引,命名为cno_idx。 使用SQL语句为grade表的“分数”字段创建一个普通索引,命名为grade_idx。 使用SQL语句为grade表的“学号”和“课程编

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包