实验三数据库的查询和视图

合集下载

实验三_ 查询与视图

实验三_ 查询与视图

实验三题目:查询与视图(实验时间:2012年4月10日)(一)实验目的1.通过本实验使学生掌握基本的SQL命令的使用方法。

主要包括:CREATE TABLE、SELECT、UPDATE、INSERT、DELETE等。

2.熟练掌握查询设计器的使用,掌握使用查询设计器设计查询的基本方法。

3.使学生熟练掌握查询向导的使用,掌握使用向导设计查询的基本方法。

4.熟练掌握视图设计器的使用,掌握使用视图设计器设计视图的基本方法。

(二)实验内容1、使用SQL命令进行数据表的建立、查询、修改和删除操作等;2、使用查询设计器建立查询;3、使用查询向导建立查询;4、使用视图设计器建立查询。

(三)实验步骤【上机操作4-1】在“sf_books”数据库中试用SQL命令建立表。

创建“图书.dbf”表文件,其表结构如表4-1所示。

在“sf_Books”数据库中创建一个名为“t_reader”的表,其表结构如表4-2所示。

表4-2 “t_reader”表在“sf_Books”数据库中创建一个名为“t_borrow”的表,其表结构如表4-3所示。

表4-3 “t_borrow”表操作步骤:在命令窗口中,顺序执行以下命令,则会建立三个数据表。

如图4-1所示。

CREA T TABLE t_book (图书ID C(5) PRIMARY KEY, 书名C(20), 作者C(6),;单价N (6,2) , 版次C(2), 出版日期D(8),备注M(4))CREA T TABLE t_reader (借书证号C(4) PRIMARY KEY,姓名C(10),性别C(2),;出生日期D(8) ,班级C(5),备注M(4))CREA T TABLE t_borrow (借书证号C(4), 图书ID C(5), 借书日期D(8) ,;还书日期D(8) , 标记C(2))图4-1 创建表【上机操作4-2】修改表结构,在t_book表中增加列“出版社C(20)”。

实验三 SQL复杂查询与视图

实验三 SQL复杂查询与视图

实验三 SQL复杂查询与视图一.实验目的:1.掌握SQL语言中SELECT语句的多种查询方式。

2.掌握对表建立与删除索引的方法。

3.掌握聚焦函数的使用方法。

4.掌握集合查询方法。

二.实验内容:2.多表查询①查询编号为300的客户通过的代理商的姓名和地址。

select 姓名地址from 代理商where 客户编号=”300”;②查询产品编号为0033、订货数量大于100的客户编号及其姓名。

Select 客户编号姓名From 客户Where 客户.产品编号=”0033”AND 客户.订货数量>100;③查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。

Select 客户编号客户名订单编号订货日期From 订单④查询所有2000年以后订货项目。

Select *From 订货项目Where 订货时间>2000⑤查询提成金额为100000以上(含100000)的代理商所对应的客户。

Select *From 代理商Where 提成金额=100000 or 提成金额>1000003、嵌套查询分别用带有IN谓词的子查询和带比较运算符的子查询实现以下操作①查询与“刘晨”在同一个系学习的学生。

Select sdept sno snameFrom studentWhere sdept in(‘cs’)②查询选修了课程名为“操作系统”的学生。

Select sno sname sdeptFrom csWhere sco in()4.建立视图①建立含有订单号及拥有该订单的客户编号和代理商号三个字段的视图。

②建立一个含有产品编号、产品库存量及产品在订量三个字段的视图。

③建立一个含有客户编号、客户所订的产品、该产品的订购价及该产品的描述四个字段的视图。

④建立一个含计算机科学系的学生及年龄不大于19岁的学生的视图。

⑤建立一个既选修了课程1又选修了课程2的学生视图。

5.在视图基础上的查询①查询所有订单的客户和代理商。

实验3 视图的创建和使用

实验3  视图的创建和使用

实验3 视图的创建和使用学号:2011193158 姓名:韩江玲一、实验目的:1、理解视图的基本概念,掌握视图的创建、修改和删除。

2、掌握对视图进行查询和更新。

二、实验内容:视图是从一个或几个表导出的表。

它与基本表不同,是一个虚表。

数据库中只存放视图的定义,而不存放视图对应的数据。

首先完成数据库和表的创建,在学生数据库里完成以下操作:1. 创建视图(1)建立计算机系学生的视图s1,并要求对视图进行更新提示: create view s1As select * from student where sdept= '计算机系'with check option(2)由学生、课程和选修课三个表,定义一个计算机系的学生成绩视图,其属性包括学号、姓名、课程名和成绩提示: create view s2AsSelect student.sno ,sname,cname,gradeFrom student,course,scWhere student.sno=sc.sno and o=oand sdept= '计算机系'(3)将学生的学号、总成绩、平均成绩定义成一个视图。

