2023年6月21日发(作者:)

《数据库开发与应用》实验指导书

沈阳理工大学应用技术学院

2009年12月

目 录

实验一 数据库和表的操作.......................................................................................... 1

实验二 数据的操作.................................................................................................... 15

实验三 存储过程的操作............................................................................................ 18

实验四 触发器的使用................................................................................................ 20

实验五 数据库综合设计............................................................................................ 22

实验一 数据库和表的操作

实验目的:

1、 了解SQL SERVER数据库的逻辑结构和物理结构;

2、 掌握SQL SERVER数据库的文件组成;

3、 掌握SQL SERVER数据库中文件组的概念;

4、 了解表的结构和特点;

5、 了解SQL SERVER的基本数据类型;

6、 学会使用结构化查询语句创建和管理数据库和表;

实验内容:

1、 使用sql语句创建最简单的数据库;

2、 使用sql语句创建带条件的数据库,要指定数据文件和日志文件的名称、大小、最大限制和文件增长速度;

3、 为数据库改名;

4、 向数据库中填加、删除一个数据文件;

5、 向数据库中填加一个日志文件;

6、 修改数据库文件的属性:包括文件大小,最大限制,增长方式等;

7、 删除数据库;

8、 在数据库bookborrow中建立3个基本表,实现对表的管理。

具体实验内容:

1、 使用sql语句建立最简单的数据库sqlcourse;

2、 使用sql语句建立数据库school。

包含两个数据库文件和一个日志文件,其中主数据文件的逻辑名为“school_data”,初始大小为10MB, 最大大小为500MB,设置文件自动增长,增长方式为10%;辅助数据文件的逻辑名为“school_data2”,初1

始大小为2MB, 最大大小为30MB,设置文件自动增长,增长方式为5MB。日志文件的所有限制默认。

3、 为数据库sqlcourse更名为yangguang。school_Datayangguangalter

database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

2

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

3

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

4

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

5

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

6

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

7

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

4、 使用sql语句在数据库school中添加和删除一个数据文件。

