文档库 最新最全的文档下载
当前位置:文档库 › SQL数据库实验指导书

SQL数据库实验指导书

SQL数据库实验指导书
SQL数据库实验指导书

数据库原理

实验指导书

实验一认识和使用SQL Server 2000管理工具不交报告2

实验二基本表的修改,数据的查询与更新,视图的管理6

实验三存储过程和触发器2

实验四VB连接SQL数据库的实例2

实验五系统集成4

上海工程技术大学电子电气工程学院计算机系

上海工程技术大学实验报告要求

实验课程:年级:实验成绩:实验名称:姓名:

实验编号:学号:实验日期:指导教师:组号:实验时间:

一、实验目的

本次实验所涉及并要求掌握的知识点。

二、实验内容与实验步骤

实验内容、原理分析及具体实验步骤。

三、实验环境

实验所使用的器件、仪器设备名称及规格。

四、实验过程与分析

详细记录实验过程中发生的故障和问题,进行故障分析,说明故障排除的过程及方法。

根据具体实验,记录、整理相应数据表格、绘制曲线、波形图等。

五、实验结果总结

对实验结果进行分析,完成思考题目,总结实验的心得体会,并提出实验的改进意见。

六、附录

实验一认识和使用SQL Server 2000管理工具

实验目的:

熟悉SQL Server2000的环境,掌握SQL Server服务管理器,SQL Server企业管理器,SQL Server查询分析器的使用。学会如何创建数据库及其他数据库对象,灵活进行操作。数据库基本表的创建,数据的增加

实验环境:

SQL Server2000

实验内容:

使用SQL Server 2000企业管理器,按下列要求创建和修改用户数据库,要求如下:

1.数据库名为“Stu_C”。

2.数据库中包含一个基本数据文件,逻辑文件名为Stu_C_data,磁盘文件名为Stu_C_data.mdf,文件初始容量为

10MB,最大容量为100MB,文件容量递增值为5%。

3.事务日志文件,逻辑文件名为Stu_C_log,磁盘文件名为Stu_C_log.ldf,文件初始容量为5MB,最大容量为30MB,文

件容量递增值为2MB。

4.对数据库做如下修改:添加一个辅助数据文件,逻辑文件名为Stu_C2_data,磁盘文件名为Stu_C2_data.ndf,文件初

始容量为5MB,最大容量为50MB,文件容量递增值为5MB;将日志文件的最大容量增加为50MB,递增值改为3MB。

5.将Stu_C数据库更名为New_Stu_C。

6.删除New_Stu_C数据库。

7. 通过表设计器来创建学生课程数据库Stu_C中学生表S,表结构如表所示:

表1-1 学生表S的数据结构

字段名称字段说明数据类型长度是否为空备注

SNO 学号CHAR 10 NOT NULL 主键

SNAME 姓名CHAR 10 NOT NULL 普通索引

SEX 性别CHAR 2 NULL 男或女

AGE 年龄INT 4 NULL 大于5岁

SDEPT 系别CHAR 10 NULL

8. 通过表设计器来创建学生课程数据库Stu_C中课程表C,表结构如表所示:

表1-2 课程表C的数据结构

字段名称字段说明数据类型长度是否为空备注

CNO 课程号CHAR 6 NOT NULL 主键

CNAME 课程名CHAR 20 NOT NULL

PCNO 先修课号CHAR 6 NULL

CREDIT 学分INT 4 NULL 默认4

9. 通过表设计器来创建学生课程数据库Stu_C中选修表SC,表结构如表所示:

表1-3 选修表SC的数据结构

字段名称字段说明数据类型长度是否为空备注

CNO 课程号CHAR 6 NOT NULL 主键为(SNO,

CNO)

SNO 学号CHAR 10 NOT NULL

GRADE 成绩INT 4 NULL 在[0,100]

实验步骤

启动SQL Server服务器。在企业管理器中创建和修改数据库Stu_C。

1. 设置常规选项卡

(1)在企业管理器的控制面板目路中选中节点“数据库”,单击鼠标右键,在弹出菜单中选择“新建数据库”命令。(2)设置新建数据库的常规选项卡,在“名称”文本框中键入数据库名称“Stu_C”。

2. 设置数据文件选项卡

(1)基本数据文件名“Stu_C_data”已自动生成在“文件名”项,“位置”指明数据文件存储的位置,可进行修改。(2)设置该文件初始大小为10MB。

(3)选中“文件属性”对话框中的复选框“文件自动增长”,并选中“按百分比”设置文件容量递增值为5%。

(4)在“最大文件大小”对话框中选择“将文件增长限制为(MB)”为100。

3. 设置事务日志选项卡

(1)事务日志文件名“Stu_C_log”已自动生成。设置该文件初始大小为5MB。

(2)选中“文件属性”对话框中“文件自动增长”,并选中“按兆字节”设置文件容量递增值为。

(3)在“最大文件大小”对话框中选择“将文件增长限制为(MB)”为30。

(4)单击“确定”按钮,完成数据库的创建。

4. 修改数据库属性

(1)从树状目录窗口中找到刚刚创建的数据库Stu_C,单击右键,从弹出菜单中选择命令“属性”,打开数据库Stu_C的属性窗口。

(2)选择数据文件选项卡。在该选项卡中添加数据文件Stu_C2_data,设置该文件初始大小为5MB,选中“文件自动增长”,并选中“按兆字节”设置文件内容递增值为5。最后选择“将文件增长限制为(MB)”为50。

(3)选择事务日志选项卡,在该选项卡中将事务日志文件的最大容量改为50,递增值改为3。

5. 将Stu_C 数据库更名为New_Stu_C

可以调用系统存储过程sp_renamedb更改数据库的名称。

在查询分析器中输入如下语句:

sp_renamedb ’ Stu_C’,’ New_Stu_C’

6. 删除数据库New_Stu_C

(1)从树状目录窗口中找到刚创建的数据库New_Stu_C,单击右键,从弹出菜单中选择命令“删除”。

(2)在弹出对话框中选择“是”确认即可。

还可以使用DROP DATABASE来实现数据库的删除。

使用语句: DROP DATABASE New_Stu_C。

7. 方法一:使用企业管理器创建数据表

(1)打开企业管理器,在树状目录窗口中找到数据库节点Stu_C,若没有,则按照实验一方法创建数据库。

(2)选中下级节点“表”。单击鼠标右键,从弹出菜单中选择“新建表”,打开表设计窗口,在窗口按照“实验内容”中所列出的数据表结构,定义列名、数据类型、长度等属性。

(3)选择主键字段,单击右键,选择“设置主键”,或使用工具栏上的“主键”快捷工具设定。

(4)单击工具栏“保存”按钮,在弹出的对话框中输入表名称,关闭表设计窗口,完成表的创建。