提示: create view s3AsSelect sno,sum(grade) 总成绩 ,avg(grade) 平均成绩from sc group by sno2. 查询视图1) 对视图S1进行查询,查询选修了0005号课程的计算机系学生提示:select s1.* from s1,sc where s1.sno=sc.sno and cno='0007'2) 对视图S2进行查询,查询选修课成绩大于等于90分的学生信息提示:select * from s2 where grade>=903. 更新视图1) 将计算机系学生视图s1中的学生的年龄加1提示:update s1 set sage=sage+1再观察一下student表中的学生的信息,会发现计算机系学生的年龄增1了。

数据库实验三

数据库实验三

数据库实验三《数据查询与操作》实验一、实验目的与要求1、掌握多表查询:嵌套查询的使用。

2、掌握INSERT、UPDATE和DELETE语句的一般格式与使用方法。

3、掌握视图的创建和删除、视图的NSERT、UPDATE和DELETE 的应用二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容实验前,先附加“教务管理系统”,在“教务管理系统”的数据库中进行一下查询:嵌套查询1、在“教务管理系统”数据库中,根据相关表的内容,查询平均成绩大于70的课程信息select课程名称from课程信息where课程编号in(select课程编号from选课表group by课程编号having avg(成绩)>70)2、从“教务管理系统”数据库中,查询人数超过45人所在班级中的学生的学号、姓名和班级名称。

select学号,姓名,b.班级编号,班级名称from学生信息x,班级信息bwhere x.班级编号= b.班级编号and x.班级编号in(select班级编号from班级信息where人数>45)3、在“教务管理系统”数据库中,查询学生姓名为“朱文娟”所在班级的学生信息,要求返回学生的学号、姓名、性别、班级编号、班级名称和年级信息select学号,姓名,性别,x.年级,b.班级编号,班级名称from学生信息x,班级信息bwhere x.班级编号= b.班级编号and x.班级编号=(select班级编号from学生信息where姓名='朱文娟')4、在“教务管理系统”数据库中,查询出所有非计算机系的学生信息,并显示出这些学生的考试成绩,再按成绩进行降序排列显示,要求返回学生的学号、姓名、班级编号、课程编号和成绩信息。

select学生信息.学号,姓名,班级编号,课程编号,成绩from学生信息left join选课表on学生信息.学号=选课表.学号where学生信息.班级编号<>(select班级编号from班级信息where班级名称 LIKE '计算机%')数据更新(一)添加教务信息1、在2003年级中创建一个新班级,编号为20031340000200、班级名称为“环境与科学”、班级人数为60、班主任为“张浩”。

数据库原理实验报告(数据查询)

数据库原理实验报告(数据查询)

数据库原理实验报告实验三数据查询班级:×××姓名:×××学号:×××数据查询一、[实验目的]1.掌握SQL的单表查询操作2.掌握SQL的连接查询操作3.掌握SQL的嵌套查询操作4.掌握SQL的集合查询操作二、[实验内容]本实验的主要内容是:1.简单查询操作。

包括投影、选择条件表达,数据排序,使用临时表等。

2.连接查询操作。

包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。

3.在SQL Server查询分析器中,使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

4.组合查询与统计查询。

(1)分组查询实验。

该实验包括分组条件表达、选择组条件的表达方法。

(2)使用函数查询的实验。

该实验包括统计函数和分组统计函数的使用方法。

(3)组合查询实验。

(4)计算和分组计算查询的实验。

三、[实验方法]1.将查询需求用Transact-SQL语言表示。

2.在SQL Server查询分析器的输入区中输入Transact-SQL查询语句。

3.设置查询分析器结果区为Standard Execute(标准执行)或Execute to Grid方式。

4.发布执行命令,查看查询结果;如果结果不正确,进行修改,直到正确为止。

5查询分析器的主要作用是编辑Transact-SQL,将其发送到服务器,并将执行结果及分析显示出来(或进行存储)。

查询分析功能主要是通过测试查询成本,判断该查询是否需要增加索引以提高查询速度,并可以实现自动建立索引的功能。

图5- 错误!未定义书签。

SQL Server 2000查询分析器查询分析器的界面如图5- 错误!未定义书签。

所示。

在查询生成器中的左边窗口是对象浏览器,其中按树结构列出了数据库对象;右上方是SQL代码区域,用于输入SQL的查询语句;右下方为结果区,用于显示查询结果和分析结果。

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

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

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

通过本实验,我们可以掌握使用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语句后,我们可以得到每个班级的人数统计结果。

数据库原理 实验三 数据查询、索引与视图

数据库原理 实验三 数据查询、索引与视图

《数据库原理》实验报告
一、目的
1.掌握SELECT语句的基本语法;
2.掌握子查询的表示;
3.掌握连接查询的表示;
4.掌握SELECT语句的统计函数的作用和使用方法;
5.掌握SELECT语句的GROUPBY和ORDERBY子句的作用和使用方法。

6.掌握使用创建、删除索引的基本方法
7.掌握视图的定义(创建和删除),查询,更新(注意更新的条件);
8.掌握索引分析与维护的常用方法。