(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照MB方式自动增长。

(2)删除数据文件“school_data2”。

5、 使用sql语句在数据库school中添加一个日志文件。

(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照百分计数方式自动增长。alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

8

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database sqlcourse

modify name=yangguang

yangguangschool_Datayangguangalter database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

9

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

10

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

11

maxsize=50mb,

filegrowth=5mb

)

6、 使用sql语句在数据库school中建立教师表t,学生表s,课程表c,选课表sc和授课表tc。

表1-1 t(教师)表结构

字段名

tno

tname

tsex

tage

tprof

tsal

tcomm

tdept

字段类型

varchar

varchar

varchar

smallint

varchar

smallint

smallint

varchar

字段宽度

8

10

4

2

10

2

2

20

说明

教师号(非空)

教师姓名(非空)

性别

年龄

职称

工资

岗位津贴

系名

表1-2 s(学生)表结构

字段名

sno

sname

ssex

sage

sdept

字段类型

varchar

varchar

varchar

smallint

varchar

字段宽度

8

10

4

2

20

说明

学号(非空)

学生姓名(非空)

性别

年龄

系名

表1-3 c(课程)表结构

字段名

cno

cname

ct

字段类型

varchar

varchar

smallint

表1-4 sc (选课)表结构

字段名

字段宽度

8

20

2

说明

课程号(非空)

课程名(非空)

课时数

字段类型 字段宽度

12

说明 sno

cno

score

varchar

varchar

smallint

表1-5 tc (授课)表结构

8

8

2

学号(非空)

课程号(非空)

成绩

字段名

tno

cno

字段类型

varchar

varchar

字段宽度

8

8

说明

教师号(非空)

课程号(非空)

7、 使用INSERT INTO语句插入数据

t表

tno

t1

t2

t3

t4

t5

tname

李力

王平

刘伟

张雪

张兰

tsex

tage

47

28

30

51

39

tprof

教授

讲师

讲师

教授

副教授

tsal

1800

850

1000

1900

1500

tcomm

3000

1200

1200

3000

3000

tdept

计算机

信息

计算机

自动化

信息

s表

sno

s1

s2

s3

s4

s5

s6

sname

赵亦

钱尔

孙姗

李思

周武

吴丽

ssex

sage

17

18

20

21

19

20

sdept

计算机

信息

信息

自动化

计算机

自动化

sc表

sno

s1

s1

s2

s2

s2

cno

c2

c5

c5

c6

c7

13

score

85

100

60

80

s3

s3

s4

s4

s5

c2

c4

c2

c3

c2

70

85

85

83

89

c表

cno

c1

c2

c3

c4

c5

c6

c7

cname

程序设计

微机原理

数字逻辑

数据结构

数据库

编译原理

操作系统

ct

60

80

60

80

60

60

60

tc表:

tno

t1

t2

t4

t5

t3

t3

t2

t4

t5

cno

c1

c5

c2

c5

c1

c5

c7

c3

c7

8、 分别建立5个基本表的主码,建立学生表与选课表,课程表与选课表之间的关系;

9、 限制选课表的成绩列输入的值在0到100之间。

14

10、

11、

设置性别的取值或者是‘男’或者是‘女’。

设置课程表中课程时数的初始值为0。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建和修改数据库和基本表的SQL语句。

4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验二 数据的操作

(查询,修改和删除)

实验目的:

1、 掌握指定列或全部列查询;

15

2、 掌握按条件查询;

3、 掌握对查询结果排序;

4、 掌握使用聚集函数的查询;

5、 掌握对查询结果分组;

6、 掌握涉及一个以上数据表的查询;

7、 掌握嵌套查询的方法,从而增强SQL的查询能力;

8、 掌握使用UNION操作符将来自不同查询但结构相同的数据集合组合起

来。

实验内容:

1、 完成数据表的创建过程。

2、 对于单个数据表实现多种不同条件的查询。

3、 对于多个表之间实现连接查询,主要包括2种外连接和 带有连接谓词的内连接。

4、 实现嵌套查询操作,同时练习嵌套查询和连接查询之间的互相转换。同时掌握自身连接的查询。

5、 实现集合查询的操作,掌握不同集合操作符的优先级。

具体实验内容:

1、 创建数据库表:(使用实验一的数据表及其数据)

教师表:T;

学生表:S;

课程表:C;

选课表:SC;

授课表:TC

2、 查询操作:

(结合实验一的实验一的数据完成各种不同的查询)

2.1 单表查询

⑴查询S表中全体学生的详细记录;

16

⑵查询所有学生的姓名及其出生年份;

⑶查询考试成绩不及格的学生学号、姓名;(连接)

⑷查询年龄在20-23岁之间的学生姓名、系名、年龄;

⑸查询姓李的学生的姓名、学号和性别;

⑹查询名字中第2个字为“明”字的男学生的姓名和系名;

⑺查询信息系、计算机系学生的姓名、系名,结果按系名升序,姓名降序排序;

⑻查询所有有课程号C2成绩的学生的学号、课程号和成绩,并按成绩降序排序;

⑼查询计算机系学生总人数;

⑽查询选修了微机原理课程的学生人数、平均成绩、最高成绩;(连接)

(11)查询各个课程号及相应的选课人数;

(12)查询选修了2门以上课程的学生学号、姓名和平均成绩;(连接)。

2.2连接查询

⑴查询所有选课学生的学号、姓名、选课名称及成绩;

⑵查询每门课程的课程号、任课教师姓名及其选课人数;

⑶查询所有比“刘伟”工资高的教师姓名、工资和刘伟的工资;

⑷查询同时选修了“程序设计”和“微机原理”的学生姓名、课程名;

⑸查询所有学生的学号、姓名、选课名称及成绩(没有选课的同学的选课信息显示为空)。

2.3嵌套查询

⑴查询与“刘伟”教师职称相同的教师号、姓名和职称;

⑵使用ANY谓词查询讲授课程号为C5 的教师姓名;

⑶使用IN谓词查询讲授课程号为C5的教师姓名;

⑷使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系别。

17

2.4集合查询

⑴查询计算机系的学生姓名及年龄不大于19岁的学生姓名。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出查询数据表的SQL语句。

4、结果分析写出查询后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验三 存储过程的操作

实验目的:

1 通过实验掌握存储过程的概念、功能。

2 掌握用户自定义存储过程的创建方法,包括不带参数的,带输入值参数的,18

带返回值参数的。

3 掌握存储过程和过程语句的结合使用。

4 掌握存储过程的删除的方法。

5 掌握存储过程的执行的方法,包括没有参数的直接使用,带输入参数的使用方法,带输出参数的声明参数并赋值的方法。

实验内容:

1、 创建并执行存储过程

(1) 用SQL语句创建并执行一存储过程Prc_Qsinf:

通过学生学号来查询学生的姓名、年龄、系名。

其中默认学号是“S2”。

(2) 执行存储过程Prc_Qsinf。

查询并显示出默认学号(即S2)和学号为S4学生的姓名和年龄。

(3) 用SQL语句创建一存储过程Pro_Qscore :

通过学生姓名和课程名查询该学生该课程的成绩。

(4) 执行存储过程Pro_Qscore。

查询并显示学生“李思”的“程序设计”课程的成绩。

2、 修改存储过程

(1) 用SQL修改存储过程Prc_Qsinf。

修改要求:把定义中的变量sno_in长度修改为2字节;

sage_out变量类型改为tinyint。

(2) 用SQL修改存储过程Prc_Qsinf。

存储过程的定义改为:根据学号查询姓名、性别、系名。

设默认学号为“S1”。

3、 删除存储过程

(1)用SQL删除存储过程Pro_Qscore。

实验报告书写要求:

19

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建和修改数据库和基本表的SQL语句。

4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验四实验目的:

1、 掌握高级查询的使用方法;2、 学习触发器定义的方法;

触发器的使用

20

3、 分别练习使用插入、修改、删除触发器;

4、 重点掌握使用触发器实现数据表之间的关联。

5、 掌握使用触发器实现级联更新和级联删除操作。

6、 掌握判断不同触发器类型的方法。

实验内容:

1、 创建数据表。

2、 插入数据到数据表。

3、 创建判断是否执行了对数据表有影响的触发器。

4、 创建插入类型的触发器。

5、 创建更新类型的触发器。

6、 创建删除类型的触发器。

具体实验内容:

1、 创建数据表products如下:

表5-1 products

字段名

Productid

Ordered

quantity

字段类型

int

int

int

字段宽度

4

4

4

说明

产品编号

订单编号

数量

2、 自行选择5条数据插入到表中。

3、实验题目:

(1) 新建一个触发器tr1:

只要向该表中插入数据,就输出“成功录入”信息;

(2) 创建一个插入、更新类型的触发器tr2:

实现只要表中的数据有改变,就用select语句显示查询结果;

(3) 创建一个删除类型的触发器tr3:

建立一个与products表结构一样的表p1,当删除表products中的记录时,自动将删除掉的记录存放到p1表中。

(4) 应用实验一的数据实现级联删除操作,创建触发器tr4:

21

删除学生表的一个学生的信息,同时删除该学生的选课信息。

(5) 应用实验一的数据实现级联更新操作,创建触发器t5:

更新一门课程的课程号,同时更新选课表和授课表内的该课程的课程号。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建触发器的SQL语句。

4、结果分析写出触发器引发后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验五 数据库综合设计

实验目的:

1、 掌握SQL 语言在开发工具中的使用;

2、 通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过22

程,进一步掌握查询修改等SQL 基本语法的相关内容。

3、 本次实验为综合设计性实验,按照功能自行设计数据库内表,存储过程和触发器。

实验内容:

1、

2、

3、

完成一个系统的设计,同时实现不同功能要求。

要求实现至少2个约束。

要求包括触发器,存储过程和视图的操作。

具体实验内容:

1、 企业人事管理系统

功能要求:人事管理系统应能实现用户的多级管理,并包含数据录入、数据校验、数据修改、数据浏览和各种模糊查询。

2、 学校教材管理系统

功能要求:本系统能对学校所有班级的教材进行征订,对教材的入库、出库进行管理,能进行各种条件的查询,还应具有教材库预警机制(教材库存不够用或教材征订过剩,都能给予提示)。

3、 高校学生成绩管理系统

功能要求:学生成绩管理使教学管理的一个重要环节,本系统能够进行学生成绩登记、成绩的更正、成绩的查询、成绩的汇总及排序,对已毕业学生成绩能存入历史库中,具有良好实用性。

4、 图书管理系统

功能要求:本系统能实现对图书入库、出库的管理。用户可以通过终端查询到在库的图书,并且如果图书已借出,可以查询到是谁借出的,在什么时候借的。

5、客房管理系统

23

功能要求:本系统能对一个宾馆的客房进行管理,用户可以预约、登记、注销客房。对于已预约的客房,不可以再预约或登记,一旦客户入住某客房,可以在此系统中查询到该客户的信息。

6、酒店餐饮管理

功能要求:用户可以通过本系统点餐,可以通过任何一个终端,查询出该菜是哪一桌客户的。最后,客户可以通过终端查询出自己用餐的详单并结帐。

7、工资管理系统

功能要求:财务可以通过该系统分项录入员工的工资,并且可以把工资与出勤情况一致起来,只要给出出勤表,系统可以自动生成员工的工资。员工可以在客户端根据自己的用户名和密码查询到自己的工资。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出相应关键的SQL语句。

4、结果分析写出部分执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

6、本实验内容请各位同学按照自己选择的题目,写出类似的需求内容到实验内容栏目。具体实验过程请挑选重要的内容写出来,建议写出创建的存储过程和触发器。

24

2023年6月21日发(作者:)

《数据库开发与应用》实验指导书

沈阳理工大学应用技术学院

2009年12月

目 录

实验一 数据库和表的操作.......................................................................................... 1

实验二 数据的操作.................................................................................................... 15

实验三 存储过程的操作............................................................................................ 18

实验四 触发器的使用................................................................................................ 20

实验五 数据库综合设计............................................................................................ 22

实验一 数据库和表的操作

实验目的:

1、 了解SQL SERVER数据库的逻辑结构和物理结构;

2、 掌握SQL SERVER数据库的文件组成;

3、 掌握SQL SERVER数据库中文件组的概念;

4、 了解表的结构和特点;

5、 了解SQL SERVER的基本数据类型;

6、 学会使用结构化查询语句创建和管理数据库和表;

实验内容:

1、 使用sql语句创建最简单的数据库;

2、 使用sql语句创建带条件的数据库,要指定数据文件和日志文件的名称、大小、最大限制和文件增长速度;

3、 为数据库改名;

4、 向数据库中填加、删除一个数据文件;

5、 向数据库中填加一个日志文件;

6、 修改数据库文件的属性:包括文件大小,最大限制,增长方式等;

7、 删除数据库;

8、 在数据库bookborrow中建立3个基本表,实现对表的管理。

具体实验内容:

1、 使用sql语句建立最简单的数据库sqlcourse;

2、 使用sql语句建立数据库school。

包含两个数据库文件和一个日志文件,其中主数据文件的逻辑名为“school_data”,初始大小为10MB, 最大大小为500MB,设置文件自动增长,增长方式为10%;辅助数据文件的逻辑名为“school_data2”,初1

始大小为2MB, 最大大小为30MB,设置文件自动增长,增长方式为5MB。日志文件的所有限制默认。

3、 为数据库sqlcourse更名为yangguang。school_Datayangguangalter

database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

2

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

3

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

4

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

5

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

6

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

7

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

4、 使用sql语句在数据库school中添加和删除一个数据文件。

(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照MB方式自动增长。

(2)删除数据文件“school_data2”。

5、 使用sql语句在数据库school中添加一个日志文件。

(1)逻辑名、物理名、初始大小、最大大小自己设计,增长按照百分计数方式自动增长。alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

8

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

alter database sqlcourse

modify name=yangguang

yangguangschool_Datayangguangalter database sqlcourse

modify name=yangguang

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

9

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

maxsize=50mb,

filegrowth=5mb

)

--创建数据库sqlcourse

create database sqlcourse

--创建数据库school

create database school

on(

name=school_data,

filename='E:aschool_',

size=10mb,

maxsize=500mb,

filegrowth=10%

),

(

name=school_data2,

filename='E:aschool_',

size=2mb,

maxsize=30mb,

filegrowth=5mb

)

10

--为数据库更改名yangguang

alter database sqlcourse

modify name=yangguang

--创建辅助数据文件

alter database school

add file

(

name=new,

filename='E:',

size=3mb,

maxsize=10mb,

filegrowth=5mb

)

--删除数据库

drop database yangguang

--删除数据库school_data2

alter database school

remove file school_data2

alter database school

add log file

(

name=rizhi,

filename='E:',

size=3mb,

11

maxsize=50mb,

filegrowth=5mb

)

6、 使用sql语句在数据库school中建立教师表t,学生表s,课程表c,选课表sc和授课表tc。

表1-1 t(教师)表结构

字段名

tno

tname

tsex

tage

tprof

tsal

tcomm

tdept

字段类型

varchar

varchar

varchar

smallint

varchar

smallint

smallint

varchar

字段宽度

8

10

4

2

10

2

2

20

说明

教师号(非空)

教师姓名(非空)

性别

年龄

职称

工资

岗位津贴

系名

表1-2 s(学生)表结构

字段名

sno

sname

ssex

sage

sdept

字段类型

varchar

varchar

varchar

smallint

varchar

字段宽度

8

10

4

2

20

说明

学号(非空)

学生姓名(非空)

性别

年龄

系名

表1-3 c(课程)表结构

字段名

cno

cname

ct

字段类型

varchar

varchar

smallint

表1-4 sc (选课)表结构

字段名

字段宽度

8

20

2

说明

课程号(非空)

课程名(非空)

课时数

字段类型 字段宽度

12

说明 sno

cno

score

varchar

varchar

smallint

表1-5 tc (授课)表结构

8

8

2

学号(非空)

课程号(非空)

成绩

字段名

tno

cno

字段类型

varchar

varchar

字段宽度

8

8

说明

教师号(非空)

课程号(非空)

7、 使用INSERT INTO语句插入数据

t表

tno

t1

t2

t3

t4

t5

tname

李力

王平

刘伟

张雪

张兰

tsex

tage

47

28

30

51

39

tprof

教授

讲师

讲师

教授

副教授

tsal

1800

850

1000

1900

1500

tcomm

3000

1200

1200

3000

3000

tdept

计算机

信息

计算机

自动化

信息

s表

sno

s1

s2

s3

s4

s5

s6

sname

赵亦

钱尔

孙姗

李思

周武

吴丽

ssex

sage

17

18

20

21

19

20

sdept

计算机

信息

信息

自动化

计算机

自动化

sc表

sno

s1

s1

s2

s2

s2

cno

c2

c5

c5

c6

c7

13

score

85

100

60

80

s3

s3

s4

s4

s5

c2

c4

c2

c3

c2

70

85

85

83

89

c表

cno

c1

c2

c3

c4

c5

c6

c7

cname

程序设计

微机原理

数字逻辑

数据结构

数据库

编译原理

操作系统

ct

60

80

60

80

60

60

60

tc表:

tno

t1

t2

t4

t5

t3

t3

t2

t4

t5

cno

c1

c5

c2

c5

c1

c5

c7

c3

c7

8、 分别建立5个基本表的主码,建立学生表与选课表,课程表与选课表之间的关系;

9、 限制选课表的成绩列输入的值在0到100之间。

14

10、

11、

设置性别的取值或者是‘男’或者是‘女’。

设置课程表中课程时数的初始值为0。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建和修改数据库和基本表的SQL语句。

4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验二 数据的操作

(查询,修改和删除)

实验目的:

1、 掌握指定列或全部列查询;

15

2、 掌握按条件查询;

3、 掌握对查询结果排序;

4、 掌握使用聚集函数的查询;

5、 掌握对查询结果分组;

6、 掌握涉及一个以上数据表的查询;

7、 掌握嵌套查询的方法,从而增强SQL的查询能力;

8、 掌握使用UNION操作符将来自不同查询但结构相同的数据集合组合起

来。

实验内容:

1、 完成数据表的创建过程。

2、 对于单个数据表实现多种不同条件的查询。

3、 对于多个表之间实现连接查询,主要包括2种外连接和 带有连接谓词的内连接。

4、 实现嵌套查询操作,同时练习嵌套查询和连接查询之间的互相转换。同时掌握自身连接的查询。

5、 实现集合查询的操作,掌握不同集合操作符的优先级。

具体实验内容:

1、 创建数据库表:(使用实验一的数据表及其数据)

教师表:T;

学生表:S;

课程表:C;

选课表:SC;

授课表:TC

2、 查询操作:

(结合实验一的实验一的数据完成各种不同的查询)

2.1 单表查询

⑴查询S表中全体学生的详细记录;

16

⑵查询所有学生的姓名及其出生年份;

⑶查询考试成绩不及格的学生学号、姓名;(连接)

⑷查询年龄在20-23岁之间的学生姓名、系名、年龄;

⑸查询姓李的学生的姓名、学号和性别;

⑹查询名字中第2个字为“明”字的男学生的姓名和系名;

⑺查询信息系、计算机系学生的姓名、系名,结果按系名升序,姓名降序排序;

⑻查询所有有课程号C2成绩的学生的学号、课程号和成绩,并按成绩降序排序;

⑼查询计算机系学生总人数;

⑽查询选修了微机原理课程的学生人数、平均成绩、最高成绩;(连接)

(11)查询各个课程号及相应的选课人数;

(12)查询选修了2门以上课程的学生学号、姓名和平均成绩;(连接)。

2.2连接查询

⑴查询所有选课学生的学号、姓名、选课名称及成绩;

⑵查询每门课程的课程号、任课教师姓名及其选课人数;

⑶查询所有比“刘伟”工资高的教师姓名、工资和刘伟的工资;

⑷查询同时选修了“程序设计”和“微机原理”的学生姓名、课程名;

⑸查询所有学生的学号、姓名、选课名称及成绩(没有选课的同学的选课信息显示为空)。

2.3嵌套查询

⑴查询与“刘伟”教师职称相同的教师号、姓名和职称;

⑵使用ANY谓词查询讲授课程号为C5 的教师姓名;

⑶使用IN谓词查询讲授课程号为C5的教师姓名;

⑷使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系别。

17

2.4集合查询

⑴查询计算机系的学生姓名及年龄不大于19岁的学生姓名。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出查询数据表的SQL语句。

4、结果分析写出查询后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验三 存储过程的操作

实验目的:

1 通过实验掌握存储过程的概念、功能。

2 掌握用户自定义存储过程的创建方法,包括不带参数的,带输入值参数的,18

带返回值参数的。

3 掌握存储过程和过程语句的结合使用。

4 掌握存储过程的删除的方法。

5 掌握存储过程的执行的方法,包括没有参数的直接使用,带输入参数的使用方法,带输出参数的声明参数并赋值的方法。

实验内容:

1、 创建并执行存储过程

(1) 用SQL语句创建并执行一存储过程Prc_Qsinf:

通过学生学号来查询学生的姓名、年龄、系名。

其中默认学号是“S2”。

(2) 执行存储过程Prc_Qsinf。

查询并显示出默认学号(即S2)和学号为S4学生的姓名和年龄。

(3) 用SQL语句创建一存储过程Pro_Qscore :

通过学生姓名和课程名查询该学生该课程的成绩。

(4) 执行存储过程Pro_Qscore。

查询并显示学生“李思”的“程序设计”课程的成绩。

2、 修改存储过程

(1) 用SQL修改存储过程Prc_Qsinf。

修改要求:把定义中的变量sno_in长度修改为2字节;

sage_out变量类型改为tinyint。

(2) 用SQL修改存储过程Prc_Qsinf。

存储过程的定义改为:根据学号查询姓名、性别、系名。

设默认学号为“S1”。

3、 删除存储过程

(1)用SQL删除存储过程Pro_Qscore。

实验报告书写要求:

19

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建和修改数据库和基本表的SQL语句。

4、结果分析写出修改后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验四实验目的:

1、 掌握高级查询的使用方法;2、 学习触发器定义的方法;

触发器的使用

20

3、 分别练习使用插入、修改、删除触发器;

4、 重点掌握使用触发器实现数据表之间的关联。

5、 掌握使用触发器实现级联更新和级联删除操作。

6、 掌握判断不同触发器类型的方法。

实验内容:

1、 创建数据表。

2、 插入数据到数据表。

3、 创建判断是否执行了对数据表有影响的触发器。

4、 创建插入类型的触发器。

5、 创建更新类型的触发器。

6、 创建删除类型的触发器。

具体实验内容:

1、 创建数据表products如下:

表5-1 products

字段名

Productid

Ordered

quantity

字段类型

int

int

int

字段宽度

4

4

4

说明

产品编号

订单编号

数量

2、 自行选择5条数据插入到表中。

3、实验题目:

(1) 新建一个触发器tr1:

只要向该表中插入数据,就输出“成功录入”信息;

(2) 创建一个插入、更新类型的触发器tr2:

实现只要表中的数据有改变,就用select语句显示查询结果;

(3) 创建一个删除类型的触发器tr3:

建立一个与products表结构一样的表p1,当删除表products中的记录时,自动将删除掉的记录存放到p1表中。

(4) 应用实验一的数据实现级联删除操作,创建触发器tr4:

21

删除学生表的一个学生的信息,同时删除该学生的选课信息。

(5) 应用实验一的数据实现级联更新操作,创建触发器t5:

更新一门课程的课程号,同时更新选课表和授课表内的该课程的课程号。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出创建触发器的SQL语句。

4、结果分析写出触发器引发后执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

实验五 数据库综合设计

实验目的:

1、 掌握SQL 语言在开发工具中的使用;

2、 通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过22

程,进一步掌握查询修改等SQL 基本语法的相关内容。

3、 本次实验为综合设计性实验,按照功能自行设计数据库内表,存储过程和触发器。

实验内容:

1、

2、

3、

完成一个系统的设计,同时实现不同功能要求。

要求实现至少2个约束。

要求包括触发器,存储过程和视图的操作。

具体实验内容:

1、 企业人事管理系统

功能要求:人事管理系统应能实现用户的多级管理,并包含数据录入、数据校验、数据修改、数据浏览和各种模糊查询。

2、 学校教材管理系统

功能要求:本系统能对学校所有班级的教材进行征订,对教材的入库、出库进行管理,能进行各种条件的查询,还应具有教材库预警机制(教材库存不够用或教材征订过剩,都能给予提示)。

3、 高校学生成绩管理系统

功能要求:学生成绩管理使教学管理的一个重要环节,本系统能够进行学生成绩登记、成绩的更正、成绩的查询、成绩的汇总及排序,对已毕业学生成绩能存入历史库中,具有良好实用性。

4、 图书管理系统

功能要求:本系统能实现对图书入库、出库的管理。用户可以通过终端查询到在库的图书,并且如果图书已借出,可以查询到是谁借出的,在什么时候借的。

5、客房管理系统

23

功能要求:本系统能对一个宾馆的客房进行管理,用户可以预约、登记、注销客房。对于已预约的客房,不可以再预约或登记,一旦客户入住某客房,可以在此系统中查询到该客户的信息。

6、酒店餐饮管理

功能要求:用户可以通过本系统点餐,可以通过任何一个终端,查询出该菜是哪一桌客户的。最后,客户可以通过终端查询出自己用餐的详单并结帐。

7、工资管理系统

功能要求:财务可以通过该系统分项录入员工的工资,并且可以把工资与出勤情况一致起来,只要给出出勤表,系统可以自动生成员工的工资。员工可以在客户端根据自己的用户名和密码查询到自己的工资。

实验报告书写要求:

1、字迹工整,过程清晰。

2、方法与原理分析写本次实验所涉及的理论知识点。

3、实现过程写出相应关键的SQL语句。

4、结果分析写出部分执行的结果,同时对实验过程中遇到的问题作适当分析。

5、实验后一周完成实验报告书写。

6、本实验内容请各位同学按照自己选择的题目,写出类似的需求内容到实验内容栏目。具体实验过程请挑选重要的内容写出来,建议写出创建的存储过程和触发器。

24