方法二:使用Transact_SQL语句创建数据表。

如图所示,在查询分析器代码窗格内输入:

USE Stu_C

GO

CREATE TABLE S

(SNO CHAR(10) PRIMARY KEY,

SNAME CHAR(10) NOT NULL,

SEX CHAR(2) NULL,

AGE INT NULL,

SDEPT CHAR(10) NULL);

CREATE TABLE C

(CNO CHAR(6) PRIMARY KEY,

CNAME CHAR(20) NOT NULL,

PCNO CHAR(6) NULL,

CREDIT INT NULL);

CREATE TABLE SC

(SNO CHAR(10) NOT NULL,

CNO CHAR(6) NOT NULL,

GRADE INT NULL,

PRIMARY KEY (Sno, Cno));

然后单击工具栏上的三角形(执行查询)图标,系统将运行查询代码,并在显示结果窗格上显示Stu_C数据库中的各个表。

实验二基本表的修改,数据的查询与更新,视图的管理

实验目的:

掌握约束的定义及其删除方法,掌握规则的创建、使用和删除方法,掌握默认对象的创建、使用和删除方法,掌握创建视图的各种方法,掌握修改视图的方法,熟练使用SQL查询语句,熟悉数据的插入、删除、修改。

实验环境:

SQL Server2000

实验内容:

根据实验一建立的表,实现以下的操作:

1.通过create table命令的方式创建学生课程数据库Stu_C中的学生表S、课程表C、修表SC和每个表的主键。

2.修改C表,删除CREDIT字段。

3.在C表中添加一列,列名为TNAME,数据类型为CHAR,长度为10,允许为空。

4.修改S表中SDEPT字段,将其长度改为30。

5.创建CHECK约束。在S表SEX列创建“SEX”只能是“男”或“女”的(检查)约束。

6.创建DEFAULT默认值约束。在S表AGE列创建缺省值为“18”的约束。

7.创建FOREIGN KEY约束。C表中的先修课PCNO参照C表中的CNO。SC表中的SNO参照S表中的SNO属性,CNO参照C

表中CNO属性。

7.根据外码约束,生成S,C,SC三个表的关系图。

8.通过打开表和INSERT命令输入数据。

9.查询全体学生的学号、姓名、所在系。

Select sno,sname,sdept from s

10.查询全体学生的姓名及其出生年份,并给“出生年份”取别名。

Select sname,2011-age as ‘出生年份’ from s

11.查询选修了课程的学生学号。

Select distinct sno from sc;

12.查询年龄在20~23岁之间(包括20和23岁)的学生的姓名、年龄和所在系。

Select sname,age,sdept from s where age>=20 and age<=23

13.查询所有年龄在20岁以下、“数学系”的男学生学号和姓名。

Select sno,sname from s where age<20 and sdept=’数学系’and sex=’男’

14.查询选修“C4”课程的学生总人数。

15. select count(sno) from sc where cno=’c4’;

16.查询所有有成绩的学生学号和课程号,查询结果按学号升序排列,同一个学生按课程号降序排列。Select sno,cno from sc where grade is not null order by sno,cno desc;

17.查询选修“C3”课程的学生平均成绩。

Select avg(grade) from sc where cno=’c3’;

Select avg(grade) from sc group by cno having con=’c3’;

18.查询各门课程及相应的选课人数。

Select cno,count(sno) from sc group by cno;

19.查询选修“C3”课程的学生最高分数。

Select max(grade) from sc where cno=’c3’;

20.若存在一个学号为“S4”的学生,试将此学生的年龄改为22岁。

Update s set age=22 where sno=’s4’;

21.将“C3”课程的学生成绩都增加5%。

Update sc set grade=grade*1.05 where cno=’c3’;

22.删除学号为“S8”的学生记录。

Delete from sc where sno=’s8’;

Delete from s where sno=’s8’;

23.查询所有学生姓名及其所选课程的课程号和成绩。

Select sname,cno,grade from s,sc where s.sno=sc.sno;

24.查询所有成绩在80分以上的学生的学号,姓名,课程名,成绩。

Select s.sno,sname,cname,grade from s,c,sc where s.sno=sc.sno and

https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and sno in(select sno from sc group by sno having min(grade)>=80)

25.查询哪些学生选修了数据库课程,列出学号,姓名。

Select sno,sname from sc,c,s where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and sc.sno=s.sno and

cname like ‘%数据库%’;

26.查询哪些学生选修了3门以上课程。

Select sno from sc group by sno having count(*)>=3;

27.查询选修“C1”课程的学生学号,姓名及成绩。

Select s.sno,sname,grade from s,sc where s.sno=sc.sno and cno=’c1’

28.查询所有选修了“吴一”老师课程的女学生学号和姓名。

Select s.sno,sname from s,c,sc where s.sno=sc.sno and https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and tname like ‘吴一’and sex=’女’29.查询“程序设计”课程成绩在90分以上的学生姓名。

30.把“吴一”老师的男学生选课成绩增加4%。

Update sc set grade=grade*1.04 where cno in(select cno from c where tname=’吴一’) and sno in (select sno from s where sex=’男’);

31.查询所有比“王华”年龄大的学生姓名、年龄和性别。

Select sname,age,sex from s where age>

(Select age from s where sname=’王华’)

32.检索选修4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。

Select sno,count(*),sum(grade) from sc where grade>=60 group by sno having count(*)>=4 order by sum(grade) desc;

33.把SC表中每门课程的平均成绩插到另一个已存在的表SC_C(CNO,CNAME,AVG_GRADE)中。

Insert into sc_c(cno,cname,avg_grade)

select https://www.wendangku.net/doc/8511784932.html,o,cname,avg(grade) from sc,c where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o group by https://www.wendangku.net/doc/8511784932.html,o;

select https://www.wendangku.net/doc/8511784932.html,o as cno,cname,avg(grade) as avg_grade into cc from sc,c where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o group by https://www.wendangku.net/doc/8511784932.html,o;

34.查询所有“数学”课程成绩低于数学平均成绩的学生学号。

Select sno from sc,c where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and cname=’数学’and grade<

(select avg(grade) from sc,c where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and cname=’数学’)

35.检索刘明老师所授课程的课程号和课程名。

36.检索年龄大于23岁的男同学的学号和姓名。

37.检索学号为s3的学生所学课程的课程名和任课教师名。

38.检索至少选修刘明老师所授课程中一门课程的女同学姓名。

39.检索至少选修两门课程的学生学号。

Select sno from sc group by sno having count(*)>=2

40.统计有学生选修的课程门数。

Select count(distinct cno) from sc;

41.求刘明老师所授课程的每门课程的学生平均成绩。