二、实验使用环境:
WindowXP SP2 SQL Server 2005
三、实验内容与设计思想
根据自已所选的题目,完成对表的查询、统计、视图的创建。

1
2
3
4
5
6
7
8
9
10
11
12
13
14.1
14.2
四、出现问题及解决方案
1.函数名字不正确,大小写错误导致无效
2.标点符号在中文状态下打的,出现语法错误
五、实验小结
学会了建立视图,视图加密,更新的方法,创建索引,为一个表创建聚集索引和非聚集索引。

这次实验对sql基本的语法进一步的巩固了解,主要学到了SELECT语句的基本用法,子查询、连接查询的使用方法,还有select语句中group by、order by、compute等字句的用法,以及基本的SQL函数。

实验三:数据查询与视图实验

实验三:数据查询与视图实验

实验三:数据查询与视图实验实验目的:理解和掌握多表查询、嵌套子查询,理解和掌握视图的定义及其应用。

实验内容:1、在MySQL中建立一个名为studentsys的数据库;2、在studentsys中建立以下三个关系模式:学生表:Student(Sno,Sname,Ssex,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)具体要求如下:表1 学生表(Student)字段名数据类型是否允许空值主码/外码备注Sno char(11) 否主码学号Sname char(50) 否姓名Ssex char(1) 是性别Sage int 是年龄Sdept char(50) 是院系表2 课程表(Course)字段名数据类型是否允许空值主码/外码备注Cno char(11) 否主码课程号Cname char(50) 否课程名外码,参照Cpno char(11) 是先修课程Course表的Cno Ccredit double 是学分表3 选课表(SC)字段名数据类型是否允许空值主码/外码备注主码,外码Sno char(11) 否学号参照Student表的Sno主码,外码Cno char(11) 否课程号参照Course表的Cno Grade double 是分数3、在Student表中添加以下数据:Sno Sname Ssex Sage Sdept 201215121 李勇男20 CS201215122 刘晨女19 CS201215123 王敏女18 MA201215125 张立男19 IS4、在Course表中添加以下数据:Cno Cname Cpno Ccredit1 数据库 42 数学 23 信息系统 1 45、在SC表中添加以下数据:Sno Cno Grade201215121 1 92201215121 2 85201215121 3 88201215122 2 90201215122 3 807、执行以下查询:(1) 查询选修2号课程且成绩在85分以上的所有学生的学号和姓名。

数据库的查询和视图

数据库的查询和视图
使用SELECT语句选择一个表中的某些列,各列名之间要以逗号分隔。其中, $IDENTITY表示选择标识列,$ROWGUID表示选择ROWGUIDCOL属性的全局标识列。 如果在FROM子句中有多个表具有ROWGUIDCOL属性,则必须用特定的表名限定 $ROWGUID,如T1.$ROWGUID。 【例4.2】 查询PXSCJ数据库的XSB表中各个同学的姓名、专业和总学分。 USE PXSCJ GO SELECT 姓名,专业,总学分 FROM XSB GO SQL Server 2008中还能一次执行多个查询。
4.替换查询结果中的数据
在对表进行查询时,有时希望对所查询的某些列得到的是一种概念而不是具 体的数据。 例如,查询XSB表的总学分,希望知道的是学习的总体情况,这时,就可以用 等级来替换总学分的具体数字。 要替换查询结果中的数据,则要使用查询中的CASE表达式,格式为 CASE WHEN 条件1 THEN 表达式1 WHEN 条件2 THEN 表达式2 …… ELSE 表达式 END
T1 T2 T1 T2 T1 T2
1
A
6
F
2
B
表4.5 B表
T3 1 T4 3 T5 M T3 2 T4 0 T5 N
表4.6 A B F
T1
1 2
T2
A B
T3
1 2
T4
3 0
T5
M NBiblioteka 数据库应用中最常用的是“自然连接”。进行自然连接运算要求两个表有共同 属性(列),自然连接运算的结果表是在参与操作的两个表的共同属性上进行等值 连接后,再去除重复的属性后所得的新表。自然连接运算记为 ,其中,R和S是参与 运算的两个表。 例如,若表A和B分别如表4.7和表4.8所示,则 如表4.9所示。 表4.7 A表

实验三 多表查询、数据更新、视图

实验三 多表查询、数据更新、视图
实验三
实验名称:多表查询、数据更新、视图、实验性质:验证性、成1、掌握Select语句的基本语法;
2、掌握连接查询的表示和使用方法;
3、掌握子查询的表示和使用方法;
4、掌握对数据表的更新语法;
5、掌握视图的创建、查询和修改方法;
二、实验准备
1、理解Select语句的基本语法格式和执行方法;
(7)删除计算机系学生视图中学号为200215121的记录,并查看Student表的变化,说明是为什么。






