数据库基础数据库的视图操作

Posted 青爱0121

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库基础数据库的视图操作相关的知识,希望对你有一定的参考价值。

一.实验目的

 1. 定义“MIS”专业学生基本情况视图V_MIS,并根据视图查询结果。

2.将student、salebill、goods表中学生学号、姓名、商品名、商品售价,销售数量定义为视图V_SSG,并根据视图查询结果 。

3. 定义一个带有年龄的学生视图V_AGE,并根据视图查询结果。

4. 定义一个按学院统计人数、平均年龄的视图V_COM,并查询结果。

5. 将各位同学购买商品种类数、消费总额定义为视图V_S_CONSUME,并查询结果。

6. 将各类别的商品总数、商品平均售价、最小库存量定义为视图V_GOODS,要求显示商品所属类别名,并查询结果。

7. 将各供应商提供的商品总数、商品库存总量、平均进价定义视图V_SU_GOOD,要求平均进价在10元以上。并查询结果。

8. 通过视图V_COM,查询平均年龄在19岁以上的学院。

9. 通过视图V_S_CONSUME,查询消费总额在200以上的学生信息。

10. 通过视图V_SU_GOOD,查询商品库存总量小于50的供应商名、供应商电话和地址。

11. 通过视图V_MIS,新增加一个学生记录:学号s09,姓名宋江,出生年2000,CS学院,MIS专业,微信wx009,并查询结果。

12. 通过视图V_MIS,新增加一个学生记录:学号s10,姓名周瑜,出生年1999,CS学院,IT专业,微信wx010,并查询结果。

13. 通过视图V_MIS,将s01学号的姓名改成“李欢欢”,并查询结果。

14. 通过视图V_MIS,将s02学号的姓名改成“徐慧慧”,并查询结果。

15. 通过视图V_SSG,修改“力神咖啡”的商品售价为10元,并查询结果。

16. 通过视图V_MIS,删除学号为s09的学生信息,并查询结果。

17. 通过视图V_MIS,删除学号为s10的学生信息,并查询结果。

二.实验代码

重新创库T2,依题意有:

 1. 定义“MIS”专业学生基本情况视图V_MIS,并根据视图查询结果。

CREATE VIEW v_mis
as
select sno,sname,birthyear,gender,college,major,weixin
from student
where major='mis'

2.将student、salebill、goods表中学生学号、姓名、商品名、商品售价,销售数量定义为视图V_SSG,并根据视图查询结果 。

create view v_ssg
as
select student.sno,sname,goodsname,saleprice,salebill.number
from salebill join student on student.sno=salebill.sno
join goods on goods.goodsno=salebill.goodsno

3. 定义一个带有年龄的学生视图V_AGE,并根据视图查询结果。

create view v_age
as
select sno,sname,birthyear,gender,college,major,weixin,YEAR(getdate())-birthyear as 年龄
from student

select YEAR(getdate())-birthyear as 年龄
from student

select * from v_age

4. 定义一个按学院统计人数、平均年龄的视图V_COM,并查询结果。

create view v_com
as
select college,COUNT(*) as 学院人数,AVG(year(getdate())-birthyear) as Aage 
from student
group by college

select * from  v_com
drop view v_com

5. 将各位同学购买商品种类数、消费总额定义为视图V_S_CONSUME,并查询结果。

create view v_s_consume
as
select goods.categoryno,sname,SUM(salebill.number * saleprice) as SaleSum
from salebill  join student  on student.sno=salebill.sno
join goods on goods.goodsno=salebill.goodsno
group by sname,goods.categoryno

select * from v_s_consume
drop view v_s_consume

6. 将各类别的商品总数、商品平均售价、最小库存量定义为视图V_GOODS,要求显示商品所属类别名,并查询结果。

create view v_goods
as
Select categoryname,sum(number) 商品总数,
avg(saleprice) 平均售价,min(number) 最小库存 from goods 
join category on goods.categoryno=category.categoryno
group by categoryname

select * from v_goods

7. 将各供应商提供的商品总数、商品库存总量、平均进价定义视图V_SU_GOOD,要求平均进价在10元以上。并查询结果。

create view v_su_good
as
select g.supplierno,s.number as 电话,sum(g.number)商品总数,AVG(saleprice) as 平均售价,address,g.number from goods g
join supplier s on g.supplierno=s.supplierno
group by g.supplierno,g.number,address,s.number
having AVG(saleprice)>10

select * from v_su_good
drop view v_su_good
select * from supplier
select * from goods

8. 通过视图V_COM,查询平均年龄在19岁以上的学院。

select * from v_com
where Aage>19

9. 通过视图V_S_CONSUME,查询消费总额在200以上的学生信息。

select * from v_s_consume
where SaleSum>200

10. 通过视图V_SU_GOOD,查询商品库存总量小于50的供应商名、供应商电话和地址。

select *from v_su_good 
where number<50

select * from v_su_good

11. 通过视图V_MIS,新增加一个学生记录:学号s09,姓名宋江,出生年2000,CS学院,MIS专业,微信wx009,并查询结果。

insert into v_mis 
values('s09','宋江','2000','男','CS','MIS','wx009')

