• SQL数据库视图


    视图的定义:视图是从一个或多个表导出的虚表。视图只能建立在当前正在使用的数据库中。
    优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。
    2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
    3.视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
    4.在某些情况下,由于表中数据量太大,因此在表的设计时常将表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。 
    5.视图提供了一个简单而有效的安全机制。
    用T-SQL语句创建视图
    语法:

    create view 视图名
    as
    select语句

    视图创建后,只在数据字典中存放视图的定义,而其中的select语句并不执行。
    创建视图
    【例】创建v_student视图,包含计算机专业学生的学号,姓名

    create view cs_course
          as 
     select 学号,姓名
             from student
             where 专业名=‘计算机’ 

    --创建多表的视图

    create view v_name1
    as
    select a.customerid,companyname,orderid,c.city,photo
    from customers as a join [order] as b
    on a.customerid=b.customerid
    join employees c
    on b.employeeid=c.employeeid

    查询视图
    语法:

    select 字段 from 视图名

    【例】在视图v_student中查询计算机专业的学生学号和姓名

    select 学号,姓名 from v_student

    修改视图
    语法:  

    alter view 视图名
            as
            T-SQL语句


    【例】将v_student视图修改为包括计算机专业学生的学号,
          其选修的课程号及成绩。 

    alter view v_student
          as
    	select student.学号,课程号,成绩
            from student, subject
            where student.学号=subject.学号 
            and 专业名=‘计算机’ 


    删除视图
    语法:

    drop view 视图名

    【例】删除名为student_course_avg的视图

    drop view student_course_avg

    向视图中插入数据
    语法:

    insert into 视图名(字段名...)
    	values(字段名...)

    练习:向v_student视图中插入一条纪录  

    insert into cs_course(学号,课程号,成绩)
         values(1111,1,88)

    更新视图的数据
    语法:

    update 视图名
    	set语句

    【例】将v_student视图中学号为1001的学生的1号课程 成绩改90。

    use grade
          update cs_course
          set 成绩=90
          where 学号=1001 and 课程号=1

    更新视图的数据
    使用视图修改数据时,需要注意以下几点:
    (1)修改视图中的数据时,不能同时修改两个或者多个基表,可以对基于两个或多个基表或者视图的视图进行修改,但是每次修改都只能影响一个基表。
    (2)不能修改那些通过计算得到的字段,如包含计算值或者合计函数的字段。
    (3)执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。
    (4)如果视图在创建时引用了多个数据表则无法用DELETE命令删除其中的数据,若使用UPDATE命令更新数据,则应与INSERT语句一样,被更新的列必须属于同一个数据表。
    视图的加密
    with encryption 表示SQL Server 加密包含 create view 语句文本在内的系统表列。只能加密,不可解密,所以加密前要备份.

    create view v1
    	with encryption
    	as
    	select 学号,姓名 from student

    查看视图定义
    语法:

    exec sp_helptext 视图名

    【例】查看视图v1:

    Exec sp_helptext v1

    执行后,出现提示:对象备注已加密!
          ★加密后无法查看视图,所以需要保存源代码!


    sp_helptext显示规则、默认值、未加密的存储过程、用户定义函数、触发器或视图的文本
    视图的重命名:
    可以使用系统存储过程sp_rename修改视图的名称,该过程的语法形式如下: 

    exec sp_rename? old_name,new_name

    例:把视图v2重命名为v_part:    

    exec sp_rename? v2,v_part 
  • 相关阅读:
    0206-leetcode算法实现-反转链表reverse-linked-list-python&golang实现
    Elasticsearch集群角色类型node.master及node.data
    linux cache缓存过大导致内存资源不够用
    helm v3 调试 k8s elasticsearch集群(5)
    0203-leetcode算法实现之移除链表元素-remove-linked-list-elements-python&golang实现
    算法学习步骤
    conda 安装的坑
    matplotlib Demo
    pandas小demo
    深度学习常见问题
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663677.html
Copyright © 2020-2023  润新知