实验过程、存在的问题及解决办法:
1.(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
2.(1)
(2)
(3)
(4)
(5)
(6)
3.(1)
(2)
(3)
(4)
(5)
(6)
(7)
(2)建立计算机系选修了’3’号课程且成绩在90分以下的学生视图,并对此视图进行查询。
(3)将学生的学号,姓名和平均成绩定义为一个视图。
(4)利用所建立的视图,查询选修了2号课程的计算机系的学生。
(5)将计算机系学生视图中学号为200215122的学生姓名改为“刘留”。
(6)向计算机系学生视图中插入一条新的学生记录,其中学号为200215126,姓名为李三,年龄为20岁,院系为IS,并分析下执行结果。
(4)删除姓名为张立的学生记录。
(5)添加学生记录,姓名为张立,学号为200215125,性别为男,年龄19,院系为信息系。
(6)使用SQL增加一条记录到course表中,增加的记录内容如下:
(’9’,’数据挖掘’,’1’,5)

实验3 数据库的查询和视图

实验3 数据库的查询和视图

实验3 数据库的查询和视图T4.1 数据库的查询1.目的和要求(1)掌握SELECT语句基本用法(2)掌握子查询的表示(3)掌握连接查询的表示(4)掌握SELECT语句的GROUP BY子句的作用和使用方法(5)掌握SELECT语句的ORDER BY子句的作用和使用方法2.实验内容(1)SELECT语句的基本使用1)对于实验2给出的数据库表结构,查询说有雇员的每个数据。

【思考与练习】用SELECT查询Emmployees和Salary中所有数据2)用SELECT语句查询Employees每个员工的地址和电话A.用SELECT语句查询Employees和Salary中的一列或若干列B.查询Employees中部门号和性别,用DISTINCT消除重复行3)查询Employees中000001雇员的地址和电话【思考与练习】A.查询余额收入高于2000员工的员工号码B.查询1970年后出生的员工姓名和住址C.查询所有财务部的号码和姓名4)查询Employees中女雇员的地址和号码,使用AS语句将结果中个标题非别指定为地址,电话。

【思考与练习】查询Employees中男员工的姓名和出生日期,将结果中个标题改为中文5)查询Employees中员工的姓名性别,要求Sex为1时显示男,为0时显示女。

【思考与练习】查询Employees员工姓名住址和收入水平,2000元以下为低收入,2000~3000为中等收入,3000元以上为高收入6)计算每个雇员的实际收入【思考与练习】使用SELECT 语句进行简单计算7)获得员工总数【思考与练习】A.计算Salary员工收入平均数B.获得Emloyees2中员工最大员工号码C.计算Salary中员工总支出D.查询财务室雇员最高和最低实际收入8)找出所有姓王的雇员的部门号【思考与练习】A.找出所有地址含有‘中山’的雇员号码及雇员号B.查找员工号码中倒数第二个数字为0的员工的姓名,地址和学历9)找出所有收入在2000~3000元的员工号码【思考与练习】找出所有部门号1或2的雇员号码10)使用INTO语句,由表Salary创建“收入在1500以上的员工”表包括编号和收入【思考与练习】使用INTO语句,由表Employees2创建“男员工”表,包括姓名和编号2子查询的使用1)查找在财务部工作雇员的情况【思考与练习】使用子查询的方法查找所有收入在2500以下雇员的情况2)查找财务部年龄不低于研发部员工年龄的雇员姓名【思考与练习】用法子查询的方法查找研发部比所有财务部雇员收入都高的雇员姓名3连接查询的使用1)查询每个雇员的情况及其薪水情况【思考与练习】查询每个雇员的情况及其工作部门的情况2)使用内连接的方法查询名字为‘王林’的员工及其所在的部门【思考与练习】A.使用内连接的方法查找步子啊财务部工作的员工信息B.使用外连接的方法查找无哦有员工的月收入3)查找财务部收入在2000元以上的雇员姓名及其薪水详情【思考与练习】查询研发部在1976年以前出生的员工姓名及其薪水详情4聚合函数的使用、1)求财务部雇员平均工资【思考与练习】查询财务部雇员最高和最低工资2)求财务部雇员平均实际收入【思考与练习】查询财务部雇员最高和最低实际收入5GROUP BY .ORDER BY子句的使用1)查找Emloyees2中男性和女性人数【思考与练习】A.按部门列出在该部门工作人数B.按员工学历分组,列出本科硕士大专人数2)查找员工数超过2的部门名称和员工数量【思考与练习】按员工的工作年份分组,统计各个工作年份的人数3)将各雇员情况按收入由低到高排列【思考与练习】A.将员工信息按出生年月从小到大排列B.在ORDER BY 中使用子查询,查询员工姓名,性别和工作年龄信息,要求按实际收入由大到小排列T4.2 视图的使用1.目的和要求(1)熟悉视图的概念和作用(2)熟悉视图的创建方法(3)掌握如何查询和修改视图2.实验内容1.创建视图1)创建YGGL数据库上的视图DS_VIEW,视图高喊Departments表上的全部列2)创建YGGL上的视图Employees2上的视图Employees2_VIEW,视图包含员工号码,姓名和是实际收入【思考与练习】A.常见视图SELECT语句有哪些限制(来自百度)答:创建视图有如下限制:不能使用COMPUTE或者COMPUTE BY子句除非和TOP子句一起使用,否则,不能使用ORDER BY子句不能使用INTO关键字不能使用OPTION子句不能引用临时表和表变量。