Select cno,avg(grade) from sc group by cno having cno in(select cno from c where tname=’刘明’); Select cno,avg(grade) from sc where cno in(select cno from c where tname=’刘明’) group by cno 42.求选修c4课程的学生平均年龄。

Select avg(age) from s where sno in(select sno from sc where cno=’c4’)

43.检索学号比王芳同学大,而年龄比他小的学生姓名。

Select sname from s where sno>(select sno from s where sname=’王芳’)

And age<(select age from s where sname=’王芳’)

44.检索姓名以“王”打头的所有学生的姓名和年龄。

Select sname,age from s where sname like ‘王%’

45.在sc中检索成绩为空值的学生学号和课程号。

--46. 检索李莉同学不学的课程的课程号。

Select cno from c where cno not in

(select cno from sc,s where sc.sno=s.sno and sname='李莉');

--47. 检索全部学生都修的课程的课程号与课程名。

Select cno,cname from c where not exists

(select * from s where not exists

(select * from sc where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and sc.sno=s.sno));

--48. 检索选修课程包括刘明老师所教所有课程的学生学号。

Select sno from s where not exists

(select * from c where tname='刘明'and not exists

(select * from sc where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and sc.sno=s.sno));

--49. 统计每门课程的学生选修人数(超过10人的课程才统计),要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。

Select cno,count(*) from sc group by cno having count(*)>10

Order by count(*) desc,cno asc;

--50. 求年龄大于女同学平均年龄的男学生姓名和年龄。

Select sname,age from s where sex='男' and age>

(select avg(age) from s where sex='女');

--51. 求年龄大于所有女同学年龄的男同学姓名和年龄。

Select sname,age from s where sex='男' and age>

(select max(age) from s where sex='女');

Select sname,age from s where sex='男' and age>

all(select age from s where sex='女');

--52. 往基本表s中插入一个学生元组('s9','吴用',18)。

Insert into s(sno,sname,age) values('s9','吴用',18);

--53. 在基本表s中检索每一门课程成绩都大于等于80分的学生学号,姓名和性别,并把检索到的值送往另一个已存在的基本表student(sno,sname,sex)

Insert into s(sno,sname,sex)

Select s.sno,sname,sex from s,sc where s.sno=sc.sno

group by s.sno,sname,sex having min(grade)>80;

--54. 在基本表sc中删除尚无成绩的选课元组。

Delete from sc where grade is null;

--55. 把王明同学的学习选课和成绩全部删去。

Delete from sc where sno in(select sno from s where sname like '王明');

--56. 把选修“数据库”课不及格的成绩全改为空值。

Update sc set grade=null where grade<60 and cno in(select cno from c where cname like '%数据库%');

--57. 把低于总平均成绩的女同学成绩提高15%。

update sc set grade=grade*1.15 where grade <(select avg(grade) from sc)

and sno in(select sno from s where sex='女');

--58. 在基本表sc中修改c4课程的成绩,若成绩小于等于75分时提高5%,若成绩大于75分时提高4%(用两个

update语句实现)。

Update sc set grade=grade*1.04 where cno='c4' and grade>75;

Update sc set grade=grade*1.05 where cno='c4'and grade<=75;

--59. 选修了全部课程的学生姓名

Select sname from s where not exists(select * from c where not exists

(select * from sc where s.sno=sc.sno and https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o));

--60. 检索只选修了c2课程的学生姓名。

Select sname from s,sc where s.sno=sc.sno and cno='c2'and sno in

(select sno from sc group by sno having count(*)=1);

Select sname from s,sc where s.sno=sc.sno and s.sno not in(select sno from sc where cno<>'c2'); --61. 检索至少选修了c1和c2课程的学生姓名。

Select sname from s where sno in(select sno from sc where cno='c1')

And sno in(select sno from sc where cno='c2');

--62. 检索至少选修了s2学生所修课程的学生姓名。

Select sname from s where not exists(select * from sc where sno='s2'and

not exists(select * from sc w where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and w.sno=s.sno));

--63. 检索英语成绩最高的学生姓名。

Select sname from s,sc,c where s.sno=sc.sno and https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and cname='英语'

