数据库实验:SQL的数据视图

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

视图概述

视图是由数据库中的一个表或多个表导出的虚拟表,其作用是方便用户对数据的操作

视图的概念

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据

视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,例如,员工信息表,可以用视图只显示姓名、工龄、地址,而不显示社会保险号和工资数等;另一个原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列

视图的作用

视图是在原有表或者视图的基础上重新定义的虚拟表,这可以从原有的表上选取对用户有用的信息,忽略次要信息,其作用类似于筛选。视图的作用归纳为如下几点:

1.使操作简单化
视图需要达到的目的就是所见即所需。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件

2.增加数据的安全性

通过视图,用户只能查询和修改指定的数据。指定数据之外的信息,用户根本接触不到。这样可以防止敏感信息被未授权的用户查看,增强机密信息的安全性

3.提高表的逻辑独立性

视图可以屏蔽原有表结构变化带来的影响。例如原有表增加列和删除未被引用的列,对视图不会造成影响。同样,如果修改表中的某些列,可以使用修改视图来解决这些列带来的影响

实验目的

(1) 掌握DBMS的数据查询功能
(2) 掌握SQL语言的视图功能

实验内容

(1) 创建表的视图
(2) 利用视图完成表的查询
(3) 删除表的视图

实验要求

(1) 掌握视图的定义
(2) 掌握对视图的操作
(3) 写出实验报告

实验过程

数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
该条款可以给出 一个可更新的视图,用于防止插入到select_statement中的子句不为真的行中。它还 防止更新子句为 true 但更新会导致其不为 true 的行(在 换句话说,它可以防止可见行更新为 不可见的行)。WITH CHECK OPTIONWHEREWHERE
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
会出现无法插入的问题
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
数据库实验:SQL的数据视图,数据库概论,数据库,sql,oracle,mysql,笔记
(1)创建视图
练习1:创建信息系学生的视图。

CREATE VIEW IS_Student
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE Sdept='IS'
WITH CHECK OPTION;

思考:其中,WITH CHECK OPTION子句的作用是什么?

练习2:建立信息系选修了1号课程且成绩在88分以上的学生的视图。
解法1:

CREATE VIEW IS_S1_88(Sno,Sname,Grade)
AS
SELECT Student.Sno, Sname, Grade
FROM Student,SC
WHERE Sdept='IS' AND 
      Student.Sno=SC.Sno AND
      Cno='1' AND Grade>=88;
      ```
解法2:
```sql
CREATE VIEW IS_S1_88(Sno,Sname,Grade)
AS
SELECT IS_Student.Sno, Sname, Grade
FROM IS_Student,SC
WHERE IS_Student.Sno=SC.Sno AND
      Cno='1' AND Grade>=88;

练习3:将学生的学号及平均成绩定义为一个视图。

CREATE VIEW S_G(Sno,Gavg)
AS
SELECT Sno, AVG(Grade)
FROM SC
GROUP BY Sno;

(2)查询视图
练习4:在信息系学生的视图中找出年龄小于19的女生。

SELECT Sno,Sname,Ssex,Sage
FROM IS_Student
WHERE Sage<19 and Ssex='女';

思考:试写出通过视图消解法转换后的查询语句。
练习5:利用IS_S1_88视图,查询信息系选修了1号课程且成绩在92分以上的学生的学号、姓名和成绩。

SELECT *
FROM IS_S1_88
WHERE Grade>=92;

思考:如何查询信息系选修了1号课程且成绩在85分以上的学生的学号、姓名、性别、年龄和成绩?

练习6:在S_G视图(参见练习3)中查询平均成绩在88分以上的学生学号和平均成绩。

SELECT *
FROM S_G
WHERE Gavg>=88;

思考:对于此视图查询语句,SQL Server2005能否正确完成视图消解?试根据实际执行结果的正确与否加以判断,并写出视图消解转换后的SQL语句。(参考教材p122-123)

(3)更新视图
练习7:向信息系学生视图IS_Student中插入一个新的学生元组,其中学号为200215185,姓名为周捷轮,性别为男,年龄为23岁。

INSERT 
INTO IS_Student
VALUES('200215185','周捷轮','男',23);

思考:执行此语句会出现什么问题?如何修改?
试试:
① 首先,使用如下语句新建一个信息系学生视图IS_Student2:

CREATE VIEW IS_Student2
AS
SELECT Sno,Sname,Ssex,Sage
FROM Student
WHERE isnull(Sdept,'IS')= 'IS ' /*判断Sdept是否为空,若为空则用'IS'代替 */
WITH CHECK OPTION;

思考:与练习1中建立的IS_Student视图有何区别?
② 然后,执行如下SQL语句,对视图进行插入操作,观察视图和基本表中的结果是否正确?

INSERT 
INTO IS_Student2
VALUES('200215185','周捷轮','男',23);

练习8:将信息系学生视图IS_Student中学号为200215132的学生姓名修改为樊虹宇。

UPDATE IS_Student 
SET Sname='樊虹宇'
WHERE Sno='200215132';

观察:视图IS_Student、IS_Student2以及基本表Student中的数据的变化情况。

练习9:删除信息系学生视图IS_Student中学号为200215135的记录。

DELETE
FROM IS_Student 
WHERE Sno='200215135';

观察:视图IS_Student、IS_Student2以及基本表Student中的数据的变化情况。

(4)删除视图(即删除视图的定义)
练习8:删除视图S_G和视图IS_Student2。