数据库的查询和视图

数据库的查询和视图

6
数据库查询
表达式比较 【例】查询XS数据库CP表中库存量在500以上的产品情况。
SELECT * FROM CP WHERE KCL !< 500
【例】查询XSCJ数据库XS表中通信工程专业总学分大于等于42的同学的情 况。
SELECT * FROM XS WHERE专业名 = ‘通信工程’ an表中不在1979年出生的学生情况。
SELECT * FROM XS WHERE 出生时间 NOT BETWEEN ‘1979-1-1’ and ‘1979-12-31’ 使用IN关键字可以指定一个值表,值表中列出所有可能的值,当表达式与值表中的任一个匹配时, 即返回TRUE,否则返回FALSE。使用IN关键字指定值表的格式为: expression IN ( expression [,…n])
3
数据库查询
【例】 5。 计算列值 。
使用SELECT对列进行查询时,在结果中可以输出对列值计算后的值, 即SELECT子句可使用表达式作为结果,格式为: SELECT expression [ , expression ]
SELECT CPMC AS ‘产品名称’,产品总值 = JG * KCL FROM CP
17
模式匹配 LIKE谓词表达式的格式为:
string_expression [ NOT ] LIKE string_expression [ ESCAPE ‘escape_character’ ]
【例】查询XSCJ数据库XS表中计算机系的学生情况。
SELECT * FROM XS WHERE 专业名 LIKE ‘计算机’ 使用LIKE进行模式匹配时,常使用通配符,即可进行模糊查询。
16
use northwind select productid, sum(quantity) as a from [order details] where productid<10 group by productid having sum(quantity) >=30 go *group by与聚集函数连用 与聚集函数连用 *having必须与 必须与group by 联用 必须与

数据库实验3答案

数据库实验3答案

实验三:交互式SQL语句的使用1、实验目的(1)掌握数据库对象的操作过程,包括创建、修改、删除(2)熟悉表的各种操作,包括插入、修改、删除、查询(3)熟练掌握常用SQL语句的基本语法2、实验平台使用SQL Server提供的Microsoft SQL Server Management Studio工具,交互式使用SQL语句。

3 实验内容及要求选择如下一个应用背景之一:学生选课系统习题3、4、和5中使用的数据库其它你熟悉的应用(1)建立一个数据库和相关的表、索引、视图等数据库对象,练习对表、索引和视图的各种操作。

(2)要求认真进行实验,记录各实验用例及执行结果。

(3)深入了解各个操作的功能。

实验要求包括如下方面的内容:3.1 数据定义1.基本表的创建、修改及删除2.索引的创建3.视图的创建3.2 数据操作完成各类更新操作包括:1.插入数据2.修改数据3. 删除数据3.3 数据查询操作完成各类查询操作1.单表查询2.分组统计3. 连接查询4. 嵌套查询5. 集合查询3.4 数据操作1.创建视图2.视图查询参考示例:建立一个学生选课数据库,练习对表、视图和索引等数据库对象的各种操作。

一、数据定义创建学生选课数据库ST,包括三个基本表,其中Student表保存学生基本信息,Course表保存课程信息,SC表保存学生选课信息,其结构如下表:表1. Student表结构列名称用途类型长度约束备注Sno 学号字符8 主键Sname 姓名字符8Ssex 性别字符 2Sage 年龄整型Sdept 所在系字符20Sclass 班级字符 4表2. Course表结构列名称用途类型长度约束备注Cno 课程号字符 4 主键Cname 课程名字符40Cpno 先修课程号字符 4Ccredit 学分整型表3. SC表结构列名称用途类型长度约束备注Sno 学号字符8 外键Cno 课程号字符 4Grade 成绩整型1.创建、修改及删除基本表(1)创建Student表CREATE TABLE Student(Sno CHAR(8)PRIMARY KEY,Sname CHAR(8),Ssex CHAR(2)NOT NULL,Sage INT,Sdept CHAR(20));(2)创建Course表CREATE TABLE Course(Cno CHAR(4)PRIMARY KEY,Cname CHAR(40)NOT NULL,Cpno CHAR(4),Ccredit SMALLINT,);(3)创建SC表CREATE TABLE SC(Sno CHAR(8)FOREIGN KEY (Sno)REFERENCES Student(Sno),Cno CHAR(4),Grade SMALLINT,);(4)创建员工表EmployeeCREATE TABLE Employee(编号CHAR(8)PRIMARY KEY,姓名VARCHAR(8)not null部门CHR(40),工资numeric(8,2),生日datetime,职称char(20),);指出该语句中的错误并改正后执行。

数据库实验3

数据库实验3

