admin管理员组

文章数量:1531430

2024年5月9日发(作者:)

实验1 SQL Server数据库的管理

【实验目的】

(1)了解SQL Server 数据库的逻辑结构和物理结构的特点。

(2)掌握使用SQL Server管理平台对数据库进行管理的方法。

(3)掌握使用T-SQL语句对数据库进行管理的方法。

【实验过程】

(1)在SQL Server管理平台中创建数据库。

操作方法:

①运行SQL Server管理平台,在管理平台的对象资源管理器中展开服务器。

②右击“数据库”项,在快捷菜单中选择“新建数据库”菜单项。在新建数据库

对话框的数据库名称文本框中输入学生管理数据库名studentsdb,单击“确定”按钮。

(2)查看studentsdb数据库的相关属性。

操作方法:

选择studentsdb数据库,在其快捷菜单中选择“属性”菜单项,查看“常规”、“文件”、“文

件组”、“选项”、“权限”和“扩展属性”等页面。

(3)修改studentsdb数据库的数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为

5MB。修改studentsdb数据库的日志文件的大小在每次填满时自动递增5%。

操作方法:

打开studentsdb数据库的“属性”对话框,在“文件”选项卡中的数据库文件列表中修改

studentsdb数据文件的“分配的空间”大小为2MB。指定“最大文件大小”为5MB。修改studentsdb

数据库的日志文件的大小在每次填满时自动递增5%。

(4)完成以下操作:

①使用T-SQL语句创建studb数据库,并通过系统存储过程查看系统中的数据库信息;

②使用T-SQL语句修改studb数据库的设置:指定数据文件大小为5MB,最大文件大小为20MB,

自动递增大小为1MB:

③增加一个日志文件,命名为studb_Log2,大小为5MB,最大文件大小为10MB。

④将studb数据库的名称更改为student_db。

⑤使用T-SQL语句DROP DATABASE删除student_db数据库。

⑥删除studentsdb数据库。

操作方法:

单击“新建查询”打开查询设计器窗口,在查询设计器窗口中输入:(以下内容由学生自己实

现)

实验2 SQL Server数据表的管理

【实验目的】

(1)掌握创建和修改表的方法。

(2)掌握对表进行插入、修改和删除数据操作的方法。

(3)了解SQL Server的常用数据类型。

【实验过程】

在SQL Server中已有studentsdb数据库,按以下要求对该数据库进行操作:

【具体实现由学生自行填写】

(1)使用T-SQL语句创建grade表。

(2)使用T-SQL语句向grade表插入数据:学号为0004,课程编号为0001,分数为80。

(3)使用T-SQL语句修改grade表的“分数”列,使其数据类型为real。

(5)使用T-SQL语句修改student表的“姓名”列,使其列名为“学生姓名”,数据类型为

varchar(10),非空。

(6)使用T-SQL语句删除studentsdb数据库的grade表中学号为0004的成绩记录。

(7)使用T-SQL语句修改grade表中学号为0003、课程编号为0005、分数为90的记录。

(8)使用T-SQL语句为grade表添加一个名为“备注”的数据列,其数据类型为VARCHAR(20)。

(9)分别使用SQL Server管理平台和T-SQL语句删除grade表。

实验3 数据查询(四次课)

【实验目的】

(1)掌握使用SELECT语句进行查询的方法。

(2)掌握嵌套查询、连接查询的方法。

【实验过程】

【(1)—(2)在一张实验报告上,(3)—(6)在一张实验报告上,(7)在一张实验报告上】

(1)在studentsdb数据库中使用SELECT语句进行基本查询。

① 在student表中,查询每个学生的学号、姓名、出生日期信息。

② 查询学号为0002 的学生的姓名和家庭住址。

③ 找出所有男同学的学号和姓名。

(2)使用SELECT语句进行条件查询。

① 在grade表中查找分数在80~90范围内的学生的学号和分数。

② 在grade表中查询课程编号为0003的学生的平均分。

③ 在grade表中查询学习各门课程的人数。

④ 将学生按出生日期由大到小排序。

⑤ 查询所有姓“张”的学生的学号和姓名。

(3)对student表,按性别顺序列出学生的学号、姓名、性别、出生日期及家庭住址,性别相同的

按学号由小到大排序。

(4)使用GROUP BY查询子句列出各个学生的平均成绩。

(5)使用UNION运算符将student表中姓“张”的学生的学号、姓名与course表的课程编号、课

程名称返回在一个表中,且列名为u_编号、u_名称。

(6)嵌套查询。

① 在student表中查找与“刘卫平”性别相同的所有学生的姓名、出生日期。

② 使用IN子查询查找所修课程编号为0002、0005的学生学号、姓名、性别。

③ 列出学号为0001的学生的分数比0002号的学生的最低分数高的课程编号和分数。

④ 列出学号为0001的学生分数比学号为0002的学生的最高成绩还高的课程编号和分数。

(7)连接查询。

① 查询分数在80~90范围内的学生的学号、姓名、分数。

