所以毅然离开了曾经工作三年的公司,通过视图

2019-07-20 作者:数据库   |   浏览(79)

1 视图介绍

         视图是从一个或者几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存在视图对应的数据,这些数据仍然存放在原来的基本表中。所以一旦基本表中的数据发生变化,从视图中查询的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

1.1 视图的概述

      视图是从一个或者多个表导出的,它的行为与表非常相似,但视图是一个虚拟表,在视图中可以使用SELECT语句查询数据,以及使用insert、update和delete语句修改记录,对于视图的操作最终转化为对基本数据表的操作。视图不仅可以方便操作,而且可以保障数据库系统的安全性。

 视图一经定义便存储在数据库中,与其相对应的数据并没有像表数据那样在数据库中在存储一份,通过视图看到的数据只是存放在基本表中的数据。可以对其进行增删该查,通过视图对数据修改,基本表数据也对应变化,反之亦然。

创建一个测试数据表

 

  今天周一拖着疲惫的身躯 11点才离开公司,回到家估计写完这篇博客就要17号了.

1.2 使用视图的目的与好处

1.聚焦特定数据:使用户只能看到和操作与他们有关的数据,提高了数据的安全性。
2.简化数据操作:使用户不必写复杂的查询语句就可对数据进行操作。
3.定制用户数据:使不同水平的用户能以不同的方式看到不同的数据。
4.合并分离数据:视图可以从水平和垂直方向上分割数据,但原数据库的结构保持不变。

