文档库 最新最全的文档下载
当前位置:文档库 › 数据库实验习题

数据库实验习题

数据库实验习题
数据库实验习题

《数据库概论》实验指导书

(2003级)

一、实验目的:

数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。本实验是结合《数据库概论》课程的学习而开设的实验。本实验目的如下:

1. 通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力;

2. 通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置;

3. 学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力;

4. 加强对事务处理、权限管理等概念的认识和理解。

二、适应专业:信息管理与信息系统,信息与计算机科学

三、实验学时数:12学时

四、实验内容及学时安排:

实验准备:

各班选出10个同学,协助老师搭建试验环境。包括:

1)安装ORACLE客户端,配置与主机的数据库连接。

2)安装软件工具 PLSQL/DEVELOPER

3)负责本班用户的建立。

分为两批上午下午各两个班。

实验一:数据定义/数据操纵语言

实验目的:熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

学时数:4学时

实验内容:SQL数据定义语句, SQL数据操纵语句。

实验要求:1. 熟悉Oracle上机环境;

2. 建立数据库表,修改数据库表结构,建立、删除索引;

3. 对数据库表进行插入、修改和删除数据的操作。

实验二:数据查询语言,视图定义

实验目的:体会SQL语言数据查询功能的丰富和复杂,视图使用。

学时数:4学时

实验内容:SQL数据查询语句,视图的定义与操纵;

实验要求:对数据库表进行各种查询操作,建立视图,视图查询,视图更新;

实验三:授权控制与事务处理

实验目的:通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。

学时数:2学时

实验内容: 1. SQL数据控制语句;

2. SQL事务处理。

实验要求:

1. 给某一或全部用户授权和收回授权;

2. 事务回退,事务提交。

五、教材及参考文献

1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社 2000.2

2.《ORACLE 8.x For Windows NT实用教程》翁正科等编著清华大学出版社 1998.10

六、实验环境

实验要求如下环境

服务器端:Windows 2000NT Server;

ORACLE 8.x Database Server For Windows Windows2000 Server 客户端: Windows9x;Oracle 8.x Client

网络协议:TCP/IP

七、成绩考核

上机实验考核采取实验报告和上机抽查检验相结合的方式。每次实验结束后都必须写出实验报告。

八. 实验报告

实验一:数据定义/数据操纵语言

[ 实验日期 ] 年月日

[ 实验目的 ]

熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。

[ 实验内容 ]

Oracle上机环境以及Oracle客户端的配置参见附录。

1. SQL数据定义语句:

例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2)字段,Sname 字段为Sname(C,8)且可为空。

例1-2: (修改数据库表) 在Student表中增加SSEX(C,2)字段。

例1-3: (修改数据库表) 将Student表中把Sname字段修改为Sname(C,10)且为非空。

例1-4: (建立索引) 为Score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO 和SC_NDXCNO。为Score表按分数降序建立索引,索引名为GRADE_NDX。

例1-5: (删除索引) 删除索引SC_NDX_SNO。

例1-6: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student 表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。

例1-7: (修改数据库表) 删除成绩表Score的参照完整性约束关系。

例1-8: (修改数据库表) 添加成绩表Score的参照完整性约束关系。

2. SQL数据操纵语句:

例2-1: (插入数据) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。

例2-2:(多行插入) 将表Student中在计算机系(‘CS’)的学生数据插入到表S1中。

例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。

例2-4: (修改数据) 将S1表中所有学生的年龄加2。

例2-5: (修改数据) 将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。

例2-6: (插入数据) 向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。

例2-7: (插入数据) 向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。

例2-8: (删除数据) 删除Score表中学号为‘96001’的成绩信息,根据返回信息解释其原因。

例2-9: (删除数据) 删除Score表中课程号为‘003’的成绩信息,根据返回信息解释其原因。例2-10:(删除数据) 删除学生表S1中学号以96打头的学生信息。

例2-11:(删除数据) 删除数据库表S1中所有学生的数据。

例2-12:(删除表) 删除数据库表S1和Student_Gr。

[ 实验要求 ]

①熟悉Oracle上机环境,掌握Oracle客户端的配置;

②建立数据库表,修改数据库表结构,建立、删除索引;

③对数据库表进行插入、修改和删除数据的操作。

[ 实验方法 ]

①按照附录中的操作步骤进行客户端的配置;

②将实验需求用SQL语句表示;

③执行SQL语句;

④查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

① SQL语句以及执行结果;

②对重点实验结果进行分析;

③实验中的问题和提高;

④收获与体会。

实验二:数据查询语言,视图操作

[ 实验日期 ] 年月日

[ 实验目的 ]

体会SQL语言数据查询功能的丰富和复杂,视图定义使用。

[ 实验内容 ]

3. SQL数据查询语句:

例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

例3-2: (不选择重复行) 求选修了课程的学生学号。

例3-3: (选择表中的所有列) 求全体学生的详细信息。

例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。

例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。例3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。

例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。

例3-12:(匹配查询) 求姓名是以“李”打头的学生。

例3-13:(匹配查询) 求姓名中含有“志”的学生。

例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、

课程号和成绩。

例3-16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。

例3-17:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数。

例3-18:(组函数) 求学生总人数。

例3-19:(组函数) 求选修了课程的学生人数。

例3-20:(组函数) 求计算机系学生的平均年龄。

例3-21:(组函数) 求选修了课程001的最高、最低与平均成绩。

例3-22:(分组查询) 求各门课程的平均成绩与总成绩。

例3-23:(分组查询) 求各系、各班级的人数和平均年龄。

例3-24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。

SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’ GROUP BY SDEPT;

例3-25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。

SELECT SAGE FROM STUDENT GROUP BY SNO;

例3-26:(分组查询) 求学生人数不足3人的系及其相应的学生数。

例3-27:(分组查询) 求各系中除01班之外的各班的学生人数。

例3-28:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。

例3-29:(自然连接查询) 求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO

字段。

例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课

程名称和成绩。

例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。

例3-32:(自身连接查询) 求年龄大于’李丽’的所有学生的姓名、系和年龄。

例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩。

例3-34:(子查询) 求与‘李丽’年龄相同的学生的姓名和系。

例3-35:(子查询) 求选修了课程名为’数据结构’的学生的学号和姓名。

例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。

例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。

例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。

例3-39:(返回多列的子查询) 求与‘李丽’同系且同龄的学生的姓名和系。

例3-40:(多个子查询) 求与‘李丽’同系,且年龄大于‘黎明’的学生的信息。

例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。

例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。

例3-43:(嵌套与分组查询) 检索选修某课程的学生人数多于3人的教师姓名。

例3-44:(集合查询) 列出所有教师和同学的姓名和性别。

例3-45:(相关子查询) 求未选修课程004的学生的姓名。

例3-46:(相关子查询) 求选修了全部课程的学生的姓名。

例3-47:(相关子查询) 求至少选修了学生‘96002’所选修的全部课程的学生的学号。

例3-48:(相关子查询) 求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。

例3-49:(相关子查询) 查询被一个以上的学生选修的课程号。

例3-50:(相关子查询) 查询所有未选课程的学生姓名和所在系。

4. SQL视图的定义与操纵:

