数据库实验二

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

西南石油大学实验报告

注意:在粘贴截图时请保留窗口完整标题,但只需保留关键界面,多余的空白界面请删除。

一、实验课时:4

二、实验目的

(1) 理解查询的概念和方法。

(2) 掌握SELECT语句在单表查询中的应用。

(3) 掌握SELECT语句在多表连接查询中的应用。

(4) 掌握SELECT语句在嵌套查询中的应用。

(5) 掌握SELECT语句在集合查询中的应用。

(6) 主要掌握使用“查询分析器”进行查询。

三、实验环境

(1) PC机。

(2) SQL Server 2008。

四、实验内容及步骤

以下查询均使用实验项目1中创建的COMPANY数据库。

1.单表查询

(1)基本查询。

Q0. 使用查询分析器从Employee表中检索出所有员工的姓名。

SQL文本:SELECT FNAME,LNAME FROM EMPLOYEE;

(以下所有题目都必须按照上图的要求截图)

Q1.从Employee表中检索出员工的FNAME、LNAME、SSN、BDATE、SALARY等字段,并分别加上“名”、“姓”、“社会保险号”、“生日”、“工资”的标题。员工的排序规则为:首先按工资的降序排列,然后按FNAME 的字母升序排列。

SQL文本:

SELECT Fname名,Lname姓,Ssn社会保险号,

Bdate生日,Salary工资

FROM EMPLOYEE

ORDER BY Salary DESC,Fname;

Q2.查询不重复的员工工资值。

SQL文本:

SELECT DISTINCT Salary

FROM EMPLOYEE;

Q3.查询没有直接上司的员工姓名。SQL文本:

SELECT Fname,Lname FROM EMPLOYEE WHERE Super_ssn IS NULL;

(2) 基于WHERE子句进行数据查询。

1)基于比较条件。

Q4. 从Employee表中查询出工资大于等于40000的员工资料。

SQL文本:

SELECT*

FROM EMPLOYEE

WHERE Salary>= 40000;

Q5.检索姓名为John B.Smith的员工的SSN、性别、出生日期和地址。

SQL文本:

SELECT Ssn,Sex,Bdate,Address

FROM EMPLOYEE

WHERE Fname='JOHN'AND Lname='SMITH'

AND Minit='B';

2)基于BETWEEN子句的查询。

Q6. 从Employee表中查询出1960年——1970年之间出生的员工资料。

SQL文本:

SELECT*FROM EMPLOYEE

WHERE Bdate BETWEEN'1960-01-01'

AND'1970-01-01';

3)基于IN子句的查询。

Q7.从Employee表中查询出部门号为4或者5的员工资料。

SQL文本:

SELECT*

FROM EMPLOYEE

WHERE Dno IN(4,5);

4)基于LIKE子句的查询。

Q8.从Employee表中查询出LNAME中含有字母o的员工资料。

SQL文本:

SELECT*

FROM EMPLOYEE

WHERE Lname LIKE'%O%';

Q9.检索居住在Houston的员工所有信息。

SQL文本:

SELECT*

FROM EMPLOYEE

WHERE Address LIKE'%Houston%';

(3) 使用计算列查询。

Q10.从Employee表中检索出员工的FNAME、LNAME、SSN、SALARY等字段(其中SALARY需换算成人民币,汇率假定为1美元=8人民币元),并分别加上“名”、“姓”、“社会保险号”、“人民币工资”的标题。

SQL文本:

SELECT Fname名,Lname姓,Ssn社会保险号,

Salary* 8 人民币工资

FROM EMPLOYEE;

2.多表连接查询(使用JOIN)

Q11.查询所有为Research部门工作的员工姓名及地址。

SELECT Fname,Lname,Address

FROM EMPLOYEE E

JOIN DEPARTMENT D

ON E.Dno=D.Dnumber

WHERE Dname='Research';

Q12.对于所有位于Stafford的项目,查询项目的编号、项目负责部门编号以及该部门经理的姓、地址、生日。

SQL文本:

SELECT E.Lname,E.Address,E.Bdate,P.Pnumber,P.Dnum FROM PROJECT P JOIN

DEPARTMENT D ON (P.Dnum=D.Dnumber)

JOIN EMPLOYEE E ON (D.Mgr_ssn=E.Ssn)

WHERE Plocation='Stafford';

Q13.查询有两个或以上家属的员工姓名(此题较难,若不能完成者可只查询出员工的SSN而不是姓名)。

SQL文本:

SELECT E.Fname,E.Lname

FROM EMPLOYEE E

JOIN DEPENDENT D

ON (D.Essn=E.Ssn)

GROUP BY D.Essn,E.Fname,E.Lname

HAVING COUNT(*)>= 2;

相关文档
最新文档