图3-9
提示命令成功完成,或者报告出错信息。 3.查询分析器中向表添加数据:
在查询分析器的查询窗口中输入SQL语句,如图3-10所示。
图3-10
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-11所示。
图3-11
从表中查询数据:
在查询分析器的查询窗口中输入SQL语句,如图3-12所示。
图3-12
点击按钮,执行该SQL语句,在查询窗口下部出现一个输出窗口,如图3-13所示。
图3-13
四、实验任务
1.打开数据库SQL Server 2000的查询分析器,用SQL语言建立实验二中给出的三张表,要求建表时给出主外键约束、唯一约束、取空值约束、用户自定义的约束等。 2.练习使用SQL语句向三张表中插入部分数据。 3.练习下面简单的查询语句:
a) 查询每个雇员的所有信息 b) 查询每个雇员的地址和电话
c) 查询EmployeeID为000001的雇员的地址和电话。 d) 查询女雇员地址和电话,并用AS子句将结果中各列的标题分别指定为“地址”和“电话”。
e) 计算每个雇员的实际收入。 f) 找出所有姓王的雇员的部门号。
思考:找出所有地址中含有“中山”的雇员的号码和部门号。
五、实验报告要求
1、写出建表的SQL语句(包含各种约束);
2、从实验任务3中规定的六条查询里任选三条,写出其SQL语句; 3、并记录在使用SQL语句过程中遇到的问题及解决办法。
任务2.2 DML的数据查询
一、实验目的
DML的数据查询指对数据库中的数据查询、统计、分组、排序等操作。查询语句可以分为简单查询、连接查询、嵌套查询和组合查询。
本次实验了解DML语言的SELECT语句对数据的查询,学会SQL Server 2000的查询分析器中用DML语言对表中的数据进行连接查询和嵌套查询。
二、预计实验时间:一~二次上机
三、实验内容
1.启动数据库服务软件SQL Server 2000的查询分析器,用SELECT语句对表进行简单查询操作,整个查询过程只涉及到一个表,是最基本的查询语句。 语法格式如下:
Select <目标列组> From <数据源> [Where <元组选择条件>] [Group by <分组列> [Having <组选择条件>]] [Order by <排序列1> <排序要求> [, …n]]
2.用SELECT语句对表进行连接查询操作,连接查询涉及被连接和连接两个表,所以数据源一般为多个表。用来连接两个表的条件称为连接条件,一般格式为: [<表名1>.]<列名1> <比较运算符> [<表名2>.]<列名2> 其中比较运算符主要有:=、>、<、>=、<=、!=。
3.用SELECT语句对表进行嵌套查询操作,一个Select…From…Where语句称为一个查询块,将一个查询块嵌套在另一个查询块的Where子句或Having短语的条件中的查询,就是嵌套查询。主要有使用In操作符、使用比较运算符的嵌套查询方式。
四、实验任务 Departments表: DepartmentID 1 2 3 Employee表 EmployeeID Name Birthday Sex Address Zip 1001 1002 1003 2001 2002 2003 3001 3002 Salary表
DepartmentName 财务部 研发部 人力资源部 Note 财务部 研发部 人力资源部 PhoneNumber EmailAddress ly@henu.edu.cn lc@henu.edu.cn zl@henu.edu.cn ly@henu.edu.cn zm@henu.edu.cn xj@henu.edu.cn zj@henu.edu.cn DepartmentID 1 1 2 2 2 3 3 李勇 王敏 刘晨 张立 刘毅 张玫 徐静 赵军 78-3-12 80-11-2 78-6-22 78-8-1 82-1-23 81-3-15 76-8-12 79-2-19 0 1 0 0 0 1 1 0 河南 河南 河南 河南 河南 河南 河南 河南 475001 3880378 475002 0378311 475003 0378322 475004 0378333 475005 0378344 475006 0378355 475007 0378366 475008 0378377 wm@henu.edu.cn 1
EmployeeID 1001 1002 1003 2001 2002 2003 3001 3002 Income 3600 3300 3700 4000 3800 3800 4200 4100 OutCome 1500 1000 1200 1600 1800 1500 2000 1800 1.下列查询任务用来练习多表连接查询。
a) 查询每个雇员的情况及工资情况(工资=Income - Outcome) b) 查询财务部工资在2200元以上的雇员姓名及工资情况 c) 查询研发部在1966年以前出生的雇员姓名及其工资详情 d) 查询人力资源部雇员的最高和最低工资 e) 将各雇员的情况按工资由低到高排列 f) 求各部门的雇员数 Select count(*)
From Employee E, Department D
Where E. DepartmentId =D. DepartmentId Group by E. DepartmentId
g) 找出所有在财务部和人力资源部工作的雇员的编号
2.下列查询任务用来练习嵌套查询。
h) 统计人力资源部工资在2500以上雇员的人数 Select count(*) From Employee
Where DepartmentId in (select ) i) 求财务部雇员的总人数 j) 求财务部雇员的平均工资
k) 查找比所有财务部的雇员工资都高的雇员的姓名
l) 查找财务部年龄不低于研发部所有雇员年龄的雇员的姓名 m) 查找在财务部工作的雇员的情况
3.将课本P104-108 [例38]~~[例43]用带EXISTS谓词的子查询来做等价替换,写出相应的查询语句。
五、实验报告要求 写出与上述查询任务相对应的SQL查询语句,并记录在实验过程中遇到的问题、解决办法及心得体会。