2013《数据库原理及应用》实验报告答案 下载本文

实验二 数据定义

一、实验目的

1、掌握数据库引擎的使用方法,加深对SQL的语句的理解; 2、使用SQL语句创建数据库、删除数据库

3、熟练掌握DDL语言的数据定义操作,包括CREATE、ALTER、DROP。

二、实验内容

在SQL查询分析器中用CREATE、DROP、ALTER语句创建、删除、修改基本表。

三、实验步骤

1、根据课本中的说明,分析S表,P表,J表和SPJ表的主码和外码:

(1) S表,P表,J表的主码分别是哪个属性,S表,P表,J表这三个表有没有外码?如果有,请写出。

S表的主码 SNO P表的主码PNO J表的主码JNO 没有外码

(2) SPJ表的主码是由哪几个属性组成的属性组?SPJ表的外码有几个,分别是哪些属性?分别参照哪些表的哪个属性?

SPJ主码(SNO,PNO,JNO)

外码SNO参照S表的SNO,外码PNO参照P表的PNO,外码JNO参照J表的JNO。

2. 新建数据库SPJ,并在数据库SPJ中创建S表,P表,J表和SPJ表。 (1)创建供应商表S的sql语句,要求设置主码: CREATE TABLE S (

SNO CHAR(4) PRIMARY KEY, SNAME VARCHAR(40), STATUS SMALLINT, CITY VARCHAR(20) );

(2)创建零件表P的sql语句,要求设置主码并将该约束命名为P_PK:

CREATE TABLE P(

PNO CHAR(4) CONSTRAINT P_PK PRIMARY KEY, PNAME VARCHAR(40), COLOR CHAR(2), WEIGHT SMALLINT );

(3)创建工程项目表J的sql语句,要求设置主码并命名为J_PK: CREATE TABLE J (

JNO CHAR(4) CONSTRAINT J_PK PRIMARY KEY, JNAME VARCHAR(40), CITY VARCHAR(20) );

(4)创建基本表供应情况表SPJ的sql语句,要求设置主码和外码: CREATE TABLE SPJ (

SNO CHAR(4) REFERENCES S(SNO), PNO CHAR(4) REFERENCES P(PNO), JNO CHAR(4) REFERENCES J(JNO), QTY SMALLINT,

PRIMARY KEY(SNO,PNO,JNO) );

3. 在窗口下键入DROP TABLE S命令,运行后观察结果。 (1)运行结果是什么? 不能执行

(2)为什么会出现这种结果?

破坏参照完整性。

4. 打开S表,并往S表中输入第一行数据。 (1)如何保存输入的数据?

(2)输入第二行数据时如果不输入属性SNO的值,将出现什么情况?为什么?

不能执行

违背实体完整性。

5. 在S表中增加一个新的字段“TEL”,数据类型为char(11) (1)sql语句:

ALTER TABLE S ADD TEL CHAR(11)

(2)观察属性TEL的值,值为 NULL 。

6. 修改S表中属性SNAME的数据类型改为varchar(20),其sql语句是

ALTER TABLE S ALTER COLUMN SNAME VARCHAR(20);

7. 删除S表中的属性TEL的SQL语句:

ALTER TABLE S DROP COLUMN TEL;

8. 为P表添加约束C1:零件重量必须在0到100之间,其SQL语句:

ALTER TABLE P ADD CHECK(WEIGHT BETWEEN 0 AND 100); 9. 验证完整性约束:

(1)在S表中输入第一条记录,若再往S表中输入一条“S1,盛锡”的记录,能不能输入,为什么?

不能,主键取值唯一。

(2)往P表、J表和SPJ表中分别输入第一条记录,若往SPJ表中输入第二条记录,能不能实现?为什么? 不能,违背参照完整性。

(3)此时若要删除S表中的第一条记录能不能删除?为什么?

不能,违背参照完整性。

(4)往P表中输入一条记录“P7,齿轮,蓝,150”,能不能实现?为什么? 不能,违背CHECK约束。

四、实验小结(实验过程中遇到什么问题?如何解决?)

实验三 单表查询

一、实验目的

1、掌握数据库引擎的使用方法,加深对SQL的语句的理解; 2、使用SELECT语句进行单个表格数据查询; 3、熟练掌握简单表的数据查询、数据排序的操作方法。 二、实验内容

1、使用SELECT语句完成简单查询操作。

2、该实验包括投影、选择条件表达,数据排序,查询结果分组等。 三、实验步骤

1、查询所有供应商的姓名和所在城市。

Sql语句:

SELECT SNAME, CITY FROM S; 2、查询所有零件的名称颜色和重量。

Sql语句:

SELECT COLOR,WEIGHT FROM P; 3、查询S1供应商所供应零件的工程号码。

Sql语句:

SELECT JNO FROM SPJ WHERE SNO=’S1’; 4、查询名称带有“厂”字的工程项目的详细信息。

Sql语句:

SELECT * FROM J WHERE JNAME LIKE ‘%厂%’; 5、查询供应了零件的供应商号。

Sql语句:

SELECT DISTINCT SNO FROM SPJ; 6、查询重量在10到20之间的红色零件。

Sql语句:

SELECT * FROM P

WHERE WEIGHT BETWEEN 10 AND 20 AND COLOR=’红’; 7、查询所有零件的名称,并按重量降序排列

Sql语句:

SELECT PNAME FROM P ORDER BY WEIGHT; 8、查询地址在长春、北京或天津的工程项目的详细信息。

Sql语句:

SELECT * FROM J WHERE CITY IN (‘长春’,’北京’,’天津’); 9.查询零件表中零件的平均重量。

Sql语句:

SELECT AVG(WEIGHT) FROM P; 10. 统计每个供应商各供应了多少个零件。

Sql语句:

SELECT SNO,SUM(QTY) NUM FROM SPJ GROUP BY SNO; 11. 查询至少使用了三种或以上零件的工程项目有哪些。

Sql语句:

SELECT JNO FROM SPJ

GROUP BY JNO HAVING COUNT(DISTINCT PNO)>=3; 12. 查询至少提供了200个P1零件的供应商号。

Sql语句:

SELECT SNO FROM SPJ WHERE PNO=’P1’ GROUP BY SNO HAVING SUM(QTY)>=200;