view

/*
视图
视图view是一种虚拟存在的表,对于使用视图的用户涞水基本是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的
视图相当于普通表的优势:
    简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集
    安全:使用视图的用户只能访问到他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现
    数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响。源表修改列名,则可以通过修改视图来解决,不会对访问者造成影响
*/

/*
视图操作:
     创建视图
     修改视图
     删除视图
     查看视图定义
*/

/*
创建视图的语法:
        create [or replace] [algorithm={undefined|merge|temptable}]
        view view_name[(column_list)]
        as select_statement
        [[with|cascaded] check option]
修改视图的语法:
        alter [algorithm={undefined|merge|temptable}]
        view view_name[(column_list)]
        as select_statement
        [[with|cascaded] check option]
mysql的视图定义有一些限制,例如:在From关键字后面不能包含子查询,这和其他的数据库是不同的。如果视图是从其他数据库上迁移过来的,那么可能需要因此做一些改动,可以先将子查询的内容先定义成一个视图,然后对该视图再创建视图就可以实现类似的功能了。
*/
/*
引入视图:
     什么是视图?为什么要使用视图?
     有些时候,我们需要只针对一些列操作等,就要用到视图。
     视图 view
     view又被称为虚拟表,view是sql的查询结果,可以理解为物理表的一部分影子
使用视图的好处:
        1、简化复杂的查询
        2、权限控制到列
视图能不能更新,删除,添加?
        首先,针对原始表的操作一定会影响到视图的
更改视图的数据是否会影响到表呢?或者说能不能更改视图中数据呢?
      总结出来的是:视图中数据的更改会影响到物理表。但是有些数据的更改无法进行。视图是物理表的特殊的映射构成。
      当修改视图影响到的物理表的数据是可见的,客观上一一对应的,就可以更改,如果视图中更改的是某些列的平均值这样不可控的指定更改就会语句执行失败
视图再内存中是怎么存储的呢?
       视图再内存中存储的是视图的创建的查询语句
使用视图的过程?
        视图的使用过程分为两种情况:
                      1、如果视图中的代码较少,sql的做法是将视图中的sql语句和操作视图的语句连接成一条语句直接操作物理表,这种操作视图的算法叫做 merge
                      2、如果视图中的代码较多,sql的做法是先执行视图中的查询语句生成一张临时表,然后将对视图的操作转化成对临时表的操作,这种操作视图的算法叫做temptable
        视图实际操作的算法可以自己制定,默认情况下也就是不指定sql就是按照上面的两种方式自动选择操作。指定只需要在view关键字前面加上algorithm={merge|temptable}指定算法
*/
select * from emp;
--如果我只需要查询emp的ename和hiredate两个选项
select ename,hiredate from emp;
--也可以创建一个视图
create view emp_n_h
as
select ename,hiredate from emp;
--然后直接查询视图就好了
select * from emp_n_h;
select ename,avg(sal) from emp group by ename order by avg(sal) limit 3;--这样代码显得有点多,可以使用视图优化下
create view emp_n_avgsal
as
select ename,avg(sal) as avg_sal from emp group by ename;
drop view emp_n_avgsal;
select * from emp_n_avgsal order by avg_sal limit 3;

--查询视图是查询不到物理表中的其他数据的
update emp set ename=‘guo‘ where deptno=1;
select * from emp;
select * from emp_n_h;
--
update emp_n_h set ename=‘guozhen‘ where ename=‘guo‘;--可以发现这里是可以更改影响到物理表的
select * from emp_n_avgsal;
update emp_n_avgsal set avg_sal where ename=‘guozhen‘;-- 在这里操作会失败

-- create [algorithm={undefined|merge|temptable}
create algorithm=merge view emp_v1
as
select * from emp where deptno=2;
时间: 2024-08-10 17:20:52

view的相关文章

好吧就让我们结束这一切吧

http://www.tudou.com/programs/view/K7lbU7LsiJI/HGN13.htmlhttp://www.tudou.com/programs/view/SfcF7r7DsCk/XCWU7.htmlhttp://www.tudou.com/programs/view/BbljqbN52ZY/ieGvM.htmlhttp://www.tudou.com/programs/view/R4thdEitDik/17gGr.htmlhttp://www.tudou.com/p

法涉法而尴尬的收入法国

http://www.tudou.com/programs/view/pQOO07vn4Sc/l99Fi.htmlhttp://www.tudou.com/programs/view/EDJkM6ojYkc/r7RA6.htmlhttp://www.tudou.com/programs/view/Gf0zVZygPtU/EmvXY.htmlhttp://www.tudou.com/programs/view/UhqFbgbyQ6k/Z23Lx.htmlhttp://www.tudou.com/p

我不要说谎好吗

http://www.tudou.com/programs/view/KhjSmQKHEzM/McEy9.htmlhttp://www.tudou.com/programs/view/5FNDTTRKi6Y/9719g.htmlhttp://www.tudou.com/programs/view/UWFf0dz2DEk/3xPj2.htmlhttp://www.tudou.com/programs/view/b2zsYr4dCZg/gv6FP.htmlhttp://www.tudou.com/p

我不要说谎

http://www.tudou.com/programs/view/KhjSmQKHEzM/McEy9.htmlhttp://www.tudou.com/programs/view/5FNDTTRKi6Y/9719g.htmlhttp://www.tudou.com/programs/view/UWFf0dz2DEk/3xPj2.htmlhttp://www.tudou.com/programs/view/b2zsYr4dCZg/gv6FP.htmlhttp://www.tudou.com/p

如何解决IOS 动画中 Autolayout 与View Transforms的冲突

IOS 的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角 .我分析了下原来是Autolayout 与View Transforms的冲突造成的. - (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option { // first reduce the view to 1/100th of its original dimen

能够在子线程绘画的View SurfaceView

转载请注明出处:王亟亟的大牛之路 近期两天都没有写文章,一方面是自己在看书.一方面不知道写什么,本来昨天想写Glide或者RxAndroid的东西结果公司的"狗屎"网怎么都刷不好Gradle我也是无语了(FQ也没用).准备今天背着笔记本 回家搞.真是服了.. 抱怨的话不说了,来看下这一篇要讲的主角 SurfaceView,关于SurfaceView的文章事实上在别的一些网站上也有,由于我之前没写过,所以也就一直没整这部分的内容(别人写的好坏反正找好的点自己吸收吧,嘿嘿) 问题:Surf

自定义View 篇三 《手动打造ViewPage》

有了之前自定义View的理论基础,有了ViewPage.事件分发机制.滑动冲突.Scroller使用等相关知识的铺垫,今天纯手动打造一款ViewPage. 1.完成基本的显示: 在MainActivity中: public class MainActivity extends AppCompatActivity { private MyViewPage mViewPage; int[] imageIds = new int[]{ R.drawable.pic_0, R.drawable.pic_

iOS View快照,View截屏

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #78492a } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }

View Composer Agent initialization error (16): Failed to activate software license (1026556)

1.       桌面发布过程中偶尔有些桌面池中的桌面提示无法访问代理,查看报错信息如下:View Composer Agent initialization error (16):Failed to activate software license (1026556). KB地址:https://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1026556 主要意思是Windows 7系统激活的

DAO层,Service层,Controller层、View层介绍

来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此 接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,DAO层的数据源配置,以及 有关数据库连接的参数都在Spring的配置文件中进行配置. Service层 Service 层主要负责业