数据库实验4_数据库查询与视图

合集下载

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图

在学生选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学生选课信息和成绩$,课程$WHERE名单$.学号=学生选课信息和成绩$.学号AND课程$.课号=学生选课信息和成绩$.课号AND课程$.课程名='线性代数'AND学生选课信息和成绩$.成绩<60;执行后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学生选课信息和成绩$WHERE学号=名单$.学号);执行后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执行后结果如下:4.统计高等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学生选课信息和成绩$,课程$WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)'; 执行后结果如下:5.统计各门课的选课人数;SQL语句为:SELECT课号,COUNT(学号)FROM学生选课信息和成绩$GROUPBY课号;执行后结果为:6.查询选修5门课以上的学生的学号;SQL语句为:SELECT学号FROM学生选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执行后结果为:7.用你的学号查询和你一个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执行后结果如下:8.查询高等数学(1)成绩比你高出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学生选课信息和成绩$WHERE名单$.学号=学生选课信息和成绩$.学号AND学生选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学生选课信息和成绩$,课程$WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)' AND学生选课信息和成绩$.学号='201000800145')执行后结果为:9.找到每门课获得最高成绩的同学的学号、姓名、课名和成绩;选做。

数据库查询和视图

数据库查询和视图
功能:对当前表的各个数值表达式分别求平均 值。
例如,求基本工资的平均值可用如下命令序列: USE gzb AVERAGE 基本工资 TO aversal ? "平均基本工资",aversal
2020/8/1
4. 计算命令
命令格式:
CALCULATE <表达式表> [<范围>] [FOR <条件1>] [WHILE <条件2>][TO <内存变量表>|TO ARRAY<数组>]
2020/8/1
5. 分类汇总命令
分类汇总是将数据表中的记录按某个字段进行排序分 类,再对其它需要汇总的字段进行汇总统计。
命令格式: TOTAL TO <文件名> ON <关键字> [FIELDS <字段名表
>] [<范围>][FOR<条件1>] [WHILE<条件2>]
功能:对当前表进行分类汇总,汇总的结果存入一个 新表。汇总时把<关键字>值相同的一组记录汇总 成一个记录,其中指定的数值型字段值取该字段 的汇总值,其它字段取该组记录中的第一条记录 。在新表中,记录按<关键字>的取值进行排列。
记录。 (1)缺省<范围>表示ALL。 (2)找到一条满足条件的记录后,要继续往下查找
满足条件的其它记录就必须用CONTINUE命令。
2020/8/1
Байду номын сангаас
[例3-3] 在rsb.dbf中查找职称为“讲师”的记录 。
USE rsb LOCATE FOR 职称="讲师" DISPLAY &&显示查找到职称是“讲师”的第一条记

数据库的查询和视图

数据库的查询和视图

常用的伪列
rowid和rownum
rowid rownum
2018/5/11
数据库中的每一行都有一个行地址,rowid伪列返回该行地址。可以 使用rowid值来定位表中的一行,通常情况下,rowid值可以唯一地标 识数据库的一行。 对于一个查询返回的每一行,rownum伪列返回一个数值代表的次序。 返回第一行的rownum值为1,第二行的rownum值为2,以此类推。 通过使用rownum伪列,用户可以限制查询返回的行数
连接后的表
T3 C2 C2 T4 10 0 T5 A2 A2 T6 C2 D1
10
5 20
A1
A1 D2
B1
C2 C2
自然连接
5 20
2
数据库的查询
主要内容
01
选择列
连接
02
选择行
统计
03
04
05
排序
为列指定别名
不使用列别名 使用列别名
2018/5/11
看下面这两种查询结果,哪 个看着比较顺眼呢?
选择后的结果
学号 104211 姓名 李晓林 女 性别 82 平均成绩
投影
——查询满足条件的列
学生表
学号 104215 104211 104210 姓名 王敏 李晓林 胡小平 男 女 男 性别 74 82 88 平均成绩
选择后的结果 对“学号”和“平 均成绩”投影
学号 104215 104211 104210 平均成绩 74 82 88
2018/5/11
先乘除后加减。 在表达式中同一优先级的运算符计算次序是 从左到右。 如果使用了括号,括号中的运算优先。 如果有多重括号嵌套,内存括号中的运算优 先。

数据库实验四.视图创建和查询

数据库实验四.视图创建和查询

南昌大学实验报告
一、实验项目名称
视图创建和查询
二、实验目的
熟悉视图定义和使用视图查询
三、实验基本原理和内容
请为三建公司项目建立一个供应情况的视图,包括供应商代码,零件代码,供应数量.针对该视图完成下列查询:
(1)找出三建工程项目使用的各种零件代码及其数量
(2)找出供应商S1的供应情况
四、主要仪器设备及耗材
PC机一台
五、实验步骤及实验数据及处理结果
1、创建视图:
CREATE VIEW三建供应情况
AS
SELECT SNO,PNO,QTY
FROM SPJ
WHERE JNO=(SELECT JNO
FROM J
WHERE JNAME='三建')
2、a:找出三建工程项目使用的各种零件代码及其数量
SELECT PNO,SUM(QTY)
FROM三建供应情况
GROUP BY PNO
b:找出供应商S1的供应情况
SELECT*FROM三建供应情况
WHERE SNO='S1'
六、参考资料
卫琳《SQL SERVER 2008数据库应用与开发教程》清华大学出版社2011.6。

