mysql创建全外连接的视图_MySQL视图的基础操作

fb873edfc03e3ca099f8a43d21edf5a6.png

视图:

为了提高复杂sql语句的复用性和安全性,mysql提供了视图的功能,视图本质上是一种虚拟表, 其内容和真实的表一样,包含一系列的带有名称的行和列数据,但是视图并不在数据库中以存储的数值形式存在,行和列来自自定义视图的查询所引用基本表,并在具体引用视图时动态生成。

视图的特性:

  1. 视图的列可以来自不同的表,是表的抽和在逻辑意义上建立的新关系
  2. 视图是由基本表(实表)产生的表(虚表)
  3. 视图的建立和删除不影响基本表
  4. 对视图的内容的更新(增、删、该)直接影响基本表
  5. 视图来自多个基本表时,不允许添加和删除数据

视图的好处:

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

1、新建视图:

create 

视图名不能和表名、其他视图名重名,视图实际上就是封装了复杂的查询语句。

视图名以v_或者view_开头。

例如:

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

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

查询视图:

select * from v_employee;

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

2、创建各类视图:

  • 封装常量
create view view_const
as
select 3.1415;
  • 封装聚合函数
create view view_function
as
select count(name) from dept;
  • 封装order by
create view view_orderby
as
select name from dept order by deptno desc;
  • 封装内连接
create view view_innerjoin
as
select dept.name from dept join employee on dept.deptno=employee.deptno;
  • 外连接
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、修改视图:

因为视图是虚表,所以可以先删除后新建

 create or replace view view_name
 create or replace view v_employee AS select name from employee;
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、付费专栏及课程。

余额充值