宁波工程学院数据库理论与技术课程实验报告学院:电子与信息工程学院专业:计算机科学与技术年级:实验时间:组名:组长:组员姓名:指导教师签字:成绩:实验三、SQL-数据查询语言一、实验目的和要求1、实验目的:深入理解连接查询和嵌套查询的语句格式、执行过程,掌握它们的使用方法;理解数据更新语言INSERT、UPDATE、DELETE语句的格式和作用,掌握它们的使用方法和应用范围;理解视图的概念,掌握其定义方法和应用方法。

2、实验要求:在每次实验前,学生必须根据实验指导书设计出实验方案(程序和实验步骤);在实验过程中要求独立进行程序调试和排错,学会使用在线帮助来解决实验中遇到的问题,同时运用理论的知识来分析问题和解决问题,记录下实验过程和结果。

上机结束后写出实验报告,并对实验过程进行分析和总结。

二、实验内容与步骤1、在SQL SERVER 2005上附加数据库jxgl和ReadBook。

2、在jxgl中完成下列查询jxgl数据库中表及表中字段说明:Students(sno, sname,class,ssex,bday,bplace,mgrade,photo,sfzh,zxf)该表是学生基本信息表其中:sno-学号,sname-姓名,class-班级,ssex-性别,bday-出生日期,bplace-籍贯,mgrade-入学成绩,photo-照片,sfzh-身份证号码,zxf-总学分Course(cno,cname,cpno,credit)该表是课程情况表其中:cno-课程号,cname-课程名称,cpno-先修课程号,credit—学分SC(term,sno,cno,grade,point)该表是学生选课成绩表其中:term-学期,sno-学号,cno-课程号,grade-成绩,point-绩点TC(term,class,cno,tno,period)该表是教师上课情况表其中:list—序号,term-学期;class-班级;cno-课程号;tno-教师编号;period-学时Teachers (tno,tname,ps,wday,dept,pay,marry,resume)该表是教师基本情况表:其中t no-教师编号;tname-教师姓名;ps-职称;wday-入校日期;dept-系别;pay-工资;marry-婚否;resume-简历(1)查询选修课程学生的学号、姓名、所选课程号、课程名称以及所取得的成绩(2)查询每一门课程及其先修课程,查询结果中显示课程号、课程名和先修课程名(3)查询和“刘涛”在一个班级的学生的信息思考:该查询可用几种方法实现?(4)查询选修了…计算机基础‟课的学生的学号、姓名(分别用连接查询和嵌套查询的方法实现)(5)查询没有选修课程的学生的信息(6)查询其他班中比“03计算应用1”所有学生入学成绩高的学生的姓名和入学成绩(用两种方法实现)(7)查询每个学生超过该门课程平均成绩的学号(8)查询至少选修了“0311102”学生所选全部课程的学生的学号(9)查询既选修了“计算机基础”又选修了“C语言基础”的学生的学号3、在jxgl中完成下列数据更新(1)向course表添加一个新的元组。

实验三 索引和视图

实验三 索引和视图

实验三索引和视图一、实验目的1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。

2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。

ssex char(3)constraint ssex_ch check (ssex in('男','女')),sage int not null constraint sage_ch check (sage between 15 and 30),sdept char(10))values('C02','数据结构','C05',2) insert into coursevalues('C03','数据库','C02',2) insert into coursevalues('C04','DB_设计','C03',3)insert into coursevalues('C05','C++',null,3)insert into coursevalues('C06','网络原理','C07',3)create table sc(sno char(5)not null,cno char(5)not null,grade int constraint grade_ch check(grade between 0 and 100),primary key(sno,cno),constraint fk_sno foreign key (sno)references student(sno),constraint fk_cno foreign key (cno)references course(cno))insert into scvalues('S01','C01',92)insert into scvalues('S01','C03',84)insert into scvalues('S02','C01',90)insert into scvalues('S02','C02',94)insert into scvalues('S02','C03',82)insert into scvalues('S03','C01',72)insert into scvalues('S03','C02',90)insert into scvalues('S04','C03',75)2.索引的建立、删除①用SSMS的方式为Student表按Sno(学号)升序建唯一索引②用T—SQL语句为Course表按Cno(课程号)升序建唯一索引,create unique index course_cnoon course(cno asc)③用T—SQL语句为SC表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。

数据库的查询与视图

数据库的查询与视图

数据库的查询与视图T4.1 数据库的查询1.目的与要求(1)掌握SELECT语句的基本用法;(2)掌握子查询的表示;(3)掌握连接查询的表示;(4)掌握SELECT语句的GROUP BY子句的作用和使用方法;(5)掌握SELECT语句的ORDER BY子句的作用和使用方法。

