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 视图名称
MySQL数据库----视图的更多相关文章
- mysql 数据库视图迁移
最近做一个项目,为了方便查询,建了好多的视图表,正式上线的时候需要把本地数据库迁移到服务器上. 按照常规方法: 1."导出sql","导入sql",发现视图没过 ...
- mysql数据库视图连接出现2003····错误
MySQL利用视图工具连接数据库时出现2003····错误 原因:MySQL的服务没有开启 解决步骤: ...
- mysql数据库----视图、触发器、存储过程、函数、事务、索引、其他语句
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...
- 【Java】访问mysql数据库视图
数据库连接Connect: package cn.hkwl.zaxq.mysql; import java.sql.Connection; import java.sql.DriverManager; ...
- MySQL数据库视图(view),视图定义、创建视图、修改视图
原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901
- MySQL数据库之视图
1 引言 为了简化复杂SQL语句编写,以及提高数据库安全性,MySQL数据库视图特性.视图是一张虚拟表,不在数据库中以储存的数据值形式存在.在开发中,开发者往往只对某些特定数据和所负责的特定任务感兴趣 ...
- MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...
- MySQL之 视图,触发器,存储过程,函数,事物,数据库锁,数据库备份
1.视图 视图: 是一个虚拟表,其内容由查询定义: 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. ...
随机推荐
- CentOS7.5安装Tomcat8
一.tomcat的简介 这是Apache Tomcat Servlet / JSP容器的文档包的顶级入口点 .的Apache Tomcat 8.0版实现了Servlet 3.1和JavaServer ...
- UI自动化--PageObjects(页面对象)
核心的核心:减少了重复代码的数量,减少变更涉及面:做到如果UI发生更改,则只需在一个位置应用此修复程序. PageObject:将页面作为一个对象,进行封装,包括元素定位,封装获取各元素.操作的方法: ...
- 【转】仅此一文让你明白ASP.NET MVC原理
原文地址:http://www.cnblogs.com/DotCpp/p/3269043.html ASP.NET MVC由以下两个核心组成部分构成: 一个名为UrlRoutingModule的自定义 ...
- 要学习的UML图
这是人人都是产品经理里的一节内容,这是个简单的例子,我觉得重要就摘抄一下 UML是要好好学习的一门课程呀
- Primitive Data Types
Primitive Data Types (The Java™ Tutorials > Learning the Java Language > Language Basics) http ...
- sql中charindex的用法
转自:https://www.cnblogs.com/beeone/p/3621743.html CHARINDEX和PATINDEX函数常常用来在一段字符中搜索字符或者字符串.如果被搜索的字符中包含 ...
- Python requests 301/302/303重定向(跨域/本域)cookie、Location问题
今天使用request的get方法获取一个网站的登录页信息,结果使用charles抓包的时候发现该网站登录页303(重定向的问题),网上查了很多资料,原因如下: 一.cookie 原因:利用reque ...
- LoadRunner-关联相关(解决方法二)
用例为:添加通知,下发给用户. 录制好脚本,replay时脚本未报错,但实际登录网页操作未完成(只添加了通知,未下发给用户). LR自动关联没有内容,手动查看服务器response,在保存时有一个id ...
- webstorm添加调试nodejs
打开run菜单选择Edit Configurations 展开defaults菜单,选择nodejs 点击+按钮,选择Node.js,出现下面弹出框. 点击ok保存
- javaScript高级教程(八)-----正则表达式温故知新
1.RegExp对象:五个属性二个方法 五个属性:global, ignoreCase,multiline,lastIndex,source 二个方法: exec()--模式匹配 test()--检测 ...