实验一 数据定义操作
● 实验目的
1. 掌握数据库和表的基础知识
2. 掌握使用创建数据库和表的方法
3. 掌握数据库和表的修改、查看、删除等基本操作方法
● 实验内容和要求
一、数据库的创建
在开始菜单中,启动SQl Server 程序中的“SQL Server Management Studio”,在对象资源管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,要求如下表所示:
Grademanager数据库参数表
参数 | 参数值 | 参数 | 参数值 |
存储的数据文件路径 | D:\db\grademanager_data.mdf | 存储的日志文件路径 | D:\db\grademanager_log.ldf |
数据文件初始大小 | 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也设置为外键。
图2为SC表设置外键Cno
2.向上述表中输入如下数据记录
学生关系表Student (右键单击表Student,选择“编辑前200行”)
Sno | Sname | Ssex | Sbirthday | Sdept | Speciality |
20050101 | 李勇 | 男 | 1987-01-12 | 计算机系 | 计算机应用 |
20050201 | 刘晨 | 女 | 1988-06-04 | 信息管理系 | 电子商务 |
20050301 | 王敏 | 女 | 1989-12-23 | 数学系 | 数学 |
20050202 | 张立 | 男 | 1988-08-25 | 信息管理系 | 电子商务 |
Sno | Cno | Degree |
20050101 | C01 | 92 |
20050101 | C02 | 85 |
20050101 | update是什么C03 | 88 |
20050201 | C02 | 90 |
20050201 | C03 | 80 |
20050301 | C01 | 91 |
20050301 | C02 | 75 |
20050202 | C01 | 87 |
课程关系表Course 成绩表SC
Cno | Cname |
C01 | 数据库 |
C02 | 数学 |
C03 | 信息系统 |
C04 | 操作系统 |
3.修改表结构(到操作的方法即可,不需要真正地修改表中的属性)
(1)向student表中增加“入学时间”列,其数据类型为日期型
(2)将student表中的sdept字段长度改为20
(3)将student表中的Speciality字段删除
● 思考题
1. SQL Server的数据库文件有几种?扩展名分别是什么?
2. 如何实现数据库的备份和还原?
2.在定义基本表语句时,NOT NULL参数的作用是什么?
3.主码可以建立在“值可以为NULL”的列上吗?
实验二 简单查询
● 实验目的
1. 掌握SELECT语句的基本用法
2. 使用WHERE子句进行有条件的查询
3. 掌握使用IN和NOT IN,BETWEEN…AND和NOT BETWEEN…AND来缩小查询范围的方法
4. 掌握聚集函数的使用方法
5. 利用LIKE子句实现字符串匹配查询
6. 利用ORDER BY子句对查询结果排序
7. 利用GROUP BY子句对查询结果分组
● 实验内容和要求
一、表结构修改
1.在实验一的所建立的数据库中增加Teacher表,结构如下:
字段名称 | 数据类型 | 长度 | 精度 | 小数位数 | 是否允许Null值 | 说明 |
Tno | Char | 3 | 0 | 0 | 否 | 教师号,主码 |
Tname | Varchar | 8 | 0 | 0 | 是 | 教师名 |
Tsex | Char | 2 | 0 | 0 | 是 | 性别,取值:男或女 |
Tbirthday | Date | 8 | 0 | 0 | 是 | 出生日期 |
Tdept | Char | 16 | 0 | 0 | 是 | 所在系 |
2.在实验一的所建立的数据库中增加Teaching表,表结构如下:
Teaching表(授课表)的表结构
字段名称 | 数据类型 | 长度 | 精度 | 小数位数 | 是否允许Null值 | 说明 |
Cno | Char | 5 | 0 | 0 | 否 | 课程号,外码 |
Tno | Char | 3 | 0 | 0 | 否 | 教师号,外码 |
Cterm | Tinyint | 1 | 0 | 0 | 是 | 1-8之间 |
3.向上述两表中输入如下数据记录
Cno | Tno | Cterm |
C01 | 101 | 2 |
C02 | 102 | 1 |
C03 | 201 | 3 |
C04 | 202 | 4 |
教师表Teacher 授课表Teaching
Tno | Tname | Tsex | Tbirthday | Tdept |
101 | 李新 | 男 | 1977-01-12 | 计算机系 |
102 | 钱军 | 女 | 1968-06-04 | 计算机系 |
201 | 王小花 | 女 | 1979-12-23 | 信息管理系 |
202 | 张小青 | 男 | 1968-08-25 | 信息管理系 |
二、完成下面查询
1.查询所有男生信息
2.查询年龄大于24岁的女生学号和姓名
3.查询所有教师的Tname、Tdept
4.查询“电子商务”专业的学生姓名、性别和出生日期
5.查询成绩低于90分的学生学号及课号,并按成绩降序排列
6.查询Student表中所有的系名
7.查询“C01”课程的开课学期
8.查询成绩在80分至90之间的学生学号及课号
9.统计有学生选修的课程门数
10.查询成绩为77,88或99的记录
11.计算“C02”课程的平均成绩
12.输出有成绩的学生学号
13.查询所有姓“刘”的学生信息
14.统计输出各系学生的人数
15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列
16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”
17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高分”
18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、“总成绩”,并按选课门数降序排列。
● 思考题
1.聚集函数能否直接使用在:SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中?
2.关键字ALL和DISTINCT有什么不同的含义?
3.SELECT语句中用于表示模糊查询的通配符有几种?含义分别是什么?
4.利用BETWEEN…AND表示的数据范围能否用其他方法表示?怎样表示?如:score between 80 and 90 还可以怎么表示?
实验三 复杂查询
● 实验目的
1. 掌握连接查询和嵌套查询操作
2. 能灵活应用SELECT语句解决复杂的查询问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论