② 查询学习“C语言程序设计”课程的学生的学号、姓名、分数。

③ 查询所有男同学的选课情况,要求列出学号、姓名、课程名称、分数。

④ 查询每个学生的所选课程的最高成绩,要求列出学号、姓名、课程编号、分数。

⑤ 查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的学生的总成绩为空。

⑥ 为grade表添加数据行:学号为0004、课程编号为0006、分数为76。查询所有课程的选修情

况,要求列出课程编号、课程名称、选修人数,course表中没有的课程列值为空。

实验4 索引和视图

【实验目的】

(1)掌握创建、查看、删除索引的方法。

(2)掌握创建、修改、删除视图的方法

(3)了解索引和视图更名的系统存储过程sp_rename的用法。

【实验过程】

(1)分别使用SQL Server管理平台和语句为grade表的“分数”字段创建一个非聚集索引,命名

为grade_index。

(2)为grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。

(3)使用系统存储过程sp_helpindex查看grade表和student表上的索引信息。

(4)使用系统存储过程sp_rename将索引grade_index更名为grade_ind。

(5)使用T-SQL语句删除索引grade_ind。

(6)使用T-SQL语句建立一个名为v_stu_c的视图,显示学生的学号、姓名、所学课程的课程编号,

并利用视图查询学号为0003的学生情况。

(7)基于student表、course表和grade表,建立一个名为v_stu_g的视图,视图中具有所有学

生的学号、姓名、课程名称、分数。使用v_stu_g查询学号为0001的学生的所有课程与成绩。

(8)利用视图v_stu_g修改姓名为刘卫平的学生的高等数学的分数为84。

(9)使用T-SQL语句DROP VIEW删除视图v_stu_c。

实验5 数据完整性

【实验目的】

(1)掌握T-SQL语句创建和删除规则的方法。

(2)掌握绑定和解除绑定规则的操作方法,以及查询规则信息、更名规则的方法。

(3)掌握T-SQL语句创建和删除默认对象的方法。

(4)掌握绑定和解除绑定默认对象的操作方法,以及查询默认对象信息。

(5)掌握定义和删除约束的方法,并了解约束的类型。

【实验过程】

1.创建一个规则stusex_rule,将其绑定到stu_phone表的“性别”列上,保证输入的性别值只

能是“男”或“女”。

2.分别使用系统存储过程查询stusex_rule规则列表、规则的文本,并将规则更名为stu_s_rule。

3.删除stu_s_rule规则。

4.在studentsdb数据库中用T-SQL语句创建表stu_con,并同时创建约束。

(1)创建表的同时创建约束。表结构如图6-1所示。

图6-1 要创建的表的结构

约束要求如下:

①将学号设置为主键(PRIMARY KEY),主键名为pk_sid。

②为姓名添加唯一约束(UNIQUE),约束名为uk_name。

③为性别添加默认约束(DEFAULT),默认名称为df_sex,其值为“男”。

④为出生日期添加属性值约束(CHECK),约束名为ck_bday,其检查条件为:

出生日期>'1988-1-1'。

(2)使用ALTER TABLE语句的DROP CONSTRAINT参数项在查询设计器中删除为stu_con表所建约

束。

5.在查询设计器中,为grade表添加外键约束(FOREIGN KEY),要求将“学号”设置为外键,参

照表为student,外键名称为fk_sid。

实验6 存储过程和触发器(两次课)

【实验目的】

(1)掌握存储过程的创建、执行、修改和删除的方法。

(2)掌握创建、修改和删除触发器的方法和步骤。

(3)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。

【实验过程】

【1-3写在一张实验报告上,4-7写在一张实验报告上】

1.创建一个存储过程letters_print,使其能够显示26个小写字母。建立后怎样查看是否有该

存储过程?如果有,如何执行它?

2.使用studentsdb数据库中的student表、course表、grade表。

(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。

(2)执行存储过程stu_grade,查询0001学生的姓名、课程名称、分数。

(3)使用系统存储过程sp_rename将存储过程stu_grade更名为stu_g。

3.使用student表。

(1)创建一个加密的存储过程stu_en,查询所有男学生的信息。

(2)执行存储过程stu_en,查看返回学生的情况。

(3)使用T-SQL语句DROP PROCEDURE删除存储过程stu_en。

4.为grade表建立一个名为insert_g_tr 的INSERT触发器,当用户向grade表中插入记录时,

如果插入的是在course表中没有的课程编号,则提示用户不能插入记录,否则提示记录插入

成功。在进行插入测试时,分别输入以下数据:

学号 课程编号 分数

0004 0003 76

0005 0007 69

观察插入数据时的运行情况,说明为什么?

5.为student表创建一个名为update_s_tr的UPDATE触发器,该触发器的作用是禁止更新student

表中的“姓名”字段的内容。

6.使用T-SQL语句DROP TRIGGER删除update_s_tr触发器。

7.为student表建立删除触发器del_s_tr,要求当student表的记录被删除后,grade表中相应

的记录也能自动删除。

本文标签: 学生数据库查询语句姓名