2.实验准备(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY 子句的作用和使用方法;(6)了解SELECT语句的ORDER BY 子句的作用。

3.实验内容(1)SELECT语句的基本使用。

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

2.用select语句查询Employees表中每个雇员的地址和电话。

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

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

5.查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。

6.计算每个雇员的实际收入。

7.获得员工总数8.找出所有姓王的雇员的部门号。

9找出所有收入在2000~3000元之间的员工号码。

10.使用INITO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。

(2)子查询的使用。

1.查找在财务部工作的雇员的情况。

2.查找财务部年龄不低于研发部雇员年龄的雇员的姓名。

3.查找比所有财务部的雇员收入都高的雇员的姓名。

(3)连接查询的使用。

1.查询每个雇员的情况及其薪水的情况。

2. 使用内连接的方法查询名字为“王林”的员工所在的部门。

3.查询财务部收入在2000元以上的雇员姓名及其薪水详情。

(4)聚合函数的使用。

1.求财务部雇员的平均收入。

2.求财务部雇员的平均实际收入。

3.求财务部雇员的总人数(5)GROUP BY 、ORDER BY子句的使用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三数据库的查询和视图T4.1 数据库的查询1、目的和要求(1)掌握SELECT语句的基本语法。

(2)掌握子查询的表示。

(3)掌握连接查询的表示。

(4)掌握SELECT语句的GROUP BY子句的作用和使用方法。

(5)掌握SELECT语句的ORDER BY子句的作用和使用方法。

2、实验准备(1)了解SELECT语句的基本语法格式。

(2)了解SELECT语句的执行方法。

(3)了解子查询的表示方法。

(4)了解连接查询的表示。

(5)了解SELECT语句的GROUP BY子句的作用和使用方法。

(6)了解 SELECT语句的ORDER BY子句的作用。

3、实验内容(1)SELECT语句的基本使用。

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

新建一个查询,在“查询分析器”窗口中输入如下语句并执行。

单击右键空白处,选择执行,在下方会出现所有结果。

【思考与练习】用SELECT语句查询Departments表和Salary表中所有信息。

新建一个查询,在“查询分析器”窗口中输入如下语句并执行。

单击右键空白处,选择执行,在下方会出现所有结果。

在“消息”中会发现总共有60行受影响。

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

新建一个查询,在“查询分析器”窗口中输入如下代码并执行。

单击右键空白处,选择执行,在下方会出现所有结果。

在“消息”中会发现有12行记录受影响【思考与练习】A、用SELECT语句查询Departments表和Salary表的一列或若干行。

利用SELECT语句查询Departments表和Salary表中 EmployeeID为000001的记录,在“查询分析器”中输入以下代码。

执行后在下方会出现所有EmployeeID=000001的记录B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。

对表只选择某些行时,可能会出现重复行。

此时就需要使用DISTINCT关键字消除结果中的重复行。

此时使用DISTINCT消除在Employees中查询到的部门号和性别的重复行,具体代码如下。

上面代码分别是使用了DISTINCT和没有使用DISTINCT关键字,下面就是两种的结果的对比。

可以从上面的执行结果中看出使用了DISTINCT关键字,结果集中的重复行就被消除了。

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

鼠标右键单击在弹出的菜单窗口中选择“执行”,结果中只会出现一行记录,EmployeeID为000001的雇员的地址和电话。

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

只需要查询员工号码,条件为月收入高于2000元员工,那么至于要Salary表就行。

用T-SQL命令在表Salary表中查询月收入高于2000元的员工代码如下。

在结果栏中显示(9 行受影响),说明月收入高于2000的员工共有9人,如上截图所示,将所有月收入高于2000的员工的员工号码输出。

B、查询1970年以后出生的员工的姓名和地址。

通过分析员工信息,跟员工年龄、姓名、地址相关的只有表Employees表,所以只需要在一张表中查询即可,具体T-SQL查询命令如下。

在结果栏中消息显示(7 行受影响),说明1970年以后出生有7人,如上截图所示,将部分1970年以后出生员工姓名、地址输出显示。

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

通过分析的,需要知道财务部与员工的号码和姓名,财务部只存在于Departments表中,员工姓名和号码只存在于Employees表中。

因此需要在表Departments表和Employees表中进行查询。

利用T-SQL命令查询代码如下。

在结果栏中显示3行受影响,从上面截图中可以看出所有财务部员工有3人,并且查询显示其姓名、电话号码。

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

从上面结果的截图发现Address变为地址,PhoneNumber变为电话。

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

通过分析此查询属于单表查询,只需要用到Employees表,使用AS子句就能够使结果集中各列标题用中文显示。

利用T-SQL命令查询代码如下。

从上面结果的截图发现各列标题都是中文。

从消息中显示(9 行受影响)说明,员工中男性有9人,并且全部男性的姓名和出生日期都已经查询显示出。

⑤ 查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。

【思考与练习】查询Employees员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000元显示为中等收入,3000元以上显示高收入。

经过分析需要查询员工的姓名、住址和收入水平,需要在Employees表和Salary表中进行查询,并且将Salary表中员工的InCome进行分类需要用到AS子句。

利用T-SQL命令进行多表查询语句如下。

执行上面截图中代码,在结果栏中出现员工的姓名,住址和收入水平。

消息中显示12行受影响,Employees表中所有员工信息都已经查询输出。

⑥计算每个雇员的实际收入。

经过分析需要员工的收入以及员工号码和员工姓名,就需要在Employees表和Salary表中进行查询。

利用T-SQL命令查询如下。

结果栏中就会显示EmployeeID,Name,实际收入这三项。

注意:在上面T-SQL命令中EmployeeID如果不指明为哪个表中的EmployeeID,代码就会报错“EmployeeID不明确”,改为Employees.EmployeeID 或者Salary.EmployeeID都行。

【思考与练习】使用SELECT语句进行简单的计算。

在这里我将使用SELECT语句计算出Employees表中工龄三年以上的人数,并且查询员工号码,姓名,工龄。

⑦获得员工总数。

经分析得需要得到员工总数,只需要在Employees表内使用内置函数COUNT 就行。

利用T-SQL命令执行操作如下。

【思考与练习】A、计算Salary表中员工月收入的平均数。

B、获得Employees表中最大的员工号码。

C、计算Salary表中所有员工的总支出。

D、查询财务部雇员的最高和最低实际收入。

经过分析需要查询财务部雇员的最高和最低实际收入,涉及到Employees表、Departments表和Salary表,需要在三张表中进行查询。

首先确定DepartmentName为“财务部”的DepartmentID。

其次在Employees表中确定DepartmentID为财务部的雇员的EmployeeID。

最后在Salary表中通过EmployeeID查询财务部雇员的InCome和OutCome,在最后的输出时候用 InCome-OutCome的结果为实际收入。

执行后在结果栏中看到财务部雇员的最高实际收入和最低实际收入。

⑧找出所有姓王的雇员的部门号。

【思考与练习】A、找出所有地址中含有“中山”的雇员的号码及部门号。

注意:%代表着任意长度的字符串(长度可以为0),“%中山%”表示“中山”前面和后面都能够有任意长度字符串,用来表示地址中含有“中山”二字。

B、查找员工号码中倒数第2个数字为0的员工的姓名、地址和学历。

注意:数字占单个字符,所以通配符“_”只有一个,“%0_”表示倒数第二位为0。

⑨找出所有收入在2000~3000元的员工号码。

【思考与练习】找出所有在部门“1”或“2”工作的雇员的号码。

10 使用INTO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。

在左边对象资源管理器的YGGL数据库的表中刷新,会发现多了表“收入在1500元以上的员工”。

【思考与练习】使用INTO子句,由表Employees创建“男员工”表,包括编号和姓名。

(2)子查询的使用。

①查找在财务部工作的雇员的情况。

查询财务部工作的雇员情况,需要用到Department表和Employees表进行多表查询。

首先,在Department表中查询DepartmentName为“财务部”的DepartmentID。

然后,将DepartmentID拿到表Employees表中查询所有DepartmentID为财务部的雇员的所有信息。

利用T-SQL命令查询代码如下。

在结果栏中显示所有工作部门为“财务部”的雇员的详细信息。

【思考与练习】用子查询的方法查找所有收入在2500元以下的雇员的情况。

进分析需要用到工资表Salary和员工信息表Employees进行查询。

首先,在表Salary中查询InCome<2500元的雇员的EmployeeID。

然后,利用得到的EmployeeID在表Employees中行选,查询所有符合EmployeeID的雇员的情况。

注:上面截图中代码第5行,若改为“where EmployeeID =”就会出现如下错误表示返回值不止一个,并且现在子查询后面接的是“=”,这种情况DBMS是不允许的,所以就会出现如上所示的错误。

解决方法只需要将“=”改为“in”就行了,就会解决返回值不止一个和“=”的冲突。

执行上面T-SQL语句,在结果栏中显示出现结果。

②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。

分析得,ALL指定表达是要与子查询结果集中每个值都进行比较,当表达式与每个值都满足比较是关系时,才返回TRUE,否则返回FALSE。

执行结果会发现只查询到1人满足这样的条件。

同样我们也能够通过查询Employees表得到。

财务部只有“王向容”1人符合年龄不小于(大于)研发部雇员年龄。

注:在书上源码第12行“Birthday ! >all”查询到的是“李丽”,年龄小于所有研发部的,所有书本上源码表示的是“财务部雇员年龄不大于研发部雇员年龄”与题目中“不低于”冲突。

所以书上源码有误,将源码改成上面截图中第12行即可。

【思考与练习】用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名。

分析:首先在Employees表里找到EmployeeName为“研发部”的雇员的姓名和查找雇员的EmployeeID,其次这样的EmployeeID还需要满足InCome大于所有的DepartmentName为“财务部”的雇员的InCome,满足条件返回True,select到满足这样条件的雇员的Name,否则返回FALSE。

Where子查询中嵌套使用。

执行T-SQL命令后在结果栏中显示只有1人满足。

(3)连接查询的使用。

①查询每个雇员的情况及其薪水情况。

执行之后,将Employees表和Salary表中所有员工的基本情况进行输出。

相关文档
最新文档