mysql数据库rt_MySQL数据库----视图

视图

视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。

使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用

-- 1.视图是一个虚拟表(非正式存在),其本质是其本质是

-- 【根据SQL语句获取动态的数据集,并为其命名】,

-- 用户使用时只需使用【名称】即可获取结果集,

-- 可以将该结果集当做表来使用。

-- 2.

-- 有了视图以后你是不是觉得写sql语句就很简单了,但是你尽量不要这样做

-- 因为mysql是DBA管着呢,那么你告诉DBA建一堆视图,你写程序的时候是方便了,

-- 但是你要是修改呢,那么你就得修改视图了,你就得找到DBA修改你的视图了,

-- 那么这样联系别人会很麻烦的。说不定人家还很忙呢。还是推荐自己去写sql语句。

-- #注意:

-- 如果是一个单表的就可以修改或者删除或者插入

-- 如果是几个表关联的时候是不可以删除或者插入的,有的可以进行修改操作,有的不可以进行修改)

准备表

========================

创建部门表

create table dep(

id int primary key auto_increment,

name char(32)

);

创建用户表

create table user(

id int primary key auto_increment,

name char(32),

dep_id int,

foreign key(dep_id) references dep(id)

);

插数据

insert into dep(name) values('外交部'),('销售'),('财经部');

insert into user(name,dep_id) values ('egon',1),

('alex',2),

('haiyan',3);

1.创建视图

创建视图语法

CREATE VIEW 视图名称 AS SQL语句

create view teacher_view as select tid from teacher where tname='李平老师';

#连表

select * from dep left join user on dep.id = user.dep_id;

#创建一个视图

create view user_dep_view as select dep.id depid ,user.id uid ,user.name uname,dep.name depname from dep left join user

on dep.id = user.dep_id;

-- 这样创建一个视图以后就可以吧一个虚拟表保存下来,就可以查看了。

select uname from user_dep_view where depid = 3;

-- 我的电脑上不可以增删改,只可查看。但是有的电脑上又可以增删改,可能是跟版本有关吧

#测试

insert into user_dep_view VALUES (1,2,'egon','人文部'); #会报错

DELETE from user_dep_view where uid = 1; #会报错

update user_dep_view set uname = '海燕' where depid = 2; #会报错

-- 对于单表来说是可以修改的,并且原来表的也就更改了。

-- 但是一般还是不要这样改。视图大多数是用来查看的

#建表

CREATE TABLE t1(

id int PRIMARY KEY auto_increment,

name CHAR(10)

);

#插入数据

insert into t1 VALUES (1,'egon'),

(2,'daa'),

(3,'eef');

#创建视图

CREATE view t1_view as select * from t1;

#测试创建视图以后还能不能增删改查

select * from t1_view;

update t1_view set name = '海燕' where id = 2; #可以修改(而且原来表的记录也修改了)

INSERT into t1_view values(4,'aaa'); #可以插入(同上)

delete from t1_view where id=3;#同上

2.修改视图

语法:ALTER VIEW 视图名称 AS SQL语句

3.删除视图

语法:DROP VIEW 视图名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值