And grade=(Select max(grade) from sc,c where https://www.wendangku.net/doc/8511784932.html,o=https://www.wendangku.net/doc/8511784932.html,o and cname='英语');

64.基于视图进行添加、更新、删除记录。

65.删除视图Stu_CS3。

实验步骤

1.略

2. 在企业管理器中删除列

(1)在目录树中选择Stu_C数据库,选择要修改的表。

(2)单击右键,选择“设计表”,打开表设计对话框。

(3)选择需要进行修改的列,选择“删除列”。

(4)保存,完成对数据表的修改。

也可以使用Transact_SQL语句来实现。

USE Stu_C

GO

ALTER TABLE C DROP COLUMN CREDIT

GO

3. 在企业管理器中添加列

(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择C表。

(2)点击右键,选择“设计表”,打开表设计对话框。

(3)在表设计对话框中添加列TNAME,并进行数据类型及约束定义。

也可以使用Transact_SQL语句来实现。

USE Stu_C

GO

ALTER TABLE C ADD TNAME CHAR(10) NULL

GO

(4)保存,完成对数据表的修改。

4. 在企业管理器中对表结构进行修改

(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。

(2)点击右键,选择“设计表”,打开表设计对话框。

(3)在表设计对话框中对列SDEPT进行修改。

也可以使用Transact_SQL语句来实现。

USE Stu_C

GO

ALTER TABLE S ALTER COLUMN SDEPT (30)

GO

(4)保存,完成对数据表的修改。

5-6. 在企业管理器中对表进行约束和规则定义

(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。

(2)点击右键,选择“设计表”,打开表设计对话框。

(3)在表设计对话框中,选中要进行CHECK约束定义的列SEX,点击右键,选择“CHECK约束”,在对话框中输入约束表达式“SEX IN (’男’,’女’)”。

(4)选中要进行DEFAULT定义的列AGE,在下面的属性选项卡“默认值”中输入“18”。

(5)保存,完成对数据表的约束定义。

7. 在企业管理器中义创建三个表的关系

(1)在服务器目录树中选择Stu_C数据库,展开单击“表”选项,选择S表。

(2)点击右键,选择“设计表”,打开表设计对话框。

(3)在表设计对话框中,点击右键,选择“关系”,或在工具栏中选择“关系”图标。

(4)在关系对话框中,选择“新建”,在“主键表”“外键表”选项中选择表名,体现参照和被参照的关系。并确定相对应的列名。

(5)保存,完成一个关系的定义。之后再用同样的方法“新建”新的关系,保存。

8. 使用向导创建关系图

(1)在服务器目录树中选择Stu_C数据库,展开单击“关系图”选项。

(2)进入新建关系图向导,按照提示进行此数据库关系图的创建。

(3)对关系图保存并命名。

9-62.略

63.创建视图

(1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库;

(2)选择菜单“工具”——〉“向导”;

图5.1 视图向导

(3)在向导对话框中,单击数据库左边的“+”号,使之展开。选择“创建视图向导”项,单击“确定”按钮;

(4)进入创建视图向导后,首先出现的是欢迎进入创建视图向导对话框,其中简单介绍了该向导的功能。单击“下一步”

按钮后,就会出现选择“数据库名称”对话框;

(5)在“选择数据库名称”对话框中,选择视图所属的数据库。单击“下一步”按钮,进入选择表对话框。

(6)在选择表对话框中,列出了指定数据库中所有用户定义的表和视图。用户可以从中选择构造视图所需的一个表或多个表(或视图),被选中的表成为构造视图的参考表。选择构造视图参考表的方法是:用鼠标单击表名后的“包含在视图中”列,使复选框为选中状态。单击“下一步”按钮,则进入选择列对话框。

(7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行。创建视图的参考属性可以在表格中选出。选择视图参考属性的方法是用鼠标单击属性名后边的“选择列”,使其复选框为选中状态。单击“下一步”按钮,进入创建视图的定义限制对话框。

(8)在定义限制对话框中,输入表的连接和元组选择条件。

图5.2 设计视图

(9)在输入视图名对话框中输入所建视图的标识名。

(10)在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。读者可以认真阅读该SQL语句,如果发现与要求不符合之处则可以直接进行修改。

(11)确认无误后,单击“完成”按钮。随后出现一个通知用户已成功创建视图的信息框,单击“确认”按钮后,整个创建视图工作就完成了。

64.查看和修改视图

视图创建后,就可以利用它进行查询信息了。如果发现视图的结构不能很好地满足要求,还可以在企业管理器对它进

行修改。

65.删除视图

删除视图的方法是:首先要在企业管理器中,将鼠标指向数据库中的视图文件夹,单击右键。在随后出现的弹出菜单中,选择“删除”项。选中预删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。

实验三存储过程和触发器

实验目的:

1.掌握创建存储过程的方法、步骤、使用方法;掌握创建触发器的方法、步骤、使用方法。

实验环境:

SQL Server2000

实验内容:

1.参照以下的例子,创建一个存储过程Pro_Com,该存储过程的作用是:当执行该存储过程时,将返回计算机系学生的

所有信息。

例:下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。

在SQL 查询分析器中输入:

CREATE PROCEDURE au_info_all

AS

SELECT au_lname, au_fname, title, pub_name

FROM authors a INNER JOIN titleauthor ta

ON a.au_id = ta.au_id INNER JOIN titles t

ON t.title_id = ta.title_id INNER JOIN publishers p

ON t.pub_id = p.pub_id

GO

--在SQL 查询分析器中执行au_info_all 存储过程方法:

EXECUTE au_info_all

-- Or

EXEC au_info_all

2.执行Pro_Com存储过程,查看计算机系学生的情况。

3.删除Pro_Com存储过程。

4.参照以下的例子,使用CREATE PROCEDURE语句创建一个带参数的存储过程Pro_Stu。该存储过程的作用是:当任意输

入一个学生的姓名时,返回该学生的学号、选修的课程名称和课程成绩。

例:下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精确匹配的值。

CREATE PROCEDURE au_info

@lastname varchar(40),

@firstname varchar(20)

AS

SELECT au_lname, au_fname, title, pub_name

FROM authors a INNER JOIN titleauthor ta

ON a.au_id = ta.au_id INNER JOIN titles t

ON t.title_id = ta.title_id INNER JOIN publishers p

ON t.pub_id = p.pub_id

WHERE au_fname = @firstname

AND au_lname = @lastname

GO

au_info 存储过程可以通过以下方法执行:

EXECUTE au_info 'Dull', 'Ann'

-- Or

EXECUTE au_info @lastname = 'Dull', @firstname = 'Ann'

--Or

EXECUTE au_info @firstname = 'Ann', @lastname = 'Dull'

5.执行Pro_Stu存储过程,查询“宋江”的学号、选修课程名称和课程成绩。

6.使用系统存储过程sp_helptext 查看存储过程Pro_Stu的文本信息

7.创建一个带参数的存储过程Pro_Couse。该存储过程的作用是:当任意输入一门课程的课程名时,返回选修该课程的

学生学号、学生姓名和成绩。

8.执行Pro_Couse存储过程,查询选修“操作系统”的学生学号、学生姓名和成绩。

9.参照以下的例子,建立一个名为Tri_InsertSC 的INSERT 触发器,存储在SC表中。该触发器的作用是:当用户向SC

表中插入记录时,如果成绩不在[0,100]之间,则提示用户不能插入记录,否则提示记录插入成功。

例:创建一个触发器,当用户在表roysched 中添加或更改数据时,该触发器向客户端打印一条用户定义消息。

USE pubs

GO

CREATE TRIGGER royalty_reminder

ON roysched

WITH ENCRYPTION

FOR INSERT, UPDATE

AS RAISERROR (50009, 16, 10)

消息 50009 是sysmessages中的用户定义消息。

例:在学习表SC上定义更新触发器,使其限制修改后的成绩不能低于原来成绩(否则,事务回滚)。

CREATE TRIGGER SC_updata_grade ON [dbo].[SC]

FOR UPDATE

AS

DECLARE @old_grade real, @new_grade real

IF update ( grade )

BEGIN

SELECT @old_grade = grade FROM deleted

SELECT @new_grade = grade FROM inserted

IF @old_grade > @new_grade

ROLLBACK TRANSACTION

END

10.在SC表中创建一个名为Tri_DeleteSC的DELETE 触发器,该触发器的作用是禁止删除SC表中的记录。

11.在S表中创建一个名为Tri_UpdateS的UPDATE 触发器,该触发器的作用是禁止更新S表中的“SNAME”字段的内容。

12.禁用Tri_UpdateS触发器。

13.删除Tri_UpdateS触发器。

实验步骤:

1.根据以下的步骤,使用SQL Enterprise Manager来创建存储过程。

(1)展开服务器组,然后展开服务器。

(2)展开"数据库"文件夹,再展开要在其中创建过程的数据库。

(3)右击"存储过程",然后单击"新建存储过程"命令。

(4)输入存储过程的文本。按 TAB 键可以缩进存储过程的文本。按下 CTRL+TAB 键或单击合适的按钮来退出文本框。

(5)若要检查语法,单击"检查语法"命令。

(6)若要设置权限,单击"权限"命令。

2.也可以直接在查询分析器中直接输入创建存储过程的语句。

3.使用企业管理器创建触发器

(1)展开服务器组,然后展开服务器。

(2)展开"数据库"文件夹,展开含触发器的表所属的数据库,然后单击"表"文件夹。

(3)在详细信息窗格中,右击将在其上创建触发器的表,指向"所有任务"菜单,然后单击"管理触发器"命令。

(4)在"名称"中,单击 <新建>。

(5)在"文本"框中输入触发器的文本。用 CTRL-TAB 键来缩进触发器的文本。

(6)若要检查语法,单击"检查语法"命令。

4.也可以直接在查询分析器中直接输入创建触发器的语句。

数据库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也设置为外键。

SQL数据库实验报告 (1)

资源与环境科学学院实验报告 一、上机实习名称:SQL Server的安装及数据库的建立 二、实验目的: 1、通过对某个商用数据库管理系统的使用,了解DBMS的工作原理和系统构架。 2、熟悉对DBMS的操作 3、熟悉如何使用SSMS和SQL建立数据库和表,并加深对于完整性的理解。 三、实验内容: 1、根据安装文件的说明安装数据库管理系统。 2、学会启动和停止数据库服务,思考可以用哪些方式来完成启动和停止。 3、掌握管理工具的使用 (1)SQL Server Management Studio的使用 ?连接服务器的方法 ?查询分析器的使用 (2)配置管理器的使用 4、了解数据库系统的逻辑组件: 它们主要是数据库对象,包括基本表、视图、触发器、存储过程、约束等。今后将学习如何操作这些数据库对象。 5.在SSMS中创建数据库和表 四、实验步骤 1. SQL Server 2008的体系结构和特点介绍 SQL Server 是一个关系数据库管理系统。由微软公司2008年第三季度正式发布, SQL Server 2008是一个重大的产品版本,在安全性、可用性、易管理性、可扩展性、商业智能等方面有了更多的改进和提高,对企业的数据存储和应用需求提供了更强大的支持和便利,使得它成为迄今为止最强大和最全面的SQL Server版本。 SQL Server 2008 版本体系:根据不同的用户类型和使用需求,微软公司推出了5种不同的SQL Server版本,包括企业版(Enterprise)、标准版(Standard)、工作组版(Workgroup)、学习版(Express)和移动版(Compact)

数据库实验四:SQL数据查询

数据库实验四:SQL数据查询 一、实验目的与要求: 1.实验目的 熟练掌握SQL SELECT语句,能运用查询语句完成各种查询。 实验内容: 在实验三和实验四的基础上完成查询操作,将题目中的x, y等具体化: 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。 (2)查询某个表中的所有记录。 (3)使用单个条件的简单查询。 (4)使用多个条件(AND关系)的查询。 (5)使用多个条件(OR关系)的查询。 (6)使用多个条件(混合AND和OR关系)的查询。 (7)使用带NOT运算的查询。 (8)使用BETWEEN···AND···的查询。 (9)使用NOT···BETWEEN···AND···的查询。 (10)使用LIKE运算符的字符串匹配查询。 (11)使用LIKE运算符的模板匹配查询。 (12)查询空值和非空值的查询 (13)结果要求排序的查询 (14)查询结果按多列排序,并分别要求升序和降序的查询。 (15)使用TOP显示前若干记录的查询。 (16)使用TOP显示前若干记录的查询,如果有满足条件的并列记录一并显示。 2、连接查询 (17)两个关系的连接查询。

(18)带其他查询条件的两个关系的连接查询。 (19)多个关系(三个以上)的连接查询。 (20)两个关系的广义笛卡尔积运算结果。 (21)根据两个关系的广义笛卡尔积运算结果得到两个关系进行自然连接的结果。 (22)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段。 (23)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中列出所有教师信息(即包括不是任 何课程责任教师的教师信息)。 (24)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中能够反映目前没有确定责任教师的 课程信息。 (25)查询教师-课程信息,查询结果中包括教师姓名、职称、课程名称和课程性质等4个字段,要求结果中既能够反映目前不是责任教师的教 师信息,又能反映目前没有确定责任教师的课程信息。 提示:(22)~(25)分别用内连接、左连接、右连接完成,分析它们的效果。 3、嵌套查询(注意使用ANY、ALL和EXISTS) (26)使用IN运算的简单嵌套查询。 (27)使用NOT IN运算的简单嵌套查询。 (28)使用关系运算(如等于)的简单嵌套查询。 (29)使用ANY或SOME的简单嵌套查询。 (30)使用ALL的简单嵌套查询。 (31)查询院系名称含“计算机”、职称为教授、所负责教程为必修课的教师姓名、职称、课程名称和课程学时等信息(分别用嵌套查询和连接 查询完成,分析各自的效率)。 (32)设计两个内外层互相关的嵌套查询。

数据库SQLServer实验3答案教辅教材

实验3 SQL Server数据表管理 一、实验目的 1.学会使用SQL Server管理平台和Transact-SQL语句CREATE TABLE 和ALTER TABLE创建和修改表。 2.学会在SQL Server管理平台中对表进行插入、修改和删除数据操作。 3.学会使用Transact-SQL语句对表进行插入、修改和删除数据操作。 4.了解SQL Server的常用数据类型。 二、实验内容 1.启动SQL Server管理平台,在对象资源管理器中展开“studentsdb数据库文件夹。 2.在studentsdb数据库中创建数据表《学生表》、《课程表》、《成绩表》,数据结 构如图3-1、图3-2和图3-3所示。 图3-1 学生表 图3-2 课程表

图3-3 成绩表3.在SQL Server管理平台中创建《学生表》、《课程表》。 4.在SQL Server管理平台中,将《学生表》的学号列设置为主键,非空。 5.使用Transact-SQ语句CREATE TABLE在studentsdb数据库中创建《成绩表》。 6.《学生表》、《课程表》、《成绩表》中的数据如图3-4、图3-5和图3-6所示。 7.在SQL Server管理平台中为《学生表》、《课程表》、《成绩表》添加数据。

(注意:在添加数据是必须逐行输入,否则系统将会报错,显示“出错信息为:键列信息不足或不正确。更新影响到多行”,产生原因是由于相同记录所造成)。 8.使用Transact-SQL语句INSERT NTTO …VALUES向studentsdb数据库的《成绩表》插入以下数据: 学号课程编号成绩 0004 0001 80

数据库-SQL语言的实验

北华航天工业学院《数据库原理与应用》 实验报告 报告题目:SQL语言 作者所在系部:计算机系 作者所在专业:网络工程 作者学号:20114052233 作者姓名: 张旭刚 指导教师姓名:李建义 完成时间:20134.24 北华航天工业学院教务处制

SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQLServer2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验内容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和姓名命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号、课程名、先修课、学分 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号、类别名称 图书信息表(tb_book)——图书编号、类别编号、书名、作者、出版社、定价、库存数 读者信息表(tb_reader)——读者编号、姓名、性别、学号、班级、系部 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期、归还日期 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的姓名字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计 根据周围的实际应用情况,自选一个小型的数据库应用项目进行研究,完成该系统的设计。要求2人一组,通过需求分析,列出系统的主要功能,并完成该系统数据库的逻辑结构设计。例如可选择学籍管理系统、企业进销存管理系统、人事管理系统或在线考试系统等。

SQL数据库实验报告 实验二

实验2 SQL Server数据库的管理 1.实验目的 (1)了解SQL Server 数据库的逻辑结构和物理结构的特点。 (2)掌握使用SQL Server管理平台对数据库进行管理的方法。 (3)掌握使用Transact-SQL语句对数据库进行管理的方法。 2.实验内容及步骤 (1)在SQL Server管理平台中创建数据库。 ①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。 ②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。 (2)选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文件组”、“选项”、“权限”和“扩展属性”等页面。 (3)打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。 (4)单击“新建查询”打开查询设计器窗口,在查询设计器窗口中使用Transact-SQL 语句CREATE DA TABASE创建studb数据库。然后通过系统存储过程sp_helpdb查看系统中的数据库信息。 (5)在查询设计器中使用Transact-SQL语句ALTER DATABASE修改studb数据库的设置,指定数据文件大小为5MB,最大文件大小为20MB,自动递增大小为1MB。 (6)在查询设计器中为studb数据库增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。 (7)使用SQL Server管理平台将studb数据库的名称更改为student_db。 (8)使用Transact-SQL语句DROP DATABASE删除student_db数据库。 3.实验思考 (1)数据库中的日志文件是否属于某个文件组? (2)数据库中的主数据文件一定属于主文件组吗? (3)数据文件和日志文件可以在同一个文件组吗?为什么? (4)删除了数据库,其数据文件和日志文件是否已经删除?是否任何人都可以删除数据库? (5)能够删除系统数据库吗?

数据库实验四(含答案)

实验四使用SQL语句创建和删除数据库、表 一. 实验目的: 1、了解SQL Server 2005数据库的逻辑结构和物理结构。 2、掌握使用SQL 语句创建和删除数据库。 3、学会使用T-SQL语句创建表。 二. 实验准备 1.明确能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 2.了解用SQL语句创建和删除数据库的基本语法。 3.是用查询分析器,完成用SQL语句创建和删除基本表。 三. 实验要求 1、熟练使用查询分析器进行数据库的创建和删除操作。 2、用查询分析器,完成用SQL语句创建和删除基本表。 3、完成实验报告。 四. 实验内容 一、数据库 1.以下是创建数据库userdb1的SQL语句, create database userdb1 on (name=userdb4_data,--数据文件的逻辑名称,注意不能与日志逻辑同名 filename='g:\xygl\userdb4.mdf' ,--物理名称,注意路径必须存在 size=5,--数据初始长度为5M maxsize=10,--最大长度为10M filegrowth=1)--数据文件每次增长1M log on ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 , filegrowth=1) 运行上诉语句建立数据库userdb1

句,并建立“学生信息”数据库.(.mdf的名字可以修改) 3.数据库的修改(alter database 数据库名add file),将一个大小为10MB 的数据文件mrkj添加到userdb1的数据库中,该数据文件的大小为10MB,最大的文件大小为100MB,增长速度为2MB,物理地址与原有的mdf,ldf文件放在一起。 alter database 数据库名 add file() 注括号内格式同下: ( name=userdb4_log, filename='g:\xygl\userdb4.ldf ' , size=2 , maxsize=5 ,

数据库SQL语句实验报告

《数据库原理及应用》实验报告 SQL语句部分 总成绩:

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 3.创建课程关系表C : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 create database Studend; create table S ( Sno CHAR(9)PRIMARY KEY, Sname CHAR(20)UNIQUE, Ssex CHAR(2), Sage smallint, Sdept char(20), );

3.创建课程关系表C : 课程号课程名先行课学分 Cno Cname Cpno ccredit create table C ( Cno char(4)primary key, Cname CHAR(40), Cpno char(4), Ccredit SMALLINT, ); 4.创建课程关系表SC : 学号课程号成绩 Sno Cno grade create table SC ( Sno char(9), Cno char(4), Grade smallint, ); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 alter table S add Sbirthday datetime; 7、删除表S的“年龄”属性列。 alter table S drop column Sage;

SQL Server数据库及表的建立 实验要求和截图记录

实验一 SQL Server数据库及表的建立 1. 按下面要求创建一个名为companyinfo的数据库: 主要数据文件:逻辑文件名为companyinfo_data1,实际文件名为companyinfo_data1.mdf;初始容量为1MB,最大容量为10MB,递增量为1MB。 次要数据文件:逻辑文件名为companyinfo_data2,实际文件名为companyinfo_data2.mdf;初始容量为1MB,最大容量为10MB,递增量为1MB。 事务日志文件:逻辑文件名为companyinfo_log,实际文件名为companyinfo_log.ldf;初始容量为1MB,最大容量为10MB,递增量为1MB。 2. 在companyinfo数据库中创建名为“category”的类别表,名为“product”的产品信息表,名为“employee”的雇员表,名为“customer”的客户表和名为“p_order”的订单表。 类别表(以类别ID为主键) 产品信息表(以产品ID为主键,类别ID是与类别表的类别ID相联系的外键) 雇员表(以雇员ID为主键,且薪水不得低于1000元) 客户表(以客户ID为主键)

订单表(以订单ID为主键,产品ID,雇员ID,客户ID均为外键,分别与产品信息表、雇员表和客户表的主键相联系) 3.利用企业管理器和T-SQL语句分别实现上面的操作。 实验操作过程截图记录如下: 实验一 SQL Server数据库及表的建立 1,按要求创建一个名为companyinfo的数据库: 利用企业管理器创建:

2,在companyinfo数据库中创建名为“category”的类别表,名为“product”的产品信息表,名为“employee”的雇员表,名为“customer”的客户表和名为“p_order”的订单表。 类别表 产品信息表

数据库sqlserver实验报告

实验一熟悉常用的 DBMS:SQL SERVER2008、Oracle 试验内容及要求: (1)了解不同数据库管理系统及不同版本的相应功能特点 目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟。面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品。国际国内的主导关系型数据库管理系统有Oracle、Sybase、INFORMIX和INGRES。这些产品都支持多平台,如UNIX、VMS、Windows,但支持的程度不一样。IBM的DB2也是成熟的关系型数据库。但是,DB2是内嵌于IBM的AS/400系列机中,只支持OS/400操作系统。 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,它是一家使用了一种成功的商业模式来结合开源价值和方法论的第二代开源公司。MySQL是MySQL AB的注册商标。 MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。与其他数据库管理系统相比,MySQL具有以下优势: (1)MySQL是一个关系数据库管理系统。 (2)MySQL是开源的。 (3)MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器。 (4)MySQL服务器工作在客户/服务器或嵌入系统中。 (5)有大量的MySQL软件可以使用。 2.SQL Server SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。 目前最新版本是SQL Server2005,它只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。 SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,

北邮数据库实验二用SQL Server实现数据库设计

实验二用SQL Server实现数据库设计 实验目的: 1.掌握使用企业管理器创建和管理SQL Server数据库及相关数据库对象。 2.掌握使用SQL语言中的SELECT命令实现查询功能。 上机准备: 1.复习有关关系数据库的基本知识和概念; 2.复习有关SQL语言中SELECT命令的使用; 3.了解有关SQL Server系统的组成; 4.复习有关SQL Server服务器的使用和管理; 5.复习有关企业管理器的基本操作; 6.复习有关查询分析器的基本操作; 7.了解有关SQL Server服务器的登陆账号,密码; 实验内容: 本实验将建立一个学校教学管理数据库,在这个数据库中,存储以下信息: 1.有关学生的信息,包括学生的学号,姓名,班级,性别,出生时间,政治面貌,籍贯,入学时间,联系电话,简历; Student(Sno,Sname, Ssex,Classno,Sbirth,Status,Hometown,Enrollment,Telephone,Resume) 2.有关班级的信息,包括班级的班名,专业,年级,人数,班主任; SClass(ClassNo,ClassName,Major,Grade,Number,Advisor)

3.有关课程的信息,包括课程编号,课程名称,课程类别(是指该课程为必修,指选还是任选),适用专业,适用年级,开课时间(是指在每个学年的第一学期,还是第二学期),学分,周学时; Course(CourseNo,CourseName,Category,Major,Grade,StartTM,Credits, WeekHours) 4.有关学年课程安排的信息,包括课程编号,开设课程的学年(例如:2002学年),开设课程的班级,任课教师; Schedule(CourseNo,StartYear,ClassNo,Teacher)

(完整word版)SQL创建数据库实验

(1)创建一个jwglxt数据库,主数据文件逻辑名为jwglxt_data,物理文件名为 jwglxt_data.mdf,初始大小为10M,最大尺寸为无限大,增长速度为1M,日志文件得逻辑名为jwglxt_log,物理文件名为jwglxt_log.ldf,初始大小为1M,最大尺寸为5M,增长速度为1M. (1.1)图形化方法创建数据库

T-SQL语句和结果截图 (2)创建一个有三个文件组primary,my_dbfg1,my_dbfg2,一个事务日志文件mylog的数据库,数据库名为hfy。 Primary文件组包含数据文件my1,初始大小为10M,最大尺寸为50M,增长速度为15%, my_dbfg1文件组包含数据文件my2,初始大小为10M,最大尺寸为50M,增长速度为5M, my_dbfg2文件组包含数据文件my3,初始大小为10M,最大尺寸为50M,增长速度为5M, 日志文件得逻辑名 为mylog,初始大小为1M,最大尺寸为5M,增长速度为1M. CREATE DATABASE hfy

ON PRIMARY(NAME='my1', FILENAME='d:\my1.mdf', SIZE=10MB, MAXSIZE=50MB,FILEGROWTH=15% ), FILEGROUP my_dbfg1(NAME='my2', FILENAME='d:\my2.ndf', SIZE=10MB, FILEGROWTH=5MB, MAXSIZE=50MB), FILEGROUP my_dbfg2(NAME='my3', FILENAME='d:\my3.ndf', SIZE=10MB, FILEGROWTH=5MB, MAXSIZE=50MB) LOG ON (NAME='mylog', FILENAME='d:\mylog.ldf', SIZE=10MB, FILEGROWTH=5MB, MAXSIZE=50MB) GO

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

数据库实验六 Transact-SQL程序设计

南昌大学实验报告 ---实验六Transact-SQL程序设计学生姓名:丁金芝学号:6100511080 专业班级:管理科学与工程类112班实验类型:■验证□综合□设计□创新实验日期:实验成绩:_____ 一、实验目的 (1)掌握Transact-SQL的数据类型、常量变量、表达式等的概念和使用方法。 (2)掌握程序中注释的基本概念和使用方法。 (3)掌握程序中的流程控制语句的使用方法。 (4)掌握SQL Server 2005中常用函数的用法。 (5)掌握游标的概念和声明方法,以及使用游标进行数据的查询、修改、删除操作等。 二、实验内容与结果 (1)选择学生情况数据库,输入以下T-SQL代码。 DECLARE @stu_name varchar(10) SELECT @stu_name=姓名 FROM 学生 WHERE 姓名LIKE '张%' SELECT @stu_name 观察显示的结果,与学生表中数据进行比较,@stu_name赋值的是SELECT 结果集中的哪个数据?

(2)定义int型局部变量@grademax、@grademin、@gradesum,在学期成绩中查找最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。 (3)使用SET命令将某个查询结果集记录数目赋值给int型局部变量@row。

(4)以下代码在课程注册表中插入新记录: DECLARE @intCId int,@intErrorCode int INSERT INTO 课程注册(课程编号,课程名称,学分) V ALUES('0006','VB程序设计',2) SELECT @intCId=@@identity,@intErrorCode=@@error SELECT @intCId,@intErrorCode 将该代码段连续执行两次,观察两次显示的信息及课程注册表中数据的变化,为什么前后两次执行时显示的信息会不同? (5)在学生情况数据库的学生表中,以“性别”为分组条件,分别统计 男生和女生人数。 (6)在学期成绩中,使用适当函数找出“高等数学”课程的最高分、最 低分和平均分。 (7)定义一个datetime型局部变量@studate,以存储当前日期。计算学生 表中的学生的年龄,并显示学生的姓名、年龄。 (8)运行以下代码,写出运行结果。 DECLARE @a int,@b int SET @a=168 SET @b=73 SELECT@a&@b,@a|@b,@a^@b

数据库 实验报告5 ESQL

实验内容: 编写嵌入式C 程序,编程实现了对“学生课程数据库”的访问和操作:对Student 表中的年龄进行更新。系统每输出一个学生记录,询问用户是否更新。如果要更新,就输入新的年龄。 一. 实验环境介绍。 实验五是在之前完成的实验一的基础上进行的。 系统配置为:CPU: P3 800 内存:512MB 硬盘:30G 软件系统:WINDOWS 2000 ADV ANCED SERVER 。 在实验一中,我们已经成功安装了KingbaseES V4.1,形成本实验所需要的环境。其中安装路径为C:\Program Files 目录下。 二.编写含嵌入式C 程序test ,扩展名为.pc 。 EXEC SQL BEGIN DECLARE SECTION; /*说明主变量deptname ,HSno ,HSname , char deptname[20]; *HSsex ,HSage ,NEWAGE 。*/ char HSno[9]; char HSname[20]; char HSsex[2]; int HSage; int NEWAGE; EXEC SQL END DECLARE SECTION; /*声明部分结束*/ long SQLCODE; EXEC SQL INCLUDE sqlca; /*定义SQL 通信区*/ int main(void) { int count = 0; char yn; /*变量yn 代表yes 或者no*/ printf("Please choose the department name(CS/MA/IS): "); /*为主变量deptname 赋值*/ scanf("%s", &deptname); EXEC SQL CONNECT TO 学生课程数据库@localhost:54321 USER "SYSTEM"/"MANAGER"; /*连接数据库TEST*/ EXEC SQL DECLARE SX CURSOR FOR /*说明游标,为查询和更新做准备*/ SELECT Sno, Sname, Ssex, Sage FROM Student WHERE SDept = :deptname; EXEC SQL OPEN SX; /*打开游标。*/ for ( ; ; ) /*用循环结构逐条处理结果集的记录*/ { 《数据库系统概论》实验报告 题目:实验五 通过嵌入式SQL 访问数据库 姓名 Vivian 日期 2006-1-1

SQL-SERVER数据库实验报告(详细)

数据库原理及应用实验报告 学号:姓名: 实验1 一、实验目的: 熟悉SQL Server使用界面,掌握使用SSMS和SQL语句创建并设置数据库。 二、实验原理: 1.使用SSMS创建数据库 2.创建数据库语句: CREATE DATABASE 数据库名 [ON [PRIMARY] //指定一个文件为主要文件 [<文件格式>[,…n]] [,<文件组格式>[,…n]] ] [LOG ON {<文件格式>[,…n]}] <文件格式>::= ([NAME=逻辑文件名,] FILENAME=‘操作系统下的文件名和路径’ [,SIZE=文件初始容量] [,MAXSIZE={文件最大容量|UNLIMITED}] [,FILEGROWTH=递增值])[,…n] <文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n] 3.修改数据库语句: ALTER DATABASE 数据库名 {ADD FILE <文件格式>[,…n] [TO FILEGROUP 文件组名] |ADD LOG FILE<文件格式>[,…n] |REMOVE FILE 逻辑文件名 |ADD FILEGROUP 文件组名 |REMOVE FILEGROUP 文件组名 |MODIFY FILE<文件格式> |MODIFY FILEGROUP 文件组名文件组属性} ::= (NAME=逻辑文件名 [,FILENAME=‘实际文件名和路径’] [,SIZE=容量] [,MAXSIZE={最大容量|UNLIMITED}] [,FILEGROWTH=递增量]) 三、实验内容: 1. 使用SQL语句完成下题 (1)使用CREATE DATABASE语句创建一个名为“st”数据库,要求①主要数据文件:逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:逻 辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最 大容量均为10MB,递增量均为1MB。

数据库SQL实验操作答案

1、 创建数据库: 创建一个教学管理数据库,以自己的名字拼音首字母+下划线+SC 作为库名(如名字叫张三,则:ZC_SC ), (1)确定数据库名称;数据库用于学生管理,命名为如ZS_SC (2)确定数据库的位置;要求:数据文件和日志文件分别存储在E 盘自己的目录下。 (3)确定数据库的大小;根据实际的数据量确定数据文件的初始大小为30MB ,日志文件的初始大小为3MB 。 (4)确定数据库的增长;根据实际情况,确定数据文件按20%增长,日志文件按1MB 增长。 请利用查询分析器(Query Analyzer ),使用SQL 语句指定参数创建数据库,给出实现代码和截图。 2 、 创建基本表:(注意:请在表名前加上自己的姓名拼音的首字母,主键前加上自己的姓 名拼音的首字母,例如张三为ZC_) 其描述的信息有:学生信息、课程信息、教师信息、学生选课成绩、授课信息、班级信息、系部信息、专业信息。 创建:student 表(学生信息表)、course 表(课程信息表)、teacher 表(教师信息表)、student _course 表(学生选课成绩表)、teacher_course 表(教师上课课表)等。 请利用查询分析器,使用SQL 语句将下面各表建立到教学管理数据库中。写出SQL 语句(注意级联删除设置),查看各数据表之间的关系,画出实体关系图(ER 图)。

( cyrs_no char(8)primary key, sname char(8)not null, sex char(2), sbirthday smalldatetime, dno char(6), spno char(8), class_no char(4), foreign key(dno)references cyr_department(cyr_dno), foreign key(spno)references cyr_speciality(cyr_spno) ) (2)创建Course表 ( cyr_cno char(10)primary key, cname char(20)not null, spno char(8), ctno tinyint, lecture tinyint, experiment tinyint, semester tinyint, credit tinyint, foreign key(spno)references cyr_speciality(cyr_spno) )

数据库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也设置为外键。

sql数据库实验报告

数据库设计与管理 实验报告 班级:120506 学号:XXXXXXXX 姓名:XXX

实验一 一、实验目的 1.了解SQL Server 2000中数据库的组成; 2.熟练创建、管理数据库和事务日志。 3.熟练掌握创建、修改和删除表的方法; 4.掌握向表中添加记录、修改记录及删除记录的方法; 二、实验内容 1.在D盘或E盘建立以学生名命名的文件夹,如图1所示。 在E盘建立文件夹 2.分别使用企业管理器、CREATE DATABASE命令两种方法创建数据库和事务日志。要求如下: 数据库名字为S ale;数据文件初始大小为3MB,最大为10MB,文件增量为1MB;事务日志初始大小为2MB,最大为15MB,文件增量为1MB。 用企业管理器创建数据库创建数据文件 创建事务日志

CREATE DA TABASE创建数据库和事务日志 3.向Sale中添加数据文件、日志文件(要求与上同);CREATE DATABASE Sale 添加数据文件添加日志文件 4.向Sale中添加新文件组,向新文件组中添加一个数据文件(要求与上同);

向Sale中添加新文件组向文件组中添加数据文件5.删除后添加的数据文件、日志文件及文件组; 删除添加的数据文件删除添加的日志文件

删除文件组 6.分别使用企业管理器及CREATE TABLE 在S ale数据库中创建如下表: 客户表(Customer) 产品表(P roduct) 入库表(ProIn)销售表(ProOut) 7.在企业管理器中给Customer、P roduct、ProOut表中输入记录,并练习记录的修改及删除

相关文档
相关文档 最新文档