例4-1: (建立视图) 建立计算机系的学生的视图STUDENT_CS。

例4-2: (建立视图) 建立由学号和平均成绩两个字段的视图STUDENT_GR。

例4-3: (视图查询) 利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。

例4-4: (视图查询) 利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。例4-5: (视图更新) 利用视图STUDENT_CS,增加学生( ‘96006’,‘张然’,‘CS’,‘02’,‘男’,19 )。例4-6: (视图更新) 利用视图STUDENT_CS,将学生年龄增加1岁。观察其运行结果并分析原因。例4-7: (视图更新) 利用视图STUDENT_GR,将平均成绩增加2分。观察其运行结果并分析原因。例4-8: (视图更新) 删除视图STUDENT_CS中学号为‘96006’的学生的全部数据。

例4-9: (视图更新) 删除视图STUDENT_GR的全部数据。

例4-10:(删除视图) 删除视图STUDENT_CS和STUDENT_GR。

[ 实验要求 ]

对数据库表进行各种查询操作。

[ 实验方法 ]

①将实验需求用SQL语句表示;

②执行SQL语句;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

① SQL语句以及执行结果;

②对重点实验结果进行分析;

③实验中的问题和提高;

④收获与体会。

实验三:授权控制与事务处理

[ 实验日期 ] 年月日

[ 实验目的 ]

通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。

[ 实验内容 ]

5. SQL数据控制语句:

例5-1: (授权) 给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限。

例5-2: (授权) 给邻近同学(用户)授予Teach表上的所有权限。

例5-3: (授权) 给所有用户授予Score表上的SELECT权限。

例5-4: (授权验证) 观察左右邻近同学查询你所授权的表中的内容。

例5-5: (收回授权) 收回上面例子中的所有授予的权限。

6. SQL事务处理:

例6-1: (事务回退) 将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改(ROLLBACK)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。

例6-2: (事务提交) 将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改(COMMIT)。再次查询全部课程的总学时数。注意比较分析两次查询的结果。

[ 实验要求 ]

①建立视图,视图查询,视图更新;

②给某一或全部用户授权和收回授权;

③事务回退,事务提交。

[ 实验方法 ]

①将实验需求用SQL语句表示;

②执行SQL语句;

③查看执行结果,如果结果不正确,进行修改,直到正确为止。

[实验总结 ]

① SQL语句以及执行结果;

②对重点实验结果进行分析;

③实验中的问题和提高;

④收获与体会。

附录:《数据库概论》操作指导

一. 客户端配置

为了使得Oracle和Windows NT 连接起来,必须建立数据库别名(一种连接名称),提供一个和

Oracle数据库连接的通路。操作如下:

1. 选择 Windows95&98 开始 -> 程序 -> Oracle for Windows95 -> Oracle net8 easy config

得到如下图所示画面:

选择“Yes”按扭,得到下面的画面:

在这个画面上,左边的一组单选按扭是功能选择,含义如下:

Add New Service 添加服务名

Modify 修改存在的连接

Delete 删除存在的连接

Test 测试存在的连接

如果选择添加新服务名,需要在右上文本框中输入新服务名(New Service Nami)。如果是其他三种操作,则需要在右下列表框选择其存在的服务名(Exsting Services)。

2. 添加新服务名。在右上文本框中输入一个服务名(如ORA5),然后按“Next”按扭进入下一步。

3. 选择通信协议。Oracle数据库与网络是通过指定的协议进行连接的。可选择的画面如下图所示,通常选择TCP/IP协议,单击“Next”按扭,进入下一步。

4. 输入IP地址和端口号。使用TCP/IP协议需要输入IP地址。在Host Name文本框中输入IP地址(注意:输入哪个服务器地址,需要询问实验指导老师或数据库管理员)。

系统提供一个缺省的端口号,如是1251,可以直接使用它。单击“Next”按扭,进入下一步。

5. 系统标识。典型安装的数据库使用的系统标识符号是ORCL,因此可在出现如下图所示的画面之后直接单击“Next”按扭,进入下一步。

6. 测试。可跳过此步,直接单击“Next”按扭,进入下一步。

再单击“Finish”按扭,完成配置操作。

说明:由于实验室机器加有保护卡,因此每次重新启动机器,使用ORACLE时,都必须按上述步骤配置服务名(Service Name)。

二. 用户管理

1.建立用户:

以数据库管理员身份登录Oracle系统(参见 < 四. 登录Oracle >)

按UserName=DXP,PassWord=DXP,Service=ORA5,登录Oracle系统后,输入命令:

CREATE USER Uxxxxxxxx IDENTIFIED BY Kxxxxxxxx

DEFAULT TABLESPACE DXPDATASPACE

TEMPORARY TABLESPACE DXPTEMPSPACE;

注意:①Uxxxxxxxx,用户名;Kxxxxxxxx,口令,是以字母打头的字母数字字符串。

②ORA5为服务名,即是你所创建的服务名。

2.用户授权。输入命令:

GRANT CONNECT,RESOURCE TO Uxxxxxxxx;

退出Oracle(参见 < 四. 退出Oracle>)。再以新建的用户帐号(用户名和密码)重新登录Oracle。3.修改用户密码。

进入Oracle系统后,可以随时修改自己帐户的密码。

ALTER USER Uxxxxxxxx IDENTIFIED BY 新口令;

三. 登录Oracle

方法一:

(1) 在MS-DOS提示符下,执行SQL *PLUS命令

C:> SQLPLUS [RETURN]

SQL *PLUS 将显示它的版本号、日期和版权信息,并提示你输入用户名。

(2) 按提示要求输入用户名后按[RETURN],SQL *PLUS提示你输入口令。

(3) 如果口令输入正确,SQL *PLUS将宣布你已经与ORACLE连接上了,然后提示:

连接到:

Oracle8 Release 8.0.5.0.0 – Production

PL/SQL Release 8.0.5.0.0 - Production

SQL>

说明现在你已经进入SQL *PLUS中,并等待你的指示。如下图所示:

输入用户名:U99094180

输入口令:K99094180

SQL提示符

另外,在进入SQL *PLUS时,也可以在命令行上直接输入用户名和口令,中间以“/”分隔。

方法二:

(1) 选择 Windows95&98 开始 -> 程序 -> Oracle for Windows95 -> SQL PLUS 8.0

出现Oracle登录窗口。

(2) 按提示要求输入: Username:Uxxxxxxxx

Password: Kxxxxxxxx

Service: ORA5

其中:Uxxxxxxxx,Kxxxxxxxx,ORA5同前说明。

例如:某一学生学号为99094180,则其用户名为 U99094180,口令为K99094180,数据库别名设为ORA6。

(3) 按 [确定] 按钮。如果输入正确,SQL *PLUS 将显示它的版本号、日期和版权信息以及已与ORACLE 连接上的信息,然后显示:

连接到:

Oracle8 Release 8.0.5.0.0 - Production

PL/SQL Release 8.0.5.0.0 - Production

SQL> SQL 提示符

说明现在你已经进入SQL *PLUS中,并等待你的指示。

注意:在方法一或方法二中,如果口令输入不正确,系统提示出错信息,并要求你重新输入。在向ORACLE三次注册失败后,屏幕上将出现终止服务信息,并退出SQL *PLUS。

