初学mysql(七)-数据库之视图
来源:互联网 发布:淘宝弹力椅套 编辑:程序博客网 时间:2024/05/21 11:22
上一篇博客讲了索引,这一篇博客我来说说我对mysql数据库视图的学习。
定义:是一个由查询语句定义数据内容的表,表中的数据就是SQL语句查询的数据的结果集,行和列均来自SQL查询语句中使用的数据表。视图是一种虚拟的表,是从数据库中一个或者多个实体表中导出来的虚表;数据库中只存放了视图的定义,并没有存放视图中的数据,数据还是在原来的表中存在;使用视图查询数据时,数据库系统会从原来的表中取出来的数据,节省存储空间。
优势:1):使用视图使操作简单化,用户不用理解清楚表之间的复杂的逻辑关系,不改变实体表的表结构,将经常使用的SQL语句定义为视图,可以有效的避免重复的代码量。2):使用视图可以增加数据的安全性。用户只能访问到视图给定的内容集合,这些都是数据表的某些行和列,避免用户直接操作数据表引发的一系列错误。3):提高了表的逻辑独立性。应用程序访问是通过视图访问数据表,从而程序和数据表之间被视图分离。如果数据表有变化,不用去修改SQL语句,只需去修改定义的视图语句即可,不用调整代码程序。4):容易解决复杂的查询需求。用视图可以将复杂的问题分解,然后将创建多个视图获取数据,再将视图联合起来就能得到需要的结果。
工作机制:当调用视图语句的时候,才会执行视图的SQL语句,从数据库中的一个或者多个表中存取数据。视图的内容不会存储,节省硬盘空间,它是在视图被引用的时候才派生出来数据。由于是随时操作随时调用,视图的内容与真实表的内容总是一致的。
实例:t_book表字段:
create table t_book( id primary key auto_increment, bookName varchar(20), price double, author varchar(20), bookTypeId int, bookCount double);
t_bookType表字段:
create table t_bookType( id primary key auto_increment, bookTypeName varchar(20), bookSum double);
语法格式:
create[algorithm={undefined|merge|temptable}] view 视图名字 as select 字段 from 表名 [with [cascaded|local]check option];
algorithm为可选参数,表示视图选择的算法,undefined表示mysql将自动选择所要用的算法;merge表示将视图的语句与视图的定义合并起来,使得视图定义的某一部分取代语句的对应部分;temptable表示将视图结果存入临时表,然后使用临时表执行语句。
with check option 为可选参数,表示更新视图时要保证在视图的权限范围内。cascaded表示更新视图时要满足所有相关视图和表的条件才进行更新;local表示更新视图时要满足该视图本身定义的条件即可更新。
1:创建视图1使其可以查询到bookName,以及它的总价值:
create view v1(书名,总价值) as select bookName, price*bookCount from t_book with local check option;
查询视图v1:
select *from v1;
create view vv1 as select bookName as 书名, price*bookCount as 总价值 from t_book;
查询视图vv1:
select *from vv1;
2:创建视图2使其可以查询到bookName所对应的bookTypeName名称:
create view v2(书名,书籍类别名称) as select t_b.bookName, t_bt.bookTypeName from t_book t_b, t_bookType t_btwhere t_b.bookTypeId = t_bt.id;
create view vv2(`书名`,`书籍类别名称`) as select t_b.bookName, t_bt.bookTypeName from t_book t_b, t_bookType t_bt where t_b.bookTypeId = t_bt.id;
查询视图v2:
select * from v2;
3:创建视图v3使其可以查询到bookName中价格大于30的书籍视图v3:
create view v3 as select bookName 书名,price 价格 from t_book where price > 30;
查看视图v3:
select * from v3;
4:查看视图有4中方式:
desc v1;
show table status;
show create view v1;
直接从表结构看
5:更改视图两种方式:
create or replace view v1 as select * from t_book;
alter view v1 as select bookName as 书名, price*bookCount as 总价值 from t_book;
6:更新视图:更新视图是指通过视图来插入、删除、更新表中的数据,由于视图是一个虚表只有表结构没有数据,因此更新视图都是转化为更新基本表来更新,但是更新视图只能在权限范围内,不能超出权限。
假设视图v1为
create view v1 as select * from t_book with local check option;
插入数据:
insert into v1 values(null, 'java', 100,'Bge', 1, 3);
跟新数据:
update v1 set bookName='Big Java', price = 88, author = 'BShu' where id = 1;
删除数据:
delete from v1 where id = 1;
7:删除视图:
drop view if exists v1;
这就是我学视图所总结的,如有问题请留下脚步。
- 初学mysql(七)-数据库之视图
- mysql数据库之视图
- Mysql数据库之二:初学存储过程
- 初学mysql(六)-数据库之索引
- 初学mysql(八)-数据库之触发器
- [进阶]MySQL学习笔记七之视图view
- MySQL数据库调优之七
- MySQL数据库初学
- 初学MySql数据库
- 初学MySQL数据库
- 初学mysql(二)-数据库之表内容单表查询
- MySQL数据库视图
- MySQL数据库视图详解
- MySQL数据库视图总结
- MySQL数据库/视图
- MySql数据库-11视图
- PHP初学之MySQL
- mysql触发器之初学
- 菜鸟学习笔记之java
- Support Library Features
- linux(1) -- linux文件权限
- linux中查看文件和目录的命令是什么
- 微信检测工具
- 初学mysql(七)-数据库之视图
- 国密及PKCS7的OID
- 安卓实景导航
- 欢迎使用CSDN-markdown编辑器
- 素数的和
- Struts2的ValueStack(值栈)
- 简易考生管理系统
- hive中使用-e方式执行查询
- csdn博客域名怎么改?