CREATE TABLE `temp_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `endtime` int(10) NOT NULL,
  `basic_sort` smallint(8) NOT NULL,
  `type` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Preface

  一个人走在回家的路上,很黑,突然很多感触,一个人在北京拼搏,不敢停止学习的脚步,因为只要停下来就会感觉到孤独.

2 创建视图

语法:

 [ with check option ] --强制所有通过是同修改的数据,都要满足select语句中指定的条件
select查询语句
as
[ with encryption ] --用于加密视图的定义,用户只能查看不能修改。
[ (列名表) ]
create view 视图

先创建一个学生表

use marvel_db;
--创建一个学生表
create table stuTable(
    id int identity(1,1)primary key,--id 主键,自增
    name varchar(20),
    gender char(2),
    age int,
)
--往表中插入数据
insert into stuTable (name,gender,age)
values
    ('刘邦','男',23),
    ('项羽','男',22),
    ('韩信','男',21); 
insert into stuTable(name,gender,age) values('萧何','男',24)  

创建视图

--创建视图
if (exists (select * from sys.objects where name = 'stu_view'))
    drop view stu_view
go
--stu_view()不实用参数,默认为基础表中的列名称
--注意 create view 必须是批处理里面的语句
create view stu_view 
as 
select name,age from stuTable where age>20;
go
--执行视图
select * from stu_view;  

查询结果:

图片 1

对UNION 和UNION ALL 进行比较:

 

  回顾一下自己的职业生涯,写程序,做运维,搞过BI.没有目标,只是努力踏实的工作,还算稳步的前进.三年过去了自认为到了职业生涯的岔路口,想想自己到底想干什么呢?回头看看自己写的代码一点也看不到高端的影子啊!!反正是不想再当码农了,所以毅然离开了曾经工作三年的公司,从大连来到北京。

3 修改视图

 

go
alter view stu_view 
as
select * from stuTable where age>22;
go
select * from stu_view  

显示结果:

图片 2

在MySQL 5.1中文手册中有下面一句话:

    Today I'm gonna implement a consul in my environment to discover service of MySQL database and check whether the master-slave is working normally.

  • 羡慕业务专家,曾经疯狂钻研业务梦想着自己成为ERP的专家。码农想成为行业专家貌似看不见路啊....还得继续码农阿....
  • 崇拜曾经的项目经理,也是我的启蒙老师,考了PMP干项目管理吧。对于一个没有管理经验的人,一堆大理论,哪个公司会把项目给你带呢...在一个公司一干几年熬出头?...
  • SQL SERVER DBA 最终走上了这条路.... 

4 删除视图

 

go
--语法
drop view view_name1,view_name2,......,view_nameN;
--该语句可以同时删除多个视图,只要在删除各视图名称之间用逗号分隔即可。

例如:删除视图 stu_view

--语法
drop view stu_view;
--该语句可以同时删除多个视图,只要在删除各视图名称之间用逗号分隔即可。  

5 通过视图管理表中的数据

(1).通过视图向基本表中插入数据

注意:

1.可通过视图向基表中插入数据,但插入的数据实际上存放在基表中,而不是存放在视图中。

2.如果视图引用了多个表,使用insert语句插入的列必须属于同一个表。

3.若创建视图时定义了“with check option”选项,则使用视图向基表中插入数据时,必须保证插入后的数据满足定义视图的限制条件。

--(1).通过视图向基本表中插入数据
go
create view stu_insert_view(编号,姓名,性别,年龄)
as
select id,name,gender,age from stuTable;
go
select * from stuTable;
---插入一条数据
insert into stu_insert_view values('孙权','男',34);
----查看插入记录之后表中的内容。
select * from stuTable;  

显示结果:

图片 3

(2).通过视图修改基本表的数据

--查看修改之前的数据
select * from stuTable;  

显示结果:

图片 4

--修改数据
update stu_insert_view set 年龄=30 where 姓名='刘邦';
--查看修改后的数据
select * from stuTable;  

结果显示:

图片 5

(3).通过视图删除基本表的数据

注意:

1.要删除的数据必须包含在视图的结果集中。

2.如果视图引用了多个表时,无法用delete命令删除数据。

语法

--语法
delete stu_insert_view where condition;  

删除之前:

图片 6

删除:

--例子
delete stu_insert_view where 姓名 ='刘邦';
select * from stu_insert_view;
select * from stuTable;  

显示结果:

图片 7

如果您对UNION不使用关键词ALL,则所有返回的行都是唯一的,如同您已经对整个结果集合使用了DISTINCT。如果您指定了ALL,您会从所有用过的SELECT语句中得到所有匹配的行。

 

  DBA这条路依然不是一条好走的路,想做DBA光靠开发时会写的那点sql要是能找到工作,请偷笑....但是比起项目经理和行业专家个人感觉还是容易一些,也许当你年岁大一些码不动的时候也算一个不错的选择。但是DBA入门一样很难,很多人经常问如何才能入门,谁能带带我给我个机会?我也是这么问的一员,找工作面试

6总结

1.使用场景:

1.经常用到的查询,或较复杂的联合查询应当创立视图,这是会优化性能的
2.涉及到权限管理方面,比如某表中的部分字段含有机密信息,不应当让低权限的用户访问到的情况,这时候给这些用户提供一个适合他们权限的视图,供他们阅读自己的数据就行了。
2.视图与表的区别:

1.视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化表,而表不是;
2.视图(除过索引视图)没有实际的物理记录,而基本表有;
3.表示内容,视图是窗口;
4.表占物理空间,而视图不占物理空间,视图只是逻辑概念的存在;
5.视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全角度说,视图可以防止用户接触数据表,从而不知表结构;
6.表属于全局模式的表,是实表;视图数据局部模式的表,是虚表;
7.视图的建立和删除只影响视图本身,不影响对应的基本表。

 

转载自:

插入测试数据:

Introduce

  请问:几年工作经验?

INSERT INTO `temp_table` (`name`,`endtime`,`basic_sort`,`type`) VALUES ('a', '1534349307', '10', '2');
INSERT INTO `temp_table` (`name`,`endtime`,`basic_sort`,`type`) VALUES ('a', '1534349308', '14', '2');
INSERT INTO `temp_table` (`name`,`endtime`,`basic_sort`,`type`) VALUES ('c', '1534349309', '12', '1');
INSERT INTO `temp_table` (`name`,`endtime`,`basic_sort`,`type`) VALUES ('d', '1534349310', '12', '1');

 

  三年...

 图片 8

    Consul is a tool like zookeeper which can discover services we've registered on it.It's just a simple binary command which can run with simple configuration file(json format).

  请问:数据库工作经验呢?

(SELECT id,name,endtime,basic_sort,type from temp_table where type=1)
UNION 
(SELECT id,name,endtime,basic_sort,type from temp_table where type=2);

 

  鼓足勇气:三年(其实一年都不到)...

 

official website:

  对不起我们要5-10年的!

(SELECT id,name,endtime,basic_sort,type from temp_table where type=1)
UNION ALL
(SELECT id,name,endtime,basic_sort,type from temp_table where type=2);

https://www.consul.io/

  --------------------------------------

 对于上面两句分别是UNION和UNION ALL组合,但是得到的结果是一致的。

 

  请问:做过高可用负载均衡么?镜像、发布订阅、故障转移群集等等做过么?调过并行么?系统监控压力测试等等等等等等

图片 9

Framework

  没...

本文由小鱼儿玄机30码发布于数据库,转载请注明出处:所以毅然离开了曾经工作三年的公司,通过视图

关键词: 小鱼儿玄机30码