DROP VIEW S_G;
DROP VIEW IS_Student2;

思考:如何删除视图IS_Student及其导出的其他视图?(提示:SQL Server的DROP VIEW 语句中不支持CASCADE)

扩展练习
首先执行S_T.sql,重建示例数据库S_T
然后写出并执行SQL语句完成以下各种操作,记录查询结果

AS
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student
WHERE Sdept='CS'
WITH CHECK OPTION;

通过视图CS_Student查询计算机系男生的详细信息

通过视图CS_Student将计算机系的一个新生元组(学号为200215120,姓名为龙语嫣,性别为女,年龄17岁)插入表中

INSERT 
INTO CS_Student
VALUES('200215120','龙语嫣','女',17,'CS');

如果换成如下语句:(系别改为信息系)

INSERT 
INTO CS_Student
VALUES('200215120','龙语嫣','女',17,'IS');

会出现什么问题?

通过视图CS_Student将计算机系某个男生(学号为200215121)的年龄修改为19岁
将信息系所有女生的学号及她的平均成绩定义为一个视图S_F_G
通过视图S_F_G查询信息系所有女生中平均成绩在85-95之间的学号及平均成绩
(7)删除视图IS_Student和视图S_F_G
创建表的视图
例如:建立信息系学生的视图

       CREATE VIEW IS_Student
               AS 
               SELECT Sno,Sname,Sage
               FROM    Student
               WHERE  Sdept= 'IS'

利用视图完成表的查询
例如:查询信息系选修了1号课程的学生

SELECT  Sno,Sname
FROM     IS_Student,SC
WHERE  IS_Student.Sno =SC.Sno AND
                  SC.Cno= '1'

删除表的视图
例如:文章来源地址https://www.toymoban.com/news/detail-743619.html

DROP VIEW IS_Student

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

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

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

相关文章

  • 【数据库概论】第三章 SQL简述、数据定义和索引

    最早在IBM的关系数据库管理系统原型SystemR上实现,后来美国国家标准局(ANSI)批准SQL作为关系数据库语言的美国标准,同年公布了SQL标准文本。近些年来SQL标准的内容越来越丰富和复杂。目前没有任何一个数据库系统能够支持SQL标准的所有概念和特性,同时不少软件厂商对

    2024年02月05日
    浏览(68)
  • 数据库sql语句(视图的创建)

    例题:  建表:要注意各表之间的索引联系,建表先后顺序很重要,不然建不了,例如先建dept,在建其他表,先在dept插入数据,再在其他表插入数据 (1) (2)  (3)  (4) (5)    插入数据如下图 sql语句: 在 Student 表中加入属性 SAGE(INT 型 )  将 Student 表中的属性 SA

    2024年02月04日
    浏览(70)
  • SQL Server数据库 -- 索引与视图

    一、索引 聚集索引 非聚集索引 二、视图 三、自定义函数 标量函数 表值函数 四、游标 五、总结 在学习完创建库表、查询等知识点后,为了更加方便优化数据库的存储和内容,我们需要学习一系列的方法例如索引与视图等等,从而使我们更加熟练和使用数据库,突破表面,

    2024年02月14日
    浏览(54)
  • GaussDB云数据库SQL应用系列-视图管理

    一、前言 GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。 数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。 参

    2024年02月06日
    浏览(118)
  • 【Oracle】使用 SQL Developer 连接 Oracle 数据库

    SQL Developer 是 Oracle 官方推出的一款免费的数据库开发工具,它提供了丰富的数据库开发功能,其中包括连接 Oracle 数据库的功能。 在本文中,我们将从多个方面详细阐述如何使用 SQL Developer 连接 Oracle 数据库。 在连接 Oracle 数据库前,需要需要做一些准备工作,包括安装 SQ

    2024年02月06日
    浏览(70)
  • 【Oracle 数据库 SQL 语句 】积累1

    : grouping sets ((分组字段1,分组字段2),()) : coalesce合并多个字段,显示第一个不为null的值

    2024年02月13日
    浏览(62)
  • Sql server 连接 Oracle数据库

    前提预警:本机必须装有Oracle客户端 检查是否安装Oracle客户端,并检查TNS信息是否配置完成 1.1、 在cmd中执行 sqlplus ,没有报错并出现Oracle版本号,则表示Oracle已安装 1.2、配置TNS信息(最上面的10.0.0.130可随意定义,eg:test、orcl、qerghasd…) 配置ODBC数据信息 2.1、打开ODBC数据

    2024年02月03日
    浏览(59)
  • 用SQL语句操作Oracle数据库——数据更新

    数据库中的数据更新操作有3种:1)向表中添加若干行数据(增);2)删除表中的若干行数据(删);3)修改表中的数据(改)。对于这3种操作,SQL语言中有3种相应的语句与之对应。接下来让我们逐一详细地了解一下。 本文我们依然使用以下三个表来进行数据更新操作:

    2024年01月19日
    浏览(67)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(70)
  • 主流数据库(SQL Server、Mysql、Oracle)通过sql实现多行数据合为一行

    1、方法一:使用 STUFF 和 FOR XML PATH 进行多行合并成一行 (1)FOR XML PATH用法 FOR XML 是 SQL Server 提供的一种功能,允许您将查询结果转换为 XML 格式。 PATH 模式则是其中一种灵活的方式来构造自定义的XML结构。 1、基本字符串连接 : 当您想从单列中提取所有行的数据并连接成一

    2024年04月10日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包