四. 退出Oracle

当想停止工作并离开SQL *PLUS,则可以在SQL *PLUS命令提示符下输入EXIT或QUIT命令。

SQL> EXIT [RETURN] 或 SQL> QUIT [RETURN]

五. 提示信息

1. 建议使用方法二登录ORACLE。在此方式下,SQL *PLUS有一种缓冲区编辑器,可以用来在SQL >提示符下交互式地输入命令和修改命令。

(1) 在SQL>提示符下,可直接进行拷贝和粘贴操作。

(2) 在SQL>提示符下,可直接对命令缓冲区内容进行编辑。

SQL> ED[RETURN]

出现缓冲区编辑器窗口,自动显示刚刚执行的命令语句。修改编辑,保存退出,返回SQL> 命令提示符状态。

SQL>/[RETURN]

自动执行缓冲区编辑器中的命令语句。

2. 一个事务从执行一条SQL更新语句(INSERT、UPDATE、DELETE)开始,当出现如下任一情况时,就结束该事务:

●执行COMMIT或ROLLBACK命令(这是一种显式划分事务的方式);

●发出DDL命令(如执行CREATE TABLE 命令等);

●LOGOFF;

●程序异常结束。

如果在SQL *PLUS中没有上述四种情况,当退出系统时,系统会自动提交最后一个事务。

3. 查询本用户账号下的所有数据库表的名称:

SELECT * FROM TAB;

4. 查看一个数据库表的表结构:

DESC 表名;

5. ORACLE常用的数据类型:

利用ORACLE提供的日期掩码格式,可按需要显示日期与时间。例如显示系统日期或显示系统日期、时间:

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL;

或SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH:MM:SS') FROM DUAL;

6. 几个常用的ORACLE函数

(1) LTRIM()、RTRIM()、TRIM():去除前导、后缀的空格或字符。

(2) UPPER()、LOWER():字符大小写转换。

(3) SUBSTR(str,m,n):截取子串。其中,str:字符串;m:开始位置;n:长度。

7. 在Oracle中,可以使用SET AUTOCOMMIT命令来设置事务自动提交环境。一旦设置了自动提交,则在每个SQL操作INSERT、UPDATE或DELETE语句之后,系统就自动进行了提交。一般情况下,最好不要使用自动提交方式。

设置自动提交的语句格式:

SET AUTOCOMMIT IMMEDIATE;

SET AUTOCOMMIT ON;

设置非自动提交的语句格式: SET AUTOCOMMIT OFF;

Oracle 以非自动提交方式为缺省方式。

8. 查询其他用户的数据(必须为授权的用户),应在表名前增加用户名作为限定词。格式为:

用户名.表名

9. 查询本用户所有表上的完整性约束名称。

SELECT Constraint_name, Constraint_type, Table_name, R_constraint_name

FROM User_constraints;

10. 查询本用户所有表上的非空约束和CHECK 约束条件。 SELECT Constraint_name, Search_condition FROM User_constraints;

11.查询本用户所有表上定义的完整性约束的约束列名

SELECT Constraint_name, Table_name, Column_name FROM User_cons_columns;

六. 教学管理数据库设计 各表的数据结构和数据如下:

1. 学生情况表 Student

IS :信息系

CS :计算机系 MA :数学系

主关键字:SNO 非空字段:SNAME,SDEPT,SCLASS

2.课程名称表Course 3.教师授课表Teach

主关键字:CNO 候选关键字:CNAME 主关键字:TNAME,CNO,TDEPT 参照关系:Course(CNO)

4.成绩表 Score

主关键字:SNO,CNO 参照关系:Student(SNO),Course(CNO)

七. SQL语句

1. SQL数据定义语句:

例1-1: (建立数据库表) 建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2)字段,Sname 字段为Sname(C,8)且可为空。

例1-2: (修改数据库表) 在Student表中增加SSEX(C,2)字段。

例1-3: (修改数据库表) 将Student表中把Sname字段修改为Sname(C,10)且为非空。

例1-4: (建立索引) 为Score表按学号升序和课程号降序分别建立索引,索引名分别为SC_NDXSNO 和SC_NDXCNO。为Score表按分数降序建立索引,索引名为GRADE_NDX。

例1-5: (删除索引) 删除索引SC_NDX_SNO。

例1-6: (建立数据库表) 建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student 表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。

例1-7: (修改数据库表) 删除成绩表Score的参照完整性约束关系。

例1-8: (修改数据库表) 添加成绩表Score的参照完整性约束关系。

2. SQL数据操纵语句:

例2-1: (插入数据) 按前面各表中的数据分别插入到教学数据库的四个数据库表中。

例2-2:(多行插入) 将表Student中在计算机系(‘CS’)的学生数据插入到表S1中。

例2-3:(利用查询来实现表的定义与数据插入) 求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。

例2-4: (修改数据) 将S1表中所有学生的年龄加2。

例2-5: (修改数据) 将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。

例2-6: (插入数据) 向Score表中插入数据(‘98001’, ‘001’, 95),根据返回信息解释其原因。

例2-7: (插入数据) 向Score表中插入数据(‘97001’, ‘010’, 80),根据返回信息解释其原因。

例2-8: (删除数据) 删除Score表中学号为‘96001’的成绩信息,根据返回信息解释其原因。

例2-9: (删除数据) 删除Score表中课程号为‘003’的成绩信息,根据返回信息解释其原因。

例2-10: (删除数据) 删除学生表S1中学号以96打头的学生信息。

例2-11: (删除数据) 删除数据库表S1中所有学生的数据。

例2-12:(删除表) 删除数据库表S1和Student_Gr。

3. SQL数据查询语句:

例3-1: (选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

例3-2: (不选择重复行) 求选修了课程的学生学号。

例3-3: (选择表中的所有列) 求全体学生的详细信息。

例3-4: (使用表达式) 求全体学生的学号、姓名和出生年份。

例3-5: (使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。

例3-6: (比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

例3-7: (比较大小条件) 求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。

例3-8: (确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

例3-9: (确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

例3-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

例3-11:(确定集合条件) 求不是数学系、计算机系的学生信息。

例3-12:(匹配查询) 求姓名是以“李”打头的学生。

例3-13:(匹配查询) 求姓名中含有“志”的学生。

例3-14:(匹配查询) 求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。

例3-15:(匹配查询) 求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、

课程号和成绩。

例3-16:(涉及空值查询) 求缺少学习成绩的学生的学号和课程号。

例3-17:(控制行的显示顺序) 求选修003课程或004课程的学生的学号、课程号和分数。

例3-18:(组函数) 求学生总人数。

例3-19:(组函数) 求选修了课程的学生人数。

例3-20:(组函数) 求计算机系学生的平均年龄。

例3-21:(组函数) 求选修了课程001的最高、最低与平均成绩。

例3-22:(分组查询) 求各门课程的平均成绩与总成绩。

例3-23:(分组查询) 求各系、各班级的人数和平均年龄。

例3-24:(分组查询) 输入以下查询语句并执行,观察出现的其结果并分析其原因。

SELECT SNAME,SDEPT,COUNT(*)FROM STUDENT WHERE SDEPT=’CS’ GROUP BY SDEPT;

例3-25:(分组查询) 分析以下语句为什么会出现错误。并给出正确的查询语句。

SELECT SAGE FROM STUDENT GROUP BY SNO;

例3-26:(分组查询) 求学生人数不足3人的系及其相应的学生数。

例3-27:(分组查询) 求各系中除01班之外的各班的学生人数。

例3-28:(涉及空值的查询) 分别观察各组函数、行的显示顺序以及分组查询与空值的关系。

例3-29:(自然连接查询) 求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO

字段。

例3-30:(连接查询) 求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课

程名称和成绩。

例3-31:(连接查询与表的别名) 求选修了课程的学生的学生姓名、课程号和成绩。

例3-32:(自身连接查询) 求年龄大于’李丽’的所有学生的姓名、系和年龄。

例3-33:(外部连接查询) 求选修了课程002或003的学生的学号、课程号、课程名和成绩。

例3-34:(子查询) 求与‘李丽’年龄相同的学生的姓名和系。

例3-35:(子查询) 求选修了课程名为’数据结构’的学生的学号和姓名。

例3-36:(子查询ANY) 求比数学系中某一学生年龄大的学生的姓名和系。

例3-37:(子查询ALL) 求比数学系中全体学生年龄大的学生的姓名和系。

例3-38:(子查询EXISTS) 求选修了课程004的学生的姓名和系。

例3-39:(返回多列的子查询) 求与‘李丽’同系且同龄的学生的姓名和系。

例3-40:(多个子查询) 求与‘李丽’同系,且年龄大于‘黎明’的学生的信息。

例3-41:(子查询中使用表连接) 求数学系中年龄相同的学生的姓名和年龄。

例3-42:(连接或嵌套查询) 检索至少选修王成刚老师所授课程中一门课程的女学生姓名。

数据库实验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表结构 表2. Course表结构

表3. SC表结构 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)创建员工表Employee

数据库系统概论(王珊第五版)数据库实验1

实验1 SQL SERVER 2008环境 一、实验目的 1.掌握服务管理器的启动和停止方法; 2.掌握SQL Server Management Studio对象资源管理器的使用方法; 3.掌握注册服务器的步骤。 4.掌握E-R图在计算机中的画法。 二、实验学时 2学时 三、实验要求 1.了解SQL Server 2008的安装过程。 2.熟练掌握SQL Server2008数据库服务器的启动方法。 3.熟练掌握SQL Server2008数据库服务器的登录方法和注册方法。 4.掌握E-R图的画法,学会使用Visio画出标准的E-R图。 5.独立完成实验内容,并提交书面实验报告。 四、实验内容 1.了解并熟悉SQL Server 2008的安装方法。 2.登录SQL Server 2008服务器,主要包括启动、暂停、停止和重新启动服务器,登录SQL Server Management Studio等操作; 3. 掌握SQL Server Management Studio对象资源管理器的使用方法; 4.注册SQL Server 2008服务器。 5. 有一个图书管理系统需要构建E-R图,要求如下: (1)可随时查询书库中现有书籍的品种、数量与存放位置。所有各类书籍均可由书号唯一标识。 (2)可随时查询书籍借还情况,包括借书人单位、姓名、借书证号、借书日期和还书日期。约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具有唯一性。 (3)当需要时,可通过数据库中保存的出版社的电报编号、电话、邮编及地址等信息向相应出版社增购有关书籍。约定,一个出版社可出版多种书籍,同一本书仅为一个出版社出版,出版社名具有唯一性。 将有关实体型及其联系画出E-R模型图画在实验报告册中。

数据库SQL查询例题及解答

1 实验目的 1.熟悉数据库的交互式SQL工具。 2.熟悉通过SQL对数据库进行操作。 3.完成作业的上机练习。 2 实验工具sql server 利用Sql server及其交互式查询工具-查询分析器来熟悉SQL。 3 实验内容和要求 1)实验内容: 创建数据库boat,包括Sailors,Boats,Reserves三个表,表结构如下: Sailors(sid: integer, sname: string, rating: integer, age: real) 船员(船员编号,姓名,级别,年龄) Boats(bid: integer, bname: string, color: string) 船(船编号,名称,颜色) Reserves(sid: integer, bid: integer, day: date) 租赁(船员编号,船编号,日期) (注:下划线表示主键),并插入一定数据。 2)完成下列要求:

(1)查询所有船员的信息 (2)查询所有姓王的船员的信息 (3)查询租用过103号船的船员姓名 (4)查找租用过船只的船员编号 (5)查找rating>7且年龄>25的水手编号 (6)查找租用过红船和绿船的水手名字 (7)查找租用过红船或绿船的水手编号 (8)查找最年长的水手的年龄和名字 (9)在18岁以上水手中,对于每个rating级别中最少有两个水手以上的组中最年轻水手的年龄 (10)查找每条红色船只被租用的次数 (11)把30岁以上船员的级别调高一级 (12)删除所有年龄超过40岁的船员信息 (13)建立年龄超过25岁的船员的视图 (14)对(13)建立的视图,举一操作的例子(查询、删除、修改均可) 2)要求: a.建立boat数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 b.记录完成查询要求的SQL语句脚本。 c.记录完成查询的查询结果。

福建工程学院《实验指导书(数据库系统原理及应用)》

数据库系统原理 实验指导书 (本科)

目录 实验一数据定义语言 (1) 实验二SQL Sever中的单表查询 (3) 实验三SQL Serve中的连接查询 (4) 实验四SQL Serve的数据更新、视图 (5) 实验五数据控制(完整性与安全性) (7) 实验六语法元素与流程控制 (9) 实验七存储过程与用户自定义函数 (11) 实验八触发器 (12)

实验一数据定义语言 一、实验目的 1.熟悉SQL Server2000/2005查询分析器。 2.掌握SQL语言的DDL语言,在SQL Server2000/2005环境下采用Transact-SQL实现表 的定义、删除与修改,掌握索引的建立与删除方法。 3.掌握SQL Server2000/2005实现完整性的六种约束。 二、实验内容 1.启动SQL Server2000/2005查询分析器,并连接服务器。 2.创建数据库: (请先在D盘下创建DB文件夹) 1)在SQL Server2000中建立一个StuDB数据库: 有一个数据文件:逻辑名为StuData,文件名为“d:\db\S tuDat.mdf”,文件初始大小为5MB,文件的最大大小不受限制,文件的增长率为2MB; 有一个日志文件,逻辑名为StuLog,文件名为“d:\db\StuLog.ldf”,文件初始大小为5MB,文件的最大大小为10MB,文件的增长率为10% 2)刷新管理器查看是否创建成功,右击StuDB查看它的属性。 3.设置StuDB为当前数据库。 4.在StuDB数据库中作如下操作: 设有如下关系表S:S(CLASS,SNO, NAME, SEX, AGE), 其中:CLASS为班号,char(5) ;SNO为座号,char(2);NAME为姓名,char(10),设姓名的取值唯一;SEX为性别,char(2) ;AGE为年龄,int,表中主码为班号+座号。 写出实现下列功能的SQL语句。 (1)创建表S; (2)刷新管理器查看表是否创建成功; (3)右击表S插入3个记录:95031班25号李明,男性,21岁; 95101班10号王丽,女性,20岁; 95031班座号为30,名为郑和的学生记录; (4)将年龄的数据类型改为smallint; (5)向S表添加“入学时间(comedate)”列,其数据类型为日期型(datetime); (6)对表S,按年龄降序建索引(索引名为inxage); (7)删除S表的inxage索引; (8)删除S表; 5.在StuDB数据库中, (1)按照《数据库系统概论》(第四版)P82页的学生-课程数据库创建STUDENT、COURSE 和SC三张表,每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。 并输入相关数据。 (2)将StuDB数据库分离,在D盘下创建DB文件夹下找到StuDB数据库的两个文件,进行备份,后面的实验要用到这个数据库。 6.(课外)按照《数据库系统概论》(第四版)P74页习题5的SPJ数据库。创建SPJ数据 库,并在其中创建S、P、J和SPJ四张表。每一张表都必须有主码约束,合理使用列级完整性约束和表级完整性。要作好备份以便后面的实验使用该数据库数据。 三、实验要求:

