数据库视图的创建及使用
目录
一、实验原理
(一)视图操作SQL语句基本格式
1.创建视图
2.删除视图
(二)索引操作SQL语句基本格式
1.创建索引
2.修改索引
3.删除索引
(三)数据表记录操作SQL语句基本格式
1.SELECT语句一般格式
2.使用索引检索数据
二、实验结果
(一)数据表数据的查询
1.单表查询
(二)视图的操作
1.定义视图
一、实验原理
(一)视图操作SQL语句基本格式
1.创建视图
CREATE VIEW <视图名> [(<列名> [,<列名>]…)]
AS <子查询>
[WITH CHECK OPTION];
说明:需要指定视图列名的情形
(1) 某个目标列是聚集函数或列表达式
(2) 多表连接时选出了几个同名列
(3) 需要在视图中为某个列启用新的更合适的名字
2.删除视图
DROP VIEW <视图名>[CASCADE];
(二)索引操作SQL语句基本格式
1.创建索引
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
说明
(1)<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
(2)UNIQUE:此索引的每一个索引值只对应唯一的数据记录;CLUSTER:表示要建立的索引是聚簇索引
2.修改索引
ALTER INDEX <旧索引名> RENAME TO <新索引名>
3.删除索引
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关该索引的描述。
(三)数据表记录操作SQL语句基本格式
1.SELECT语句一般格式
SELECT [ALL|DISTINCT] <目标列表达式> [别名] [ ,<目标列表达式> [别名]] …
FROM <表名或视图名> [别名]
[ ,<表名或视图名> [别名]] …
|(<SELECT语句>)[AS]<别名>
[WHERE <条件表达式>]
[GROUP BY <列名1>[HAVING<条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]];
2.使用索引检索数据
SELECT……FROM……WITH (INDEX=索引名称) WHERE……
二、实验结果
(实验前请准备好各数据表实验所需数据)你所建的表的名字和学号一定要前后一致。
(一)数据表数据的查询
1.单表查询
(1)设定条件,查询Student表中自己的信息。
SELECT *FROM StudentWHERE Sname='你的名字';
(2)按照成绩降序查看SC表信息
SELECT*FROM SCORDER BY grade DESC;
(3)统计每门课程的选课人数,查询选课人数大于3的课程编号和相应选课人数。
select cno,COUNT(*)from scgroup by cnohaving COUNT(*)>3
(4)按照平均分降序查询每门课程的选课人数、最高分、最低分、总分、平均分,并用别名显示查询结果。
SELECT COUNT(*)选课人数,MAX(grade)最高分,MIN(grade)最低分,sum(grade)总分,AVG(grade)平均分from scgroup by cnoorder by AVG(grade) desc
2.连接查询
(1)查看自己的所有考试成绩,要求查询结果包含姓名、课程名称、成绩信息。
select sname,Cname,gradefrom student,course,scwhere Student.Sno=Sc.Sno and Course.Cno=SC.Cno and sc.Sno='你的学号'
(2)查询1号课程成绩小于2号课程成绩的学生姓名、相应的1号课程和2号课程成绩,成绩通过别名显示为:1号课成绩、2号课成绩
select sname,a.grade 一号成绩,b.grade 二号成绩from sc a,sc b,studentwhere a.sno=b.sno and a.sno=student.sno and a.cno='1'and b.cno='2' and a.grade>b.grade;
3.嵌套查询:查询2号课程成绩高于自己的学生信息。
select *from Studentwhere Snoin(select snofrom SC where Cno='2' and grade>(select gradefrom SC where Sno='你的学号'and Cno=2))
4.集合查询:查询平均成绩大于85且已完成所有选课任务的学生信息。(假设所有课程在SC表均有记录)
select *
from student
where sno in (
select sno
from sc
group by sno
having AVG(grade)>=85)
intersect
select *
from student
where sno in(
select sno
from sc
group by sno
having COUNT(*) =
(
select count(distinct cno)
from sc
)
)
(二)视图的操作
1.定义视图
(1)将查询Student表所有信息作为子查询创建视图,视图名为“VIEW_姓氏首字母”
create VIEW 你的姓氏_StudentASselect *from Student;
(2)将上文的集合查询作为子查询创建视图,要求视图名称为“VIEW_YX”
create VIEW YXASselect *from 你的姓氏_Student;
2.查询,查询所创建视图中姓“李”的学生信息。
Select *From YX where Sdept='YX' and Sname LIKE '李%';
3.更新,通过(1)中所定义视图,更新Student表信息,添加一名学生信息。
insertinto 你的姓氏_Student(sno,sname,ssex,sage,sdept)values('12845678910','王利明','男',20,'IS');
(三)数据表索引操作
1.建立,为每张数据表建立索引,要求至少有一个索引名称为“INDEX_姓名首字母大写”
create unique index 你的姓名大写首字母_StuSno on Student(Sno);create unique index CouCno on Course(Cno);create unique index SCno on SC(Sno asc,Cno desc);
2.打开,使用带有自己姓名的索引查询数据
select *from 你的姓名大写首字母_StuSno where Sno ='你的学号';
3.更新,修改带有自己姓名的索引名称为“INDEX_XSGL”*
alter index 你的姓名大写首字母_StuSno RENAME TO XSGL
4.删除,删除其他两个索引
DROP INDEX CouCno on course;DROP INDEX SCno on sc
数据库视图的创建及使用相关推荐
- 带你认识数据库视图对象,下次不要再认成“表”了
摘要:本文介绍GaussDB(DWS)的数据库视图对象,我们将讨论使用数据库视图的优点和缺点,以及如何使用系统视图解决一些问题. 本文分享自华为云社区<GaussDB(DWS) SQL进阶之数据 ...
- 【数据库】MySQL创建视图(CREATE VIEW)
数据库视图是什么? 创建视图是指在已经存在的 MySQL 数据库表上建立视图.视图可以建立在一张表中,也可以建立在多张表中. 视图的好处? 视图使用的时候跟表一样.主要作用是不让所有的人都能看到整张表 ...
- SQL2K数据库开发二十二之索引操作在视图上创建索引
1.在企业管理器中,右击要创建索引的视图,在弹出的菜单中选择"设计视图"命令进入视图设计器. 2.在视图设计器中显示了视图所包含的列,定义视图的SQL语句以及视图中 ...
- 创建数据库_详解Oracle数据库物化视图及创建物化视图索引
概述 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图S ...
- SQL数据库语言基础之SqlServer视图的创建、修改与视图数据的增删改查
文章目录 一.认识视图 二.创建.查询视图 三.修改.删除视图 四.修改视图数据(与操作表一样,只是把table换成view) 一.认识视图 1.视图的理解 从用户角度来看,一个视图是从一个特定的角度 ...
- 数据库视图创建及应用
数据库视图创建及应用 一.视图: 视图是从一个或几个基本表(或视图)导出来的表.它与基本表不同,是一个虚表.数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中.所以一旦基 ...
- SQL Server 数据库 视图创建
SQL Server 数据库 视图创建 视图简介: 视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口. 常规视图本身并不存储实际的数据,而仅仅是由SE ...
- Oracle: 三、Oracle的隐藏事务与视图的创建
内容简介 1,Oracle的隐藏事务.2,视图(View)的创建. 技术与环境 操作系统: windows 语言类别: SQL之PL/SQL thankyou: sunshine, 谢谢你的默默付出 ...
- 关于SQL视图的创建和使用方法
SQL视图的创建和使用 视图这个东西在其他的软件中,我们也经常看得到,例如word中就有视图,我们不难发现,视图似乎是一种显示方式,就像WORD一样,有几种显示版面,这就是视图,那么SQL中的视图又该 ...
最新文章
- 2.Azure资源组迁移
- Bzoj 1901: Zju2112 Dynamic Rankings 主席树,可持久,树状数组,离散化
- qq家园纵横四海的源码
- nxlog windows安装部署
- 一张图解AlphaGo原理及弱点
- 【Android】mina框架使用详情
- 路飞学城python开发ftp_路飞学城-Python开发集训-第一章
- 求解位置不可用无法访问介质受写入保护咋寻回??
- 微信会员卡-创建会员卡接口post参数字段说明
- [C语言]显示器【模拟】
- 个人微信号API接口搜集
- css 实现条纹背景效果
- win7计算机时间显示错误,win7系统时间怎么调总是不对如何解决?win7系统时间总是不对解决方法...
- Arduino开发:网页控制ESP8266三色LED灯闪烁
- 这些线上峰会为何不约而同选择亿联视讯方案?云端协同、流畅安全是关键!
- c语言考试系统题库判断和选择,C考试系统题库判断和选择.doc
- 利用java实现天气预报设计教程视频_java实现天气预报(解释+源代码)
- dEFEND Explainable Fake News Detection 可【解释的假新闻检测】
- 关于淘宝用户行为分析及其可视化案例
- win10系统笔记本电脑如何外接两个屏幕?