SQL 中的视图简单讲解

--视图
--什么是视图,视图是包含一张或多张表的列杂合成的数据集,是由SQL语句查询结果所构成的
--视图是虚拟表,表中数据其实是从真实表中引用而来的,真实表数据改变,所引用的视图也变
--对视图可以进行增删改查,与普通表无异,修改有一定限制

--使用视图的优点
--a,视点集中,用户只看到自己需要的数据
--b,简化操作,主要表现在大量的复杂的查询时候简化
--c,定制数据,可以让不同用户看到不同的数据
--d,合并分割数据,如果表的数据量太大时候,对表进行垂直水平分割时候,影响表结构,而采用视图就不会
--e,安全性,通过视图用户只能修改删除看到自己的那一部分
--注意事项:
--1,只能自当前数据库中创建视图,最多只能1024列
--2,不能在视图上创建索引,不能在规则,默认,触发器,张引用视图
--3,查询中不能有临时表,不能包含 order by ,into 子句
--4,一个视图只能包含一条SQL语句
--5,列名不能为空没有的必须取别名
--缺点
--性能差,修改限制
 

 

if exists(select * from sys.databases where name ='stuDB1')
	drop database stuDB1
go
create database stuDB1
go
use stuDB1
go
create table bank
(
	cusId int primary key identity,
	cusName nvarchar(16),
	cusMoney money check(cusMoney>=1 and cusMoney<100000 ) --约束规定账户里面金额不能少于1元
)
go
insert into bank values('马超',2000)
insert into bank values('孙权',1000)
--创建一个视图
go
create view view_bankAll
as
	select * from bank--其中语句可以随意写,但只能一条哦
go

--创建视图查询钱最多的一个人
create view view_maxMoney
as
	select    max(cusMoney) '存款' from bank

go
select * from view_maxMoney
--删除视图
DROP VIEW view_maxMoney
select max(cusMoney) from bank

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你一个实际的 SQL 视图的代码讲解。 假设我们有两个表,一个是 `students` 表,包含学生的姓名和英语成绩,另一个是 `classes` 表,包含班级名称和对应的学生姓名。 students 表: | name | english | |------|---------| | Tom | 85 | | Jack | 92 | | Lily | 78 | classes 表: | class | name | |-------|-------| | A | Tom | | A | Jack | | B | Lily | | B | Tom | | C | Jack | | C | Lily | 现在我们需要查询每个班级的平均英语成绩,可以使用以下 SQL 语句: ``` SELECT classes.class, AVG(students.english) AS avg_english FROM classes JOIN students ON classes.name = students.name GROUP BY classes.class; ``` 这个查询语句会得到以下结果: | class | avg_english | |-------|------------| | A | 88.5 | | B | 81.5 | | C | 85 | 现在,我们可以将这个查询语句封装为一个视图,让它像一个表一样使用。创建视图SQL 语句如下: ``` CREATE VIEW class_avg_english AS SELECT classes.class, AVG(students.english) AS avg_english FROM classes JOIN students ON classes.name = students.name GROUP BY classes.class; ``` 这个视图的名称是 `class_avg_english`,它包含两个列,一个是班级名称,一个是平均英语成绩。现在,我们可以像访问表一样访问这个视图了: ``` SELECT * FROM class_avg_english; ``` 这个查询语句会得到和之前相同的结果: | class | avg_english | |-------|------------| | A | 88.5 | | B | 81.5 | | C | 85 | 这就是一个简单SQL 视图的实际代码讲解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值