数据库SQL实验题目

实验一数据定义操作 实验目的 1.掌握数据库和表的基础知识 2.掌握使用创建数据库和表的方法 3.掌握数据库和表的修改、查看、删除等基本操作方法 实验内容和要求 一、数据库的创建 在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示: Grademanager数据库参数表 参数参数值参数参数值 存储的数据文件路 径 D:\db\ 存储的日志文件路径D:\db\ 数据文件初始大小5MB 日志文件初始大小2MB 数据文件最大值20MB 日志文件最大值15MB 数据文件增长量原来10% 日志文件增长量2MB 二、表的创建、查看、修改和删除 1.表的创建 在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:(1)Student表的表结构 字段名称数据类型长度精度小数位数是否允许 Null值 说明 Sno Char 10 0 0 否学号,主码 Sname Varchar 8 0 0 是姓名 Ssex Char 2 0 0 是性别,取值:男或女 Sbirthday Date 8 0 0 是出生日期 Sdept Char 16 0 0 是系名 Speciality Varchar 20 0 0 是专业名 特别注意: 为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK 约束”命令,然后按照图1进行设置。

图1 设置性别的约束 (2)Course表(课程名称表)的表结构 字段名称数据类型长度精度小数位数是否允许Null值说明 Cno Char 5 0 0 否课程号,主码Cname Varchar 20 0 0 否课程名 (3)SC表(成绩表)的表结构 字段名称数据类 型 长 度 精 度 小数位 数 是否允许Null值说明 Sno Char 10 0 0 否学号,外码 Cno Char 5 0 0 否课程号,外码 Degree Decimal 5 5 1 是成绩,0~100之间 特别注意: ①为属性Degree 约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为Degree>=1 And Degree<=100 ②为SC表设置外键Sno和Cno的方法: 右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。

数据库实验1-6参考答案

实验一SQL Server使用初步 一、实验目的 1、熟悉SQL Server2000的组成及基本功能。 2、掌握SQL Server2000的登录及注册。 3、掌握SQL Server2000企业管理器的使用方法。 4、熟悉查询分析器的基本使用。 二、实验预习 1、什么是数据库管理系统DBMS?你所知道的DBMS有哪些? 答:DBMS是位于用户和操作系统之间的一层数据管理软件。常见的DBMS主要有:Oracle、db2、SQL Server、MySQL、PostgreSQL、SQLite、Firebird等等。 2、SQL Server 2000(2005)的安装步骤? 答:以企业版安装为例,步骤为: 将企业版安装光盘插入光驱后,出现以下提示框。请选择“安装 SQL Server 2000 组件” 出现下面对话框后,选择 "安装数据库服务器" 。 选择 "下一步",然后选择 "本地计算机" 进行安装。 在 "安装选择" 窗口,选择 "创建新的SQL Server实例..."。对于初次安装的用户,应选用这一安装模式,不需要使用 "高级选项" 进行安装。 "高级选项" 中的内容均可在安装完成后进行调整。 在 "用户信息" 窗口,输入用户信息,并接受软件许可证协议。 在“安装定义”窗口,选择“服务器和客户端工具”选项进行安装。 在“实例名”窗口,选择“默认”的实例名称。 在“安装类型”窗口,选择“典型”安装选项,并指定“目的文件夹”。 在 "服务账号" 窗口,请选择 "对每个服务使用统一账户..." 的选项。 在 "身份验证模式" 窗口,选择 "混合模式..." 选项,并设置管理员"sa"账号的密码。 最后按“下一步”即可完成安装。 检测安装:如果安装成功,应该能成功启动SQL Server,并且能和SQL Server 客户端连接上。 可以通过服务管理器来进行启动。

数据库实验题目和答案