实验4数据库的查询和视图.docx

实验4数据库的查询和视图.docx

南京信息工程大学实验(实习)报告实验(实习)名称实验4 数据库的查询和视图实验(实习)日期2016.10.24 得分指导教师方忠进系计算机专业网络工程年级2014 班次 2 姓名刘信言学号20142346074 一.实验目的(1)掌握select语句的基本语法;(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握select语句的group by子句的作用和使用方法(5)掌握select语句的order by子句的作用和使用方法二、实验准备(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUPBY子句的作用和使用方法;(6)了解SELECT语句的ORDER BY子句的作用;三、实验内容T4.1 数据库的查询(1)SELECT语句的基本使用。

①对于实验2给出的数据库表结构,查询每个雇员的所有数据。

新建一个查询,在查询分析器中输入如下语句并执行:【思考与练习】用SELECT语句查询Departments和Salary表中所有的数据信息。

②用SELECT语句查询Employees表中每个雇员的地址和电话。

新建一个查询,在查询分析器中输入如下语句并执行:【思考与练习】a. 用SELECT语句查询Deparments和Salary表的一列或若干列。

b. 查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。

③查询EmployeeID为000001的雇员的地址和电话。

【思考与练习】a.查询月收入高于2000元的员工号码。

b.查询1970年以后出生的员工的姓名和住址。

c.查询所有财务部的员工的号码和姓名。

④查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

【思考与练习】查询Employees表中男员工的姓名和出生日期,要求将各列标题用中文标示。

数据库视图实验报告

数据库视图实验报告

数据库视图实验报告一、实验目的本次实验的主要目的是深入理解数据库视图的概念、特点和用途,并通过实际操作掌握如何创建、修改和使用视图来优化数据库的查询和管理。

二、实验环境本次实验使用的数据库管理系统为 MySQL 80,操作系统为Windows 10。

三、实验原理1、视图的定义视图是一种虚拟表,它是从一个或多个基本表(或视图)导出的表。

视图本身并不包含数据,而是根据定义从基本表中动态获取数据。

2、视图的优点提供数据的逻辑独立性:当基本表的结构发生变化时,只要视图的定义不变,用户通过视图所得到的数据仍然是一致的。

简化数据查询和操作:可以将复杂的查询定义为视图,使用户能够更方便地获取所需的数据。

增强数据安全性:可以通过视图限制用户对敏感数据的访问,只展示用户有权查看的部分数据。

四、实验内容与步骤1、创建视图使用以下语句创建一个名为`student_info_view` 的视图,该视图包含学生表`students` 中的学号、姓名、年龄和专业信息:```sqlCREATE VIEW student_info_view ASSELECT student_id, student_name, age, majorFROM students;```2、查询视图通过以下语句查询创建的视图:```sqlSELECT FROM student_info_view;```3、修改视图修改视图的定义,增加一个成绩列`grade` ,语句如下:```sqlALTER VIEW student_info_view ASSELECT student_id, student_name, age, major, gradeFROM students;```4、删除视图使用以下语句删除视图:```sqlDROP VIEW student_info_view;```五、实验结果与分析1、创建视图成功后,通过查询视图能够获取到预期的学生信息,证明视图的定义和数据提取是正确的。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。

三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。

2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。

四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。

假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。

a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。

b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。

c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。

d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。

e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。

数据库管理系统数据查询与视图

数据库管理系统数据查询与视图

4.1.1 创建查询
1.使用查询向导 使用查询向导可以快速、简捷地建立一个扩展 名为.qpr的查询文件。步骤:
⑴ 单击主菜单“文件”/→“新建”命令或工具栏上的 “新建”按钮→在“新建”对话框中选择“查询”, 单击“向导”→在“向导选取”对话框中选择“查询 向导”,单击“确定”按钮。 ⑵ “步骤1-字段选取”对话框:选取表中字段到选 定字段列表框中,单击“Next”。 ⑶ 如果选定字段只来自一个表或视图,直接进入“步 骤3-筛选记录”;如果选定的字段来自不同的表或 视图 ,则进入“步骤2-为表建立关系” 。
⑷ 在“查询设计器”中设置各选项卡:
“Fields”(字段)选项卡:指定查询所包含的字段或 表达式。 “Join”(联接)选项卡:建立、编辑或修改两个表 之间的连接关系 。 “Filter”(筛选)选项卡:设置记录的筛选条件。 “Order By”(排序依据)选项卡:设置排序字段和 排序方法。 “Group By”(分组依据)选项卡:设置分组字段。 “Miscellaneous”(杂项)选项卡:设置是否有重复 记录等。
4.2.4 参数化视图
参数化视图是一种通用视图,系统提供在运行 视图时传递参数值的功能,从而避免每查询一部分 记录就要单独创建一个视图 。
⑴ 在“视图设计器”的“Filter”(筛选依据)选项卡的 “Example”(实例)文本框中输入“?<参数>”。 ⑵ 对视图参数进一步定义:单击主菜单“视图参数”命 令,在“视图参数”对话框中定义参数名和类型。
2.使用“视图设计器” 打开数据库,用下面方法之一打开“视图设计 器”: 单击主菜单“文件”/“新建”命令,在“新建” 对话框中选择“视图”,单击“新建”按钮。 在“数据库设计器”窗口中,单击鼠标右键,快 捷菜单中选择“新建本地视图”命令,或单击主菜 单“数据库”下拉菜单中 “新建本地视图”命令, 打开“新建本地视图”对话框,单击“新建视图” 按钮。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在学生选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;
SQL语句为:SELECT名单$.学号,姓名
FROM名单$,学生选课信息和成绩$,课程$
WHERE名单$.学号=学生选课信息和成绩$.学号AND课程$.课号=学生选课信息和成绩$.课号AND
课程$.课程名='线性代数'
AND学生选课信息和成绩$.成绩<60;
执行后结果为:
2.查询没有选课记录的同学的所有基本信息;
SQL语句为:SELECT*
FROM名单$
WHERE NOTEXISTS
(SELECT*
FROM学生选课信息和成绩$
WHERE学号=名单$.学号);
执行后结果为:
3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECOND
WHEREFIRST.先修课号=SECOND.课号;
执行后结果如下:
4.统计高等数学(1)的平均成绩;
SQL语句为:SELECT AVG(成绩)
FROM学生选课信息和成绩$,课程$
WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)'; 执行后结果如下:
5.统计各门课的选课人数;
SQL语句为:SELECT课号,COUNT(学号)
FROM学生选课信息和成绩$
GROUPBY课号;
执行后结果为:
6.查询选修5门课以上的学生的学号;SQL语句为:SELECT学号
FROM学生选课信息和成绩$
GROUPBY学号
HAVING COUNT(*)>5;
执行后结果为:
7.用你的学号查询和你一个班的同学的学号和姓名;
SQL语句为:SELECT学号,姓名
FROM名单$
WHERE班级IN
(SELECT班级
FROM名单$
WHERE学号='201000800145');
执行后结果如下:
8.查询高等数学(1)成绩比你高出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩
FROM名单$,学生选课信息和成绩$
WHERE名单$.学号=学生选课信息和成绩$.学号AND学生选课信息和成绩$.课号='82006010'
AND成绩>(
SELECT成绩+10
FROM学生选课信息和成绩$,课程$
WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)' AND学生选课信息和成绩$.学号='201000800145')
执行后结果为:
9.找到每门课获得最高成绩的同学的学号、姓名、课名和成绩;选做。

只能做到如下结果
SQL语句为:SELECT课号,姓名,成绩
FROM名单$,学生选课信息和成绩$SCX
WHERE名单$.学号=SCX.学号AND SCX.成绩IN
(SELECT MAX(成绩)
FROM学生选课信息和成绩$SCY
WHERE SCX.课号=SCY.课号
GROUPBY课号)
执行后结果为:
10.创建计算机系一班同学的视图V_CS_Stu,并指定可以更新;SQL语句为:CREATEVIEW V_CS_Stu
AS
SELECT*
FROM名单$
WHERE系别='计算机'AND班级='1'
WITHCHECKOPTION;
执行后结果如下:
11.基于V_CS_Stu,创建计算机系一班同学的选课视图,包括学号、姓名、课程名;SQL语句为:CREATEVIEW V_CS_Stu_SC
AS
SELECT dbo.V_CS_Stu.学号,dbo.V_CS_Stu.姓名,dbo.课程$.课程名
FROM名单$,课程$
CROSSJOIN dbo.V_CS_Stu
执行后结果为:
12. 用V_CS_Stu查询计算机系一班同学中名字包含“权”字的同学
SQL语句为:SELECT*
FROM V_CS_Stu
WHERE姓名LIKE'%权'OR姓名LIKE'权%'
执行后结果如下:
13. 用V_CS_Stu更新学号以2010008001打头计算机系一班同学的出生日期为1994-5-2;SQL语句为:UPDATE V_CS_Stu
SET生日=1994-5-2
WHERE学号>'201000800099'AND学号<'201000800200'
执行后结果如图所示:
14. 创建学号及他所有课的平均成绩的视图;
SQL语句为:
CREATEVIEW S_G(学号,平均成绩)
AS
SELECT学号,AVG(成绩)
FROM学生选课信息和成绩$
GROUPBY学号;
执行后结果为:
15. 创建所有女同学的视图,只包含姓名、年龄、班级及系别;SQL语句为:CREATEVIEW GIRL
AS
SELECT姓名,生日,班级,系别
FROM名单$
WHERE性别='女';
执行后结果为:
16. 删除14中所创建的视图。

SQL语句为:DROPVIEW S_G; 执行后结果为:。

相关文档
最新文档