12. 通过视图V_MIS,新增加一个学生记录:学号s10,姓名周瑜,出生年1999,CS学院,IT专业,微信wx010,并查询结果。

insert into v_mis 
values('s10','周瑜','1999','男','CS','IT','wx010')

update v_mis set major='IT'
where sno='s10'

13. 通过视图V_MIS,将s01学号的姓名改成“李欢欢”,并查询结果。

update v_mis set sname='李欢欢'
where sno='s01'

select * from v_mis
select * from student

14. 通过视图V_MIS,将s02学号的姓名改成“徐慧慧”,并查询结果。

update v_mis set sname='徐慧慧'
where sno='s02'
select * from v_mis
select * from student

15. 通过视图V_SSG,修改“力神咖啡”的商品售价为10元,并查询结果。

update v_ssg set saleprice='10'
where goodsname='力神咖啡'

select * from v_ssg

16. 通过视图V_MIS,删除学号为s09的学生信息,并查询结果。

delete v_mis
where sno='s09'
select * from v_mis

17. 通过视图V_MIS,删除学号为s10的学生信息,并查询结果。

delete v_mis
where sno='s10'
select * from v_mis

三.代码汇总

--1.定义“MIS”专业学生基本情况视图V_MIS,并根据视图查询结果。//
CREATE VIEW v_mis
as
select sno,sname,birthyear,gender,college,major,weixin
from student
where major='mis'

select * from v_mis
DROP VIEW v_mis

--2将student、salebill、goods表//
create view v_ssg
as
select student.sno,sname,goodsname,saleprice,salebill.number
from salebill join student on student.sno=salebill.sno
join goods on goods.goodsno=salebill.goodsno

DROP VIEW v_ssg

select * from v_ssg

--3//
create view v_age
as
select sno,sname,birthyear,gender,college,major,weixin,YEAR(getdate())-birthyear as 年龄
from student

select YEAR(getdate())-birthyear as 年龄
from student

select * from v_age

--4//
create view v_com
as
select college,COUNT(*) as 学院人数,AVG(year(getdate())-birthyear) as Aage 
from student
group by college

select * from  v_com
drop view v_com

--5//
create view v_s_consume
as
select goods.categoryno,sname,SUM(salebill.number * saleprice) as SaleSum
from salebill  join student  on student.sno=salebill.sno
join goods on goods.goodsno=salebill.goodsno
group by sname,goods.categoryno

select * from v_s_consume
drop view v_s_consume

--6//
create view v_goods
as
Select categoryname,sum(number) 商品总数,
avg(saleprice) 平均售价,min(number) 最小库存 from goods 
join category on goods.categoryno=category.categoryno
group by categoryname

select * from v_goods
--7//
create view v_su_good
as
select g.supplierno,s.number as 电话,sum(g.number)商品总数,AVG(saleprice) as 平均售价,address,g.number from goods g
join supplier s on g.supplierno=s.supplierno
group by g.supplierno,g.number,address,s.number
having AVG(saleprice)>10

select * from v_su_good
drop view v_su_good
select * from supplier
select * from goods
--8//
select * from v_com
where Aage>19

--9//
select * from v_s_consume
where SaleSum>200

--10//
select *from v_su_good 
where number<50

select * from v_su_good

--11//
insert into v_mis 
values('s09','宋江','2000','男','CS','MIS','wx009')

select * from v_mis

--12//
insert into v_mis 
values('s10','周瑜','1999','男','CS','IT','wx010')

update v_mis set major='IT'
where sno='s10'

select * from v_mis
select * from student

delete student
where sno='s10'
--13
update v_mis set sname='李欢欢'
where sno='s01'

select * from v_mis
select * from student

--14//
update v_mis set sname='徐慧慧'
where sno='s02'
select * from v_mis
select * from student

--15//
update v_ssg set saleprice='10'
where goodsname='力神咖啡'

select * from v_ssg

--16//
delete v_mis
where sno='s09'
select * from v_mis

--17//
delete v_mis
where sno='s10'
select * from v_mis

MySQL系列:视图基本操作

1. 视图简介

1.1 视图定义

  视图是一种虚拟的表,是从数据库中一个或多个表中导出来的表。

  视图可以从已存在的视图的基础上定义。

  数据库中只存放视图的定义,并没有存放视图中的数据,数据存放在原来的表中。

  视图中的数据依赖于原来的表中的数据,表中的数据发生变化,显示在视图中的数据也会改变。

1.2 视图作用

  (1)增加数据安全性

  通过视图,用户只能查询和修改指定的数据。

  数据库授权命令可以限制用户的操作权限,但不能限制到特定行和列上。使用视图可以将用户的权限限制到特定的行和列上。

  (2)提高表的逻辑独立性

  视图可以屏蔽原有表结构变化带来的影响。

  原有的表结构增加列和删除未被引用的列,对视图不造成影响。

以上是关于数据库基础数据库的视图操作的主要内容,如果未能解决你的问题,请参考以下文章

java数据库学习路线和必学知识点!

大数据之Java漫谈

sqlite基础语法

Java软件开发者,如何学习大数据?

java简介

Java开发者,如何高效的学习大数据?