按照如下方式重新定义四张表: 定义新的books表,其所拥有的属性与属性类型与原有的books表一致 以列级完整性的方式定义属性bookId为主码,同时在定义的时候必须提供约束名 定义属性category为”非空” ,同时在定义的时候必须提供约束名 create table Books( bookId number(9,0) constraint BooksKey primary key, title varchar(80), author varchar(40), year integer, category varchar(15) constraint B1 not null ); commit; 定义新的customers表,其所拥有的属性与属性类型与原有的customers表一致 以表级完整性的方式定义属性cid为主码 以列级完整性的方式定义属性cname为”唯一”,同时在定义的时候必须提供约束名 create table Customers ( cid number(9,0), cname char(40) constraint C1 unique, age integer, primary key(cid) ); commit; 定义新的purchases表,其所拥有的属性与属性类型与原有的purchases表一致 定义属性cid与bookId为主码,同时在定义的时候必须提供约束名 以列级完整性的方式定义属性bookId为外码,它参照Books表的主码,同时在定义的时候必须提供约束名。当删除Books表中的某一本书时,级联删 除与它相关的购买记录 以表级完整性的方式定义属性cid为外码,它参照customers表,同时在定义的时候必须提供约束名。当删除customers表中的某个顾客时,如果存在 与该客户相关的购买记录,拒绝删除。 create table Purchases( cid number(9,0), bookId number(9,0)

数据库系统概论实验指导(第六版)

数据库系统概论实验指导 (第六版) 计算机学院 2010/09

改版履历

目录 目录 (3) 1.实验概要 (4) 1.1.实验说明 (4) 1.2.实验环境和配置 (4) 1.3.上机要求 (4) 2.实验1:数据库/表的基本操作和表级约束 (5) 2.1.目的和要求 (5) 2.2.实验准备 (5) 2.3.实验内容 (5) 3.实验2:库级约束和基本表的数据操作 (8) 3.1.目的和要求 (8) 3.2.实验准备 (8) 3.3.实验内容 (8) 4.实验3:视图操作和安全性控制 (10) 4.1.目的和要求 (10) 4.2.实验准备 (10) 4.3.实验内容 (10) 5.实验4:存储过程/触发器/ODBC数据库编程 (12) 5.1.目的与要求 (12) 5.2.实验准备 (12) 5.3.实验内容 (12) 6.实验5:数据库综合实验 (14) 6.1.目的与要求 (14) 6.2.实验准备 (14) 6.3.实验内容 (14) 5.3.1.题目一:零件交易中心管理系统 (15) 5.3.2.题目二:图书管理系统 (15) 5.3.3.题目三:民航订票管理系统 (15) 5.3.4.题目四:学生学籍管理系统 (15) 5.3.5.题目五:车站售票管理系统 (16) 5.3.6.题目六:企业人事管理系统 (16) 5.3.7.题目七:电话交费管理系统 (16) 5.3.8.题目八:医药销售管理系统 (16) 7.附录:实验报告格式 (17)

1.实验概要 1.1.实验说明 内容:本课程实验分5次完成,每次完成一部分。具体内容参考本指导的后半部分。 成绩:每次实验100分,最后取所有实验的平均分作为实验的总成绩。评分标准如下: 上述每一项按照百分制给出分值,最后按照比率计算每次实验的最终成绩。 实验报告 每次实验需提交电子版的实验报告(最后一次实验需提交设计文档,源程序等相关资料)。每次实验结束时,将写好的实验报告,提交给各班辅导老师。如果确有困难没有完成的情况下,课后自己完成之后提交到辅导老师的邮箱里。由辅导老师根据课堂上机实验检查状况和实验报告的内容给出每次实验的成绩。 实验报告的内容包括:实验内容、实验步骤、程序源码、运行结果(可以是程序的输出,也可以是运行画面的抓屏,抓屏图片要尽可能的小,否则文件太大)。每份实验报告是一个WORD文档。实验报告命名规则如下:DBx(实验次数)_XXXXXX(学号)_姓名例如:052978的学生的第一次实验报告文件名: DB1_052978_李宁注意:请每个人保存好自己的实验报告的电子版,直到该门课考试成绩公布之后。 1.2.实验环境和配置 SQL Server 2008(Microsoft SQL Server 2008 Express With Advance Service) 1.3.上机要求 ●上机之前,请做好预习,需要写一个简单的预习报告,格式不限。 ●严格遵守实验室的各项规定。

数据库实验一

实验一基本表的定义、删除与修改 一、实验目的: 熟练掌握基本表的定义、删除与修改,为后继学习作准备。 二、实验属性(验证性) (1)了解并掌握SQL SERVER 2005管理控制器的使用; (2)掌握基本表的定义、删除与修改。 三、实验仪器环境与要求 1.每人一台计算机。 2.计算机安装有SQL SERVER2005。 四、实验要求(预习、实验前、实验中、实验后等要求) 1.预习教材第三章,熟悉SQL语句。 2.熟悉SQL SERVER 2005,能使用管理控制器的使用。 3.能够熟练使用SQL语句进行表的创建、删除与修改。 五、实验原理 SQL语言基本应用。 六、实验步骤: (1)启动SQL SERVER 2005。 (2)启动SQL SERVER 2005查询分析器; (3) 创建数据库; (5) 创建如下表: 1 定义基本表 1.1、学生表Student,每个属性名的意义为Sno-学号字符型长度为10、Sname-姓名字符型长度为20、Ssex-性别字符型长度为4、Sage-年龄为整型、Sdept-所在系字符型长度为15。这里要求Sno为主码,Sname不能为空值,且取值唯一。 create table student (Sno char(10) primary key, Sname char(20) unique, Ssex char(4), Sage smallint, Sdept char(15) );

1.2、建立表课程表Course,其属性名意义分别为Cno-课程号、字符型长度为15, Cname-课程名、字符型长度为20, Pre_Cno-先修课程号、字符型长度为15, Credits-学分、整型。Cno 为主码。 create table course (Cno char(15) primary key, Cname char(20), Pre_Cno char(15) references course(Cno), Ccredit smallint, ); 1.3选课表SC。其中的属性名意义分别为Sno-学号、字符型长度为10,Cno-课程号、 字符型长度为15和Grade-考试成绩、整型。Sno和Cno为主码。 create table sc ( Sno char(10) references student(Sno), Cno char(15) references course(Cno), Grade smallint, primary key (Sno, Cno), )

数据库实验五题目答案

实验五 实验5.1 数据查询 1)要求 以School数据库为例,在该数据库中存在四表格,分别为: ●表STUDENTS(sid, sname, email, grade); ●表TEACHERS(tid, tname, email, salary); ●表COURSES(cid, cname, hour); ●表CHOICES(no, sid, tid, cid, score) 在数据库中,存在这样的关系:学生可以选择课程,一个课程对应一个教师。在表CHOICES中保存学生的选课记录。 按以下要求对数据库进行查询操作: (1)查询年级为2001的所有学生的名称并按编号升序排列。 程序:Select sname from students where grade='2001' order by sid asc; (2)查询学生的选课成绩合格的课程成绩。 程序:Select score from choices where score>'59';

(3)查询课时是48或60的课程的名称。 程序:select cname from courses where hour='48'or hour='60'; (4)查询所有课程名称中含有data的课程编号。 程序:select cid from courses where cname like'%data%';

(5)查询所有选课记录的课程号(不重复显示)。 程序:select distinct cid from choices; (6)统计所有教师的平均工资。 程序:select avg(salary) from teachers;

数据库试验答案

计算机与信息学院 数据库实验报告 专业班级 学生姓名及学号 课程教学班号 任课教师 实验指导教师 实验地点 2012 ~2013 学年第二学期

实验1 使用向导创建和删除数据库 一、实验目的 1.熟悉SQL Server 中SQL Server Management Studio的环境 2.了解SQL Server 数据库的逻辑结构和物理结构 3.掌握使用向导创建和删除数据库的方法 二、实验要求 1.熟练使用SSMS进行数据库的创建和删除操作。 2.完成实验报告。 三、实验内容 设有一学籍管理系统,其数据库名为“EDUC”。 初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长; 日志文件初始为2MB,最大可增长到5MB,按1MB增长。 数据库的逻辑文件名为“student_data”, 物理文件名为“student_data.mdf,存放路径为“E:\sql_data”。 日志文件的逻辑文件名为“student_log”, 物理文件名为“student_log.ldf”,存放路径为“E:\sql_data”。 四、实验步骤

1.使用SQL Server Management Studio(简称SSMS)创建数据库。 (1)启动SSMS 在开始菜单中:所有程序-SQL Server 2005 -SQL Server Management Studio单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。如果身份验证选择的是“混合模式”,则要输入sa的密码。 (2)建立数据库 在“对象资源管理器”窗口,建立上述数据库EDUC。在数据库节点上右击选择新建。同时建立一个同样属性的数据库EDUC1。

数据库系统概论实验设计答案

数据库系统概论实验设计答案

数据库系统概论 实验报告册 姓名: momo 学号: 教师:

实验一需求分析(一)——业务流程调查 一、实验目的:掌握需求分析的步骤和业务流程调查的方法;掌握应用Powerbuilder绘制BPM模型 二、学时:6H(课内4H,课外2H) 三、实验软件平台:Windows 2k或Windows XP, Powerduilder9.5,Visio 四、实验内容:根据该VCD连锁店的业务需求调查文字,利用PD绘制该VCD连锁店管理系统的BPM模型。 五、实验结果: 出售租借:根据购买人或租借人提供的VCD租借单,查阅库存,如果有,则办理销售或租借并登记销售或租借流水帐;如果没有相应的VCD,则可根据购买人或租借人的要求办理预约登记,当有VCD时,及时通知购买人或租借人。

