① 帮我做sql视图的管理的几个题
你这里没判念码有提供字段.!暂时掘哪用中文代替了.
1.create view VI_Student
as
select * from student where 班级名='01数据库';
2.creaet view V_CourseSub
as
select 课程名称,学分 from Course where
报名人数>30;
3.create view V_Stucou
as
select count(选课的高首Id) from 表名;
4.--忘记怎么加密去了.!
5.drop view V_Stucou;
② SQL问题,关于视图更新条件
因为更新中的插入操作对于这个包含选择塌含竖操作的视图来说是被禁止团大的.,通常只老隐有特殊的投影视图才能够执行插入.
③ sql 中在什么情况下使用视图,有什么好处
什么情况下会用到视图?
比如说一个比较复杂的查询不想每次都写很多语句,就可以写个视图。下次查询的时候是需要使用select * from视图名就可以了。
或者给特定用户开放某些表的读取权限,但要加一些行和列的限制,也可以写个视图。
视图的好处,可以主要分为四点:
第一点: 使用视图,可以定制用户数据,聚焦特定的数据。
解释:
在实际过程中,公司有不同角色的工作人员。
以销售公司为例:,采购人员,可以需要一些与其有关的数据,而与他无关的数据,对没有任何意义,我们可以根据这一实际情况,专门为采购人员创建一个视图,以后他在查询数据时,只select*fromview_caigou就可以了。
第二点:使用视图,可以简化数据操作。
解释:
在使用查询时,在很多时候要使用聚合函数,同时还要显示其它字段的信息,可能还会需要关联到其它表,这时写的语句可能会很长,如果这个动作频繁发生的话,则可以创建视图。以后要用的话,只需要select*fromview1就可以了。
第三点:使用视图,基表中的数据就有了一定的安全性
因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,故可以将基表中重要的字段信息,可以不通过视图给用户,视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改
和删除,可以保证数据的安全性。
第四点:可以合并分离的数据,创建分区视图
随着社会的发展,公司业务量不断的扩大,一个大公司,下属都设有很多的分公司,为了管理方便,需要统一表的结构,定期查看各公司业务情况,而分别看各个公司的数据很不方便,没有很好的可比性,如果将这些数据合并为一个表格里,就方便多了,这时就可以使用union关键字,将各分公司的数据合并为一个视图。
④ sql中的视图怎么创建及使用呢!
1、打开计算机桌面,单击[开始],[程序],[Microsoft SQL Server],[企业管理器],然后打开企业管理器软件。
⑤ SQL 视图每个字段都有条件
单独的你写好了得话,合起来也很简单用这样
select 部门,sum(人数),型敏
sum(case when 日期 in (‘’) then 人数 else 0 end))
from 表格 group by 部门;
使用函数内的case when 可以将很多茄胡查询合并到一起,颤租拦你可以试验下。
⑥ SQL Server视图管理中的四个限制条件
通过视图来访问数据 其优点是非常明显的 如可以起到数据保密 保证数据的逻辑独立性 简化查询操作等等
但是 话说回来 SQL Server数据库中的视图并不是万能的 他跟表这个基本对象还是有重大的区别 在使用视图的时候 需要遵守四大限制
限制条件一 视图数据的更改
当用户更新视图中的数据时 其实更改的是其对应的数据表的数据 无论是对视图中的数据进行更改 还是在视图中插入或者删除数据 都是类似的道理 但是 不是所有视图都可以进行更改 如下面的这些视图 在SQL Server数据库中就不能够直接对其内容进行更新 否则 系统会拒绝这种非法的操作
如在一个视图中 若采用Group By子句 对视图中的内容进行了汇总 则用户就不能够对这张视图进行更新 这主要是因为采用Group By子句对查询结果进行汇总在后 视图中就会丢失这条纪录的物理存储位置 如此 系统就无法找到需要更新的纪录 若用户想要在视图中更改数据 则数据库管理员就不能够在视图中添加这个Group BY分组语句
如不能够使用Distinct关键字 这个关键字的用途就是去除重复的纪录 如没有添加这个关键字的时候 视图查询出来的纪录有 条 添加了这个关键字后 数据库就会剔除重复的纪录 只显示不重复的 条纪录 此时 若用户要改变其中一个数据 则数据库就不知道其到底需要更改哪条纪录 因为视图中看起来只有一条纪录 而在基础表中可能对有的纪录有几十条 为此 若在视图中采用了Distinct关键字的话 就无法对视图中的内容进行更改
如果在视图中有AVG MAX等函数 则也不能够对其进行更新 如在一张视图中 其采用了SUN函数来汇总员工的工资时 此时 就不能够对这张表进行更新 这是数据库为了保障数据一致性所添加的限制条件
可见 试图虽然方便 安全 但是 其仍然不能够代替表的地位 当需要对一些表中的数据进行更新时 我们往往更多的通过对表的操作来完成 因为对视图内容进行直接更改的话 需要遵守一些限制条件 在实际工作中 更多的处理规则是通过前台程序直接更改后台基础表 至于这些表中数据的安全性 则要依靠前台应用程序来保护 确保更改的准确性 合法性
限制条件二 定义视图的查询语句中不能够使用某些关键字
我们都知道 视图其实就是一组查询语句组成 或者说 视图是封装查询语句的一个工具 在查询语句中 我们可以通过裤孙一些关键字来格式化显示的结果 如我们在平时工作中 经常会需要把某张表中的数据跟另外一张表进行合并 此时 数据库管理员就可以利用Select Into语句来完成 先把数据从某个表中查询出来 然后再添加到某个表中
当经常需要类似的操作时 我们是否可以把它制作成一张视图 每次有需要的时候 只需要运行这个视图即可 而不用每次都进行重新书写SQL代码 不过可惜的是 结果是否定的 在SQL Server数据库的视图中 是不能够带有Into关键字 如果要实现类似的功能 只有通过函数或者过程来实现磨肆
另外 跟Oracle数据库不同的是 在微软的SQLServer数据库中创建视图的时候 还有一个额外的限制 就是不能够在创建视图瞎纯轿的查询语句中 使用order by排序语句 这是一个很特殊的规定 一些Oracle的数据库管理员 在使用SQL Server数据库创建视图的时候 经常会犯类似的错误 他们就搞不明白 为什么Oracle数据库中可行 但是在微软的数据库中则行不通呢?这恐怕只有微软数据库产品的设计者才能够回答的问题 总之我们要记住的就是 在SQLServer数据库中 建立视图时 查询语句中不能够包含Order By语句
限制条件三 要对某些列取别名 并保证列名的唯一
在表关联查询的时候 当不同表的列名相同时 只需要加上表的前缀即可 不需要对列另外进行命名 但是 在创建视图时就会出现问题 数据库会提示 plicate column name 的错误提示 警告用户有重复的列名 有时候 用户利用Select语句连接多个来自不同表的列 若拥有相同的名字 则这个语句仍然可以执行 但是 若把它复制到创建视图的窗口 创建视图时 就会不成功
查询语句跟创建视图的查询语句还有很多类似的差异 如有时候 我们在查询语句中 可能会比较频繁的采用一些算术表达式;或者在查询语句中使用函数等等 在查询的时候 我们可以不给这个列 取名 数据库在查询的时候 会自动给其命名 但是 在创建视图时 数据库系统就会给你出难题 系统会提醒你为列取别名
从以上两个例子中 我们可以看出 虽然视图是对SQL语句的封装 但是 两者仍然有差异 创建视图的查询语句必须要遵守一定的限制 如要保证视图的各个列名的唯一;如果自阿视图中某一列是一个算术表达式 函数或者常数的时候 要给其取名字 等等
限制条件四 权限上的双重限制
为了保障基础表数据的安全性 在视图创建的时候 其权限控制比较严格
一方面 若用户需要创建视图 则必须要有数据库视图创建的权限 这是视图建立时必须遵循的一个基本条件 如有些数据库管理员虽然具有表的创建 修改权限;但是 这并不表示这个数据库管理员就有建立视图的权限 恰恰相反 在大型数据库设计中 往往会对数据库管理员进行分工 建立基础表的就只管建立基础表;负责创建视图的就只有创建视图的权限
其次 在具有创建视图权限的同时 用户还必须具有访问对应表的权限 如某个数据库管理员 已经有了创建视图的权限 此时 若其需要创建一张员工工资信息的视图 还不一定会成功 这还要这个数据库管理员有美誉跟工资信息相关的基础表的访问权限 如建立员工工资信息这张视图一共涉及到五张表 则这个数据库管理员就需要拥有者每张表的查询权限 若没有的话 则建立这张视图就会以失败告终
第三 就是视图权限的继承问题 如上面的例子中 这个数据库管理员不是基础表的所有者 但是经过所有者的授权 他就可以对这个基础表进行访问 就可以以此为基础建立视图 但是 这个数据库管理员有没有把对这个基础表的访问权限再授权给其他人呢?如他能否授权给A用户访问员工考勤信息表呢?答案是不一定 默认情况下 数据库管理员不能够再对其他用户进行授权 但是 若基础表的所有者 把这个权利给了数据库管理员之后 则他就可以对用户进行重新授权 让数据库管理员可以给A用户进行授权 让其可以进行相关的操作
lishixin/Article/program/SQLServer/201311/22451
⑦ SQL中视图的创建。修改,删除
1、创建视图
CREATE [OR REPLACE] VIEW 视图名(列1,列2...)
AS SELECT (列1,列2...)
FROM ...;
[WITH [CASCADED|LOCAL] CHECK OPTION]
(7)sql视图管理条件扩展阅读:
SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统,基于SQL的DBMS产品可以运行在从个人机、工作站到基于局域网、小型机和大型机的各种计算机系统上,具有良好的可移植性。
可以看出标准化的工作是很有意义的。早在1987年就有些有识之士预测SQL的标准化是“一场革命”,是“关系数据库管理系统的转折点”。
数据库和各种产品都使用SQL作为共同的数据存取语言和标准的接口,使不同数据库系统之间的互操作有了共同的基础,进而实现异构机、各种操作环境的共享与移植。
参考资料:网络-SQL
⑧ SQL视图问题
视图就是一个虚拟表,一般用作查询(有的视图结构不支持更改操作悄烂)
比如
你有两个表,一个表记录用户编号和基本信息,另一个表记录用户的详细信息那么你可以用sql语句把两个表关联起来查询,所得到的结果就可以做成一个视图
这样不管你要查那些信息,只要从这个视图中查就顷运卖可以了,不用再去雀逗管基本信息表和详细信息表了,所以视图比较安全。
⑨ SQL sever2005中创建分组视图直接在管理工具下操作 怎么设置分组的条件
create view S_G(Sno,Gavg)
as
select Sno,avg(Grade)
from SC
where Sno='你的条件'
group by Sno
⑩ 利用sql语句如何更新视图
更新视图有以下三条规则:
(1) 若视图是基于多个表使用联接操作而导出的,那么对这个视图执行更新操作时,每次只能影响其中的一个表。
(2) 若视图导出时包含有分组和聚合操作,则不允许对这个视图执行更新操作。
(3) 若视图是从一个表经选择、投影而导出的,并在视图中包含了表的主键字或某个候选键,这类视图称为‘行列子集视图’。对这类视图可执行更新操作。
视图只有满足下列条件才可更新:
1、select语句在选择列表中没有聚合函数,也不包含TOP,GROUP BY,UNION(除非视图是分区视图)或DISTINCT子句。聚合函数可以用在FROM子句的子查询中,只要不修改函数返回的值。
2、select语句的选择列表中没有派生列。派生列是由任何非简单列表达式(使用函数、加法或减法运算符等)所构成的结果集列。
3、select语句中的FROM子句至少引用一个表。select语句不能只包含非表格格式的表达式(即不是从表派生出的表达式)。
4、INSERT,UPDATE和DELETE语句在引用可更新视图之前,也必须如上述条件指定的那样满足某些限制条件。只有当视图可更新,并且所编写的UPDATE或INSERT语句只修改视图的FROM子句引用的一个基表中的数据时,UPDATE和INSERT语句才能引用视图。
只有当视图在其FROM子句中只引用一个表时,DELETE语句才能引用可更新的视图。