MSSQL之十九 视图

举报
tea_year 发表于 2021/12/30 00:55:12 2021/12/30
【摘要】         视频课 https://edu.csdn.net/course/play/7940 视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上视图中并不存放数据,而是存放在视图所引用的原始表(基表)中同一...

       

视频课 https://edu.csdn.net/course/play/7940

视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上视图中并不存放数据,而是存放在视图所引用的原始表(基表)中同一张原始表,根据不同用户的不同需求,可以创建不同的视图.

       视图的用途 

          筛选表中的行
          防止未经许可的用户访问敏感数据
          降低数据库的复杂程度
          将多个物理数据库抽象为一个逻辑数据库


CREATE VIEW view_name  
   AS
    <select语句>


  
  1. create table 出版社信息表
  2. (
  3. pub_id int not null primary key,
  4. pub_name char(10),
  5. city char(10)
  6. )
  7. create table 图书信息表
  8. (
  9. book_id int not null primary key,
  10. book_name char(16),
  11. price money,
  12. pub_id int
  13. constraint FK_books与publish
  14. foreign key
  15. references 出版社信息表 (pub_id)
  16. )
  17. drop table 出版社信息表
  18. drop table 图书信息表
  19. insert into 图书信息表 values(1,'C 语言程序设计',62,1)
  20. insert into 图书信息表 values(2,'VB 程序设计',46,1)
  21. insert into 图书信息表 values(3,'Java 程序设计',54,3)
  22. insert into 图书信息表 values(4,'C++ 程序设计',36,4)
  23. insert into 图书信息表 values(5,'汇编语言',39,3)
  24. insert into 图书信息表 values(6,'T-SQL 语言',64,4)
  25. insert into 出版社信息表 values(1,'科技出版社','福建')
  26. insert into 出版社信息表 values(2,'前进出版社','上海')
  27. insert into 出版社信息表 values(3,'希望出版社','河南')
  28. insert into 出版社信息表 values(4,'胜利出版社','广州')
  29. -----------------------------------------------
  30. select * from 图书信息表
  31. select * from 出版社信息表
  32. -------------------------------------------------
  33. create view view_infor1 (编号cc,名称aa,城市bb) --查询结果起别名
  34. as
  35. select top 3 pub_id as 编号,pub_name as 名称,city as 城市 from 出版社信息表
  36. --where city='福建'
  37. order by pub_id desc
  38. drop view view_infor1
  39. ---------------------------------------------
  40. select * from view_infor1 -- 执行创建的视图
  41. ----------------------------------------------
  42. ---------------------------------------------------------
  43. drop view view_infor
  44. ---------------------------------------------------------
  45. --视图的查询
  46. create view view_infor --(book_id,book_name,price)
  47. as
  48. select sum(price) [as]
  49. from 图书信息表
  50. --COMPUTE sum(price)
  51. drop view view_infor
  52. select * from view_infor
  53. ----------------------------------------------------------
  54. select * from view_infor
  55. where price > 40
  56. order by price desc
  57. ------上下等价-------------------------
  58. select book_id,book_name,price from 图书信息表
  59. where price > 40
  60. order by price desc
  61. ---------------------------------------
  62. create view view_infor(book_name,sum_price)
  63. as
  64. select book_name,sum(price)
  65. from 图书信息表
  66. group by book_name
  67. --------------------------------------------
  68. select * from view_infor
  69. --===================================================
  70. --===================================================
  71. select * from 图书信息表
  72. create view view_infor(book_id,book_name,price,pub_id)
  73. as
  74. select book_id,book_name,price,pub_id
  75. from 图书信息表
  76. select * from view_infor
  77. drop view view_infor
  78. --视图的更新
  79. update view_infor
  80. set price=price+100
  81. where book_id=1
  82. --==========================================================
  83. --视图的插入
  84. alter view view_infor (book_id,book_name,price,外间)
  85. as
  86. select book_id,book_name,price,pub_id
  87. from 图书信息表
  88. insert into view_infor
  89. values(7,'.NET 程序设计',100,3)
  90. --=============================================
  91. select * from 图书信息表


  
  1. create table 产品销售
  2. (
  3. [产品 ID] smallint primary key not null,
  4. 产品名称 varchar(40) not null,
  5. 售价 money not null,
  6. [制造商 ID] smallint not null
  7. )
  8. create table 制造商
  9. (
  10. [制造商 ID] smallint primary key not null,
  11. 制造商名称 varchar(20),
  12. 联络人 char(16),
  13. 地址 varchar(40),
  14. 电话 char(16),
  15. 传真 char(16)
  16. )
  17. drop table 制造商
  18. drop table 产品销售
  19. insert into 产品销售 values(1,'电脑',1200,1)
  20. insert into 产品销售 values(2,'复印机',2400,1)
  21. insert into 产品销售 values(3,'显示器',1660,2)
  22. insert into 产品销售 values(4,'数码相机',3450,2)
  23. insert into 产品销售 values(5,'打印机',1340,4)
  24. insert into 产品销售 values(6,'扫描仪',2600,4)
  25. insert into 制造商 values(1,'新兴科技公司','王先生','北京市大兴区林校路8号','010-12345678','010-987654321')
  26. insert into 制造商 values(2,'亨通科技公司','张先生','北京市海淀区北大路12号','010-23456791','010-69874565')
  27. insert into 制造商 values(3,'新天地电子有限公司','付先生','北京市东城区文附路34号','010-45698715','010-32698745')
  28. insert into 制造商 values(4,'王牌计算机公司','陶先生','北京市朝阳区国际路8号','010-56987456','010-45987456')
  29. insert into 制造商 values(5,'胜利科技有限公司','李先生','天津市南开区安鞍山西道9号','022-12369856','022-45987456')
  30. insert into 制造商 values(6,'超音速计算机公司','赵先生','天津市红桥区西园路6号','022-56987455','022-78459564')
  31. select * from 产品销售
  32. select * from 制造商
  33. select *
  34. from 产品销售,制造商
  35. where 产品销售.[制造商 ID] = 制造商.[制造商 ID]
  36. --group by 产品名称,制造商名称
  37. --with cube
  38. order by 制造商名称
  39. compute sum(售价) by 制造商名称
  40. ---视图中oder by 子句必须与 top 联合使用-----------------------------------------创建视图--------------------------------------------------------
  41. --如果创建视图时 查询有 cumpute...by 则视图不能创建
  42. create view 产品查询
  43. as
  44. select top 2 产品名称,制造商名称
  45. from 产品销售,制造商
  46. where 产品销售.[制造商 ID] = 制造商.[制造商 ID]
  47. --group by 产品名称,制造商名称
  48. --with cube
  49. --order by 制造商名称
  50. --compute sum(售价) by 制造商名称
  51. go
  52. --=============================================
  53. select * from 产品查询
  54. select *
  55. from 产品销售
  56. drop view 产品查询
  57. select * from 产品查询
  58. --===================================================
  59. update 产品查询
  60. set 售价=售价 + 200
  61. where 产品名称='电脑'
  62. --insert into 产品查询 values(
  63. --====================================================
  64. drop view 产品查询 -- 删除视图
  65. -------------------------------------视图查询-------------------------------------------------------
  66. select 产品名称 as 贫民 from 产品查询
  67. /*
  68. 视图优点:
  69. 1.增加可读性。
  70. 2.数据安全及保密。
  71. 3.降低查询的复杂度。
  72. 4.方便程序维护。
  73. */
  74. /* 创建视图语句中,不可使用select into / order by / compute /compute by.
  75. create view MyView
  76. as
  77. select mycol1,mycol2 from mytable order by mycol2 -- 错误写法
  78. select * from MyView order by mycol2 -- 正确写法
  79. */
  80. ----------------------------------------------------------------------------指定视图字段别名--------------------
  81. alter view 产品查询 (品名,老板,大老板) -- 指定字段别名
  82. with encryption --对视图加密
  83. as
  84. select 产品名称,制造商名称,联络人
  85. from 产品销售,制造商
  86. where 产品销售.[制造商 ID1] = 制造商.[制造商 ID]
  87. --compute 售价
  88. --order by 制造商名称
  89. go
  90. select * from 产品查询
  91. order by 定价 desc
  92. drop view 产品查询
  93. -------------------------------------------------------------------------------视图加密---------------------------
  94. create view 产品查询_1
  95. with encryption
  96. as
  97. select 产品名称,售价,制造商名称
  98. from 产品销售,制造商
  99. where 产品销售.[制造商 ID] = 制造商.[制造商 ID]
  100. select * from 产品查询_1
  101. -----------------------------------修改视图-----------------------------
  102. alter view 产品查询_1 (品名,定价,长牌)
  103. as
  104. select 产品名称,售价,制造商名称
  105. from 产品销售,制造商
  106. where 产品销售.[制造商 ID] = 制造商.[制造商 ID]
  107. drop view 产品查询_1 -- 删除视图


  
  1. --在视图中用order by
  2. select * from sysobjects order by name
  3. create view v_test
  4. as
  5. --select * from sysobjects order by name
  6. select top 100 percent * from sysobjects order by name
  7. select * from v_test

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/52403451

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。