归还:根据租借人提供的所还VCD,检查VCD是否完好,如果完好,则办理归还登记,如果有损坏的VCD,办理赔偿登记。并把赔偿通知单通知给租借人。

逾期罚款通知:查询逾期未还的VCD,及时通知租借人,并进行相应的罚款登记。 六、思考题 1、数据库设计为什么需要进行详细的需求分析?

答:需求分析简单地说就是分析用户的要求。需求分析是设计数据库的起点,需求分析的结果是不是准确的反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是不是合理使用情况。 2、需求分析的目标是什么?其调查步骤是什么?常用的调查方法有哪些? 答:(1)需求分析的目标: 1.通过详细调查现实世界要处理的对象,充分了解 原系统(手工系统或计算机系统)工作概况,明 确用户的各种需求。 2.在此基础上确定新系统的功能。新系统必须充分 考虑今后可能的扩充和改变,不能仅仅按当前应 用需求来设计数据库。 (2) 调查步骤: 1. 了解组织机构。 2. 调查部门的数据输入、处理、输出。(调 查重点之一) 3. 在熟悉业务活动的基础上,协助用户 明确对新系统的各种要求。(调查重点之二) 4. 确定新系统的边界 (3)常用的调查方法: ⑴跟班作业

《数据库及SQL Server》项目实训题

《数据库及SQL Server》项目实训题 一、学生成绩管理系统数据库 要求: 1、设计并创建数据库( ),保存与学生及成绩有关的信息,包括:学生基本信息,课程基本信息,学生成绩信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入学号统计并显示该生成绩信息,包括总分、平均分、不及格门数等。 3、创建存储过程( ),根据输入课程名称统计并显示该课程的考试信息,包括考试人数、最高分、最低分、平均成绩等。 4、创建函数( ),根据学号与课程名得出该生该门课的名次。 二、图书管理系统数据库 要求: 1、设计并创建数据库( ),保存与图书管理有关信息,包括:图书信息,读者信息,借阅信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入读者号查询统计该读者的借阅信息,包括总借本数、未还本数、未还书的图书信息与借阅日期等。 3、创建存储过程( ),根据输入书号查询该图书的借阅信息,包括借阅者信息与借还日期,并统计该书的借阅人次数、总借阅天数等。 4、创建触发器( ),当借书(添加借阅记录)时,查询该书就是否借出未还,如已借出则不能添加借阅记录,如未借出则正常添加。(提示:可创建替代触发器) 三、职工工资系统数据库 已知某公司工资计算方法为: 实发工资=级别工资+(本月加班天数-缺勤天数)/本月全勤天数×级别工资 如:张明的级别为部长,部长工资就是5000元,2014年11月全勤天数为20天,张明加班2天,缺勤1天,则张明2014年11月的工资就是:5000+(2-1)/20*5000=5250元 要求: 1、设计并创建数据库( ),用于保存与职工工资有关的信息,设置各表的完整性约束条件 (如主键、外键等)。录入职工基本信息、级别工资信息、每月的职工加班天数与缺勤天数。 2、创建视图( ),包括以下信息:年月、职工工号、姓名、级别、加班天数、缺勤天数、实 发工资。试设计各种条件查询该视图。 3、创建函数( ),根据年月与职工工号计算出该职工该月的工资。 4、创建存储过程( ),根据输入的年月计算出该月所有职工的工资,保存并显示。(参考提示:先得到该月全勤天数) 四、超市售货系统数据库 要求: 1、一连锁超市拥有若干分部,设计并创建数据库( ),保存与超市售货有关信息,包括:各分部超市的基本信息,商品信息,每天的销售信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建函数( ),根据年月、超市编号、商品号计算出该商品在该超市当月的销售总金额。 3、创建存储过程( ),根据输入年月统计当月销售量排在前五位的商品及销售数量。 4、创建存储过程( ),根据输入年月统计当月销售金额排在前5%的超市信息及销售总金额。(提示:可创建临时表存放中间数据,用完删除)

数据库实验1认识数据库管理系统

《数据库技术》 实验指导书徐州师范大学计算机科学与技术学院

实验一使用数据库管理系统(2学时) 【实验目的】 1.掌握服务管理器的启动和停止方法; 2.掌握注册服务器的步骤; 3.掌握在SQL Server 2008中创建和编辑数据库; 4.掌握备份、附加和分离数据库的方法 【实验要求】 1.熟练掌握SQL Server2008数据库服务器服务启动和注册方法; 2.熟练使用Management Studio界面方式创建及编辑数据库; 3.熟练进行数据库备份、分离附加操作; 4.独立完成实验内容,并提交书面实验报告。 【实验内容】 1. 管理SQL Server 2008服务器,主要包括启动、暂停、停止和重新启动等操作; 2. 注册SQL Server 2008服务器。 3. 使用SQL Server 2008对象资源管理器和SQL语句(新建查询)两种方法,完成学生管理系统数据库的创建,修改数据库属性。 (1)创建一个数据库,要求如下。 ●数据库名“STUDENT”。 ●数据库中包含一个数据文件,逻辑文件名为student_data,磁盘文件名为 student_data.mdf,文件初始容量为10MB,最大容量为100MB,文件容量递增值为5%。 ●事务日志文件,逻辑文件名为student_log,磁盘文件名为student_log.ldf,文件初始 容量为5MB,最大容量为30MB,文件容量递增值为2MB。 (2)对该数据库做如下修改。 ●添加一个数据文件.逻辑文件名为student2_data,磁盘文件名为student2_data.ndf, 文件初始容量为5MB,最大容量为50MB,文件容量递增值为5MB。 ●将日志文件的最大容量增加为50MB.递增值改为3MB。 (3)将学生数据库更名为STU。 (4)备份STUDENT数据库。 (5)删除STUDENT数据库。 (6)还原STUDENT数据库。 4.附加给定的数据库文件并分离创建好的数据库文件。 【实验步骤】 1.管理SQL Server 2008服务器,主要包括启动、暂停、停止和重新启动等

同济大学数据库实验5答案

