MySQL视图

视图:为了提高复杂sql语句的复用性和安全性,mysql提供了视图的功能,视图本质上是一种虚拟表, 其内容和真实的表一样,包含一系列的带有名称的行和列数据,但是视图并不在数据库中以存储的数值形式存在,行和列来自自定义视图的查询所引用基本表,并在具体引用视图时动态生成。
视图的特性:
  1. 视图的列可以来自不同的表,是表的抽和在逻辑意义上建立的新关系
  2. 视图是由基本表(实表)产生的表(虚表)
  3. 视图的建立和删除不影响基本表
  4. 对视图的内容的更新(增、删、该)直接影响基本表
  5. 视图来自多个基本表时,不允许添加和删除数据
视图的好处:

1、提高了重用性,就像一个函数。
2、对数据库重构,却不影响程序的运行。
3、提高了安全性能。可以对不同的用户,设定不同的视图。
让数据更加清晰。想要什么样的数据,就创建什么样的视图。

1、新建视图:

create view view_name as 查询语句

视图名不能和表名、其他视图名重名,视图实际上就是封装了复杂的查询语句.
视图名以 v_ 或者view_ 开头
例如:

create view v_employee
as
select no, name, job, mgr, hiredate, comm, deptno from employee;

原来的基表(employee)中有sql字段,在创建视图中讲sal字段隐藏掉了。
查询视图:

select * from v_employee;

查询视图和查询表很相似,但是视图可以隐藏信息。

2、创建各类视图:

  1. 封装常量
create view view_const
as
select 3.1415;
  1. 封装聚合函数
create view view_function
as
select count(name) from dept;
  1. 封装order by
create view view_orderby
as
select name from dept order by deptno desc;
  1. 封装内连接
create view view_innerjoin
as
select dept.name from dept join employee on dept.deptno=employee.deptno;
  1. 外连接
create view view_leftjoin
as
select dept.name from dept left join employee on dept.deptno=employee.deptno;

3、查看视图:

  1. show tables
  2. show table status
    显示所有的表名和视图名
    show table STATUS from 数据库名;
    show table STATUS from 数据库名 like “v%”;
  3. show create view 视图名;
  4. desc 视图名;

4、删除视图:

drop view view_name;

5、修改视图:

  1. 因为视图是虚表,所以可以先删除后新建
  2.  create or replace view view_name
     create or replace view v_employee AS select name from employee;
    
  3. alter view view_name as 查询语句

    alter view v_employee as select job from employee;
    

6、利用视图操作基本表:

①查询数据

select * from 视图名;

②利用视图操作基本表
视图不仅可以查询数据,还可以进行更新。但是对视图的更新会反应到实际表中。但是需要注意:

  1. 对视图进行添加、删除直接影响基本表
  2. 视图来自多个基本表,不允许添加和删除数据

插入:

insert into v_employee values 
(7888, "sunny", "teacher", 7782, "1987‐04‐01", null,10);

此时基本表empolyee中就会新填一条数据。

删除:

delete from v_employee where no=7888;

删除从视图中添加的no为7888的这条数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值