Mysql数据视图的实例与相关知识

本文详细讲述了在mysql中有关数据视图的创建、修改、查询等知识并拓展基础语法及注意事项和特点

一、什么是数据视图

数据视图(View)在数据库领域中,是一种虚拟的表(逻辑表)。它并不在数据库中存储实际的数据值,而是存储了定义该视图的SQL查询语句。当用户查询视图时,系统会根据这个查询语句动态生成对应的数据。

视图具有以下特点和用途:

1. 简化复杂查询:视图可以封装复杂的SQL查询,使得用户可以通过简单的查询语句来获取所需的数据4。
2. 提供数据抽象:视图可以隐藏数据的复杂性,只展示用户感兴趣的部分,提高数据的安全性。
3. 更新数据:在某些情况下,通过视图可以间接更新基础表的数据,但这通常受到诸多限制。
4. 保持数据一致性:当基础表的数据发生变化时,视图中的数据也会自动更新。

二、了解视图的基本语法

1. 创建视图

使用CREATE VIEW语句来创建一个视图。语法如下:

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • view_name 是你要创建的视图的名称。
  • SELECT 语句定义了视图的内容。它可以从一个或多个表中检索数据,并包含任何必要的条件或连接。

示例:

假设我们有一个employees表,我们想创建一个只显示薪资超过5000的员工的视图:

CREATE VIEW high_paid_employees AS
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > 5000;

2、修改视图

可以使用ALTER VIEW来修改视图。在MySQL中,通常的做法是:

  • 使用DROP VIEW删除旧视图。
  • 使用CREATE VIEW创建新视图。

拓展:ALTER VIEW的语句使用

ALTER VIEW view_name
AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

提示:一般SQL Server或Oracle才能支持ALTER VIEW语句的使用

3、 删除视图

使用DROP VIEW语句来删除一个视图。语法如下:

DROP VIEW view_name;
  • view_name 是你要删除的视图的名称。

示例:
删除之前创建的high_paid_employees视图:

DROP VIEW high_paid_employees;

4、查询视图

查询视图就像查询普通的表一样。你可以使用SELECT语句从视图中检索数据。

示例:
查询high_paid_employees视图中的数据:

SELECT * FROM high_paid_employees;

总实例:

1. 创建和查询视图

(1)创建视图L_view1
假设读者表名为Readers,包含字段reader_id(读者编号)、name(姓名)、class_name(类名)、borrow_days(可借天数)和borrow_count(可借数量)。另外,假设还有一个表与读者可借天数和数量相关,这里为了简化我们假设它们都在Readers表中。

CREATE VIEW L_view1 AS
SELECT reader_id, name, class_name, borrow_days, borrow_count
FROM Readers;

(2)从L_view1视图中查询

SELECT reader_id, name, borrow_days, borrow_count
FROM L_view1;

(3)创建视图L_view2
假设借阅表名为Borrowings,包含字段borrowing_id(借阅号)、book_id(书号)、reader_id(读者编号)、borrow_date(借阅日期)和return_date(还书日期)。同时假设有一个读者信息表Readers,包含字段name(姓名)。

CREATE VIEW L_view2 AS
SELECT Borrowings.borrowing_id, Borrowings.book_id, Readers.name AS reader_name, Borrowings.borrow_date, Borrowings.return_date
FROM Borrowings
JOIN Readers ON Borrowings.reader_id = Readers.reader_id;

(4)从L_view2视图中查询

SELECT *
FROM L_view2
WHERE return_date IS NULL;

(5)创建视图L_view3
在创建这个视图时,假设Borrowings表中有一个字段borrow_status(借阅状态)。

CREATE VIEW L_view3 AS
SELECT *
FROM Borrowings
WHERE borrow_status IN ('借阅', '已还')
WITH CHECK OPTION;

2. 通过视图操作数据
注意:通过视图插入、更新或删除数据可能会受到限制,这取决于视图的定义以及基础表的结构和约束。如果视图包含了复杂的连接、聚合函数或子查询,或者视图使用了WITH CHECK OPTION,那么通过视图进行的数据操作可能会失败。此外,某些数据库系统可能不允许直接通过视图进行数据操作。

(1)在L_view3视图中插入一条记录
如果视图允许插入操作(这通常取决于基础表的结构和视图的定义),你可以这样做:

INSERT INTO L_view3 (borrowing_id, book_id, reader_id, borrow_date, return_date, borrow_status)
VALUES ('100010', '411112', '2001', '2020-10-18', NULL, '借出');

(2)修改L_view2

UPDATE L_view2
SET borrow_date = CURDATE() -- 假设你的数据库支持CURDATE()函数来获取当前日期
WHERE borrowing_id = '100001';

注意:CURDATE()是MySQL中的函数,其他数据库系统可能有不同的函数来获取当前日期。

(3)删除视图L_view3中的记录

DELETE FROM L_view3
WHERE return_date IS NOT NULL;
  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值