create proc procA as select* from student exec proca create proc procB @_year char(4) as select* from student where year(birthday )=@_year declare @_year char(4) set @_year ='1994' exec procB@_year create proc procf @_Snum char(30) as select s.snum ,avg(score)as平均成绩,count(https://www.wendangku.net/doc/255214894.html,um)as选秀门数,sum(1-score/60)as不及格门数 from student s,course c,sc,sections st where s.snum =sc.snum and sc.secnum =st.secnum and https://www.wendangku.net/doc/255214894.html,um =https://www.wendangku.net/doc/255214894.html,um and S.Snum =@_Snum group by S.Snum DECLARE @_SUNM char(30) set @_SUNM ='s001' exec procf@_sunm CREATE PROC Procd @_snum char(4),@_avg int out,@_selected_course int out,@_failed_course int out AS SELECT @_avg=AVG(score),@_selected_course=COUNT(cnum),@_failed_course=sum(1-score/60) FROM sc JOIN sections ON sc.secnum =sections.secnum WHERE snum=@_snum

数据库系统概论实验

10软件1班22号周超 实验八 一、实验内容 以SPJ数据库为例,完成以下要求 1、定义S、P、J、SPJ实体完整性 2、表间的参照完整性 3、用户定义完整性 二、实验过程 1、SQL定义各表 SQL: CREATE DATABASE SPJ ON(NAME='SPJ_DATA', FILENAME='E:\SPJ.mdf', SIZE=5MB, FILEGROWTH=10%) USE SPJ CREATE TABLE S (SNO CHAR(4)PRIMARY KEY, SNAME CHAR(20)UNIQUE, STATUS INT CHECK(STATUS>=10 AND STATUS<=50), CITY CHAR(20)NOT NULL); CREATE TABLE P (PNO CHAR(4)PRIMARY KEY, PNAME CHAR(20)NOT NULL, COLOR CHAR(10)NOT NULL, WEIGHT SMALLINT NOT NULL); CREATE TABLE J (JNO CHAR(4)PRIMARY KEY, JNAME CHAR(20)UNIQUE, CITY CHAR(20)NOT NULL); CREATE TABLE SPJ (SNO CHAR(4), PNO CHAR(4), JNO CHAR(4), QTY INT NOT NULL, PRIMARY KEY(SNO,PNO,JNO), FOREIGN KEY(SNO)REFERENCES S(SNO), FOREIGN KEY(PNO)REFERENCES P(PNO), FOREIGN KEY(JNO)REFERENCES J(JNO)); 附表:S表

数据库上机实验题目和答案

试用SQL的查询语句表达下列查询: 1.检索王丽同学所学课程的课程号和课程名。 select Cno ,Cname from c where Cno in (select cno from sc where sno in (select sno from s where sname='王丽' )) 2.检索年龄大于23岁的男学生的学号和姓名。 select sno,sname from s where sex='男' and age>23 3.检索‘c01’课程中一门课程的女学生姓名 select sname from s where sex='女' and sno in (select sno from sc where cno='c01') 4.检索s01同学不学的课程的课程号。 select cno from c where cno not in (select cno from sc where sno ='s01') 5.检索至少选修两门课程的学生学号。 select sc.sno from s,sc where s.sno=sc.sno group by sc.sno having count(https://www.wendangku.net/doc/255214894.html,o)>=2 6.每个学生选修的课程门数。 解法一: select so.sno sno,https://www.wendangku.net/doc/255214894.html,ount,s.sname from(select sc.sno sno,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno ) so,s where s.sno=so.sno 解法二: select sc.sno sno,s.sname,count(sc.sno) ccount from sc,s where s.sno=sc.sno group by sc.sno,sname

数据库系统概论实验报告

《数据库系统概论》实验报告触发器/ODBC编程存储过程题 目:实验三 / 日期学号姓名班级2007-10-14 郭智超 10010507 052626 . 实验内容和步骤结果一三建”。”更名为“在查询分析器中使用系统存储过程1.(sp_rename) 将视图“V_SPJV_SPJ_ (分)5create view V_SPJ 源程序:as select jno,sno from spj where jno='j2' ' exec sp_rename 'V_SPJ','V_SPJ_三建执行结果: 变为 45分)2.存储过程的创建与使用:(。表,创建一个带参数的存储过程—jsearch表、表、使用) SPJ数据库中的SP表、JSPJ1(该存储过程的作用是:当任意输入一个工程代号时,将返回供应 该工程零件的供应商的名(JNAME) 以及工程的名称(SNAME)称和零件的名称(PNAME)create procedure jsearch 源程序:@jno char(4) as select sname,pname,jname from spj,s,p,j where j.jno=@jno and spj.jno=j.jno 1 and spj.sno=s.sno and spj.pno=p.pno (2) 执行jsearch存储过程,查询“J1”对应的JNAME,SNAME和PNAME。 源程序:exec jsearch j1 执行结果:

(3)使用系统存储过程sp_helptext查看存储过程jsearch的文本信息。 源程序:sp_helptext jsearch 执行结果: (4)使用SPJ数据库中的S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执行该存储过程时,将返回北京供应商的所有信息。 源程序:create procedure jmsearch with encryption as select sno,sname,status,city from s where s.city='北京' (5)执行jmsearch存储过程,查看北京供应商的情况。 源程序:exec jmsearch. 执行结果: 2 jmsearch存储过程。(6)删除drop proc jmsearch 源程序:被删除。执行结果:jmsearch 40分)3.触发器的创建与使用:((1)在student数据库中建立一个名为insert_sdept的INSERT 触发器,存储在S表中。该触发器的作用是:当用户向S表中插入记录时,如果插入的sdept 值为'CS','IS','MA'以外的值,则提示用户“不能插入记录这样的纪录”,否则提示“记录插入成功”。触发器创建成功之后,在企业管理器中向S表插入记录,验证触发器是否正常工作。源程序: create trigger insert_sdept on s for insert

数据库实验习题

《数据库概论》实验指导书 (2003级) 一、实验目的: 数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。本实验是结合《数据库概论》课程的学习而开设的实验。本实验目的如下: 1. 通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力; 2. 通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置; 3. 学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力; 4. 加强对事务处理、权限管理等概念的认识和理解。 二、适应专业:信息管理与信息系统,信息与计算机科学 三、实验学时数:12学时 四、实验内容及学时安排: 实验准备: 各班选出10个同学,协助老师搭建试验环境。包括: 1)安装ORACLE客户端,配置与主机的数据库连接。 2)安装软件工具 PLSQL/DEVELOPER 3)负责本班用户的建立。 分为两批上午下午各两个班。 实验一:数据定义/数据操纵语言 实验目的:熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。 学时数:4学时 实验内容:SQL数据定义语句, SQL数据操纵语句。 实验要求:1. 熟悉Oracle上机环境; 2. 建立数据库表,修改数据库表结构,建立、删除索引;

3. 对数据库表进行插入、修改和删除数据的操作。 实验二:数据查询语言,视图定义 实验目的:体会SQL语言数据查询功能的丰富和复杂,视图使用。 学时数:4学时 实验内容:SQL数据查询语句,视图的定义与操纵; 实验要求:对数据库表进行各种查询操作,建立视图,视图查询,视图更新; 实验三:授权控制与事务处理 实验目的:通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。 学时数:2学时 实验内容: 1. SQL数据控制语句; 2. SQL事务处理。 实验要求: 1. 给某一或全部用户授权和收回授权; 2. 事务回退,事务提交。 五、教材及参考文献 1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社 2000.2 2.《ORACLE 8.x For Windows NT实用教程》翁正科等编著清华大学出版社 1998.10 六、实验环境 实验要求如下环境 服务器端:Windows 2000NT Server; ORACLE 8.x Database Server For Windows Windows2000 Server 客户端: Windows9x;Oracle 8.x Client 网络协议:TCP/IP 七、成绩考核 上机实验考核采取实验报告和上机抽查检验相结合的方式。每次实验结束后都必须写出实验报告。 八. 实验报告

相关文档