- 1
- 0
- 约3.06千字
- 约 8页
- 2019-10-24 发布于山西
- 举报
PAGE
PAGE 1
班级: 软英093 姓名: 周娟娟
班级: 软英093 姓名: 周娟娟 学号: 0903293214
三年制09级软件技术专业
《SQL Server数据库程序设计》阶段测试(A)
2010年11月
请根据要求写出T-SQL指令执行,所写的T-SQL指令必须符合编程规范,否则酌情扣除总分5~20分。并把执行后的代码窗口和结果窗口截图粘贴在各个题目下方,完成后另存文件为“学号+姓名.doc”上交(共100分,测试时间:100分钟)
提示:已知,在StuScores数据库中有11张表,表结构说明见文件“StuScores说明.doc”
1)在D盘根目录下新建一个名为“sqltest”的文件夹,把文件“StuScorbak ”和文件“StuScores说明.doc”拷贝至该文件夹,使用T-sql命令还原数据库“StuScores”,在还原之前需要判断是否已经存在“StuScores”数据库,如果存在则需要删除再还原。(6分)
2)在StuScores数据库中创建一张临时学生信息表,表名为:TempForStudents,表结构如下:
TempForStudents(临时学生信息表)
字段名
数据类型
描述
StudentId
char(10)
学号,主键
StudentName
nvarchar(10)
学生姓名
Gender
char(2)
性别
DateOfBirth
smalldatetime
出生日期
ContactPhone
varchar(15)
联系电话
ClassId
char(10)
班级编号
MonitorId
char(10)
班长编号
RegisterTime
smalldatetime
注册时间
将Students表中学号为“0803083101~ 0803083136”学生所有信息导入到TempForStudents表中,并显示TempForStudents表中所有数据内容。(9
3)为TempForStudents表添加两个新字段,一个字段名为Age,数据类型为tinyint,可空。另一个字段名为Email,数据类型为varchar(50),可空。为学号为“0803083103”的同学更新出生日期为“1990.5.16”,再更新他的年龄,年龄应当为系统当前年份减去他的生日年份计算所得到。提示:用到的系统函数为GETDATE(),YEAR()和CONVERT()三个函数,具体语法请参照联机帮助。并显示学号为“0803083103”的同学的学号、姓名、出生日期和年龄的信息,注意要求使用中文别名显示。
4)为TempForStudents表的Email字段添加一个约束,约束名为CK_StudentEmail,EMAIL 的内容必须包含’@’,且@前后必须至少有一个字符。以自己的个人信息为例,先输入一条违反该约束的数据测试该约束的有效性,再输入一条合法的数据验证。注意,由于班级编号(ClassId)必须有效,所以必须先查询Classes表获得自己的班级编号(使用模糊查询,比如软日091班级的同学只知道自己班级名称里包含“软”、“日”、“091”这些信息,而顺序也并不知道,同样软英093班级的同学只知道自己班级名称里包含“软”、“英”、“093”这些信息,而顺序也不知道),然后查询得到具体的班级编号后,再在TempForStudents表中录入自己的个人信息。(
5)修改班级信息表Classes,将Grade字段的数据类型修改为tinyint型,并添加一个CHECK约束,约束名为CK_ClassGrade,年级列只能输入1、2或3。同时分析,为什么这个约束不能创建成功,如果要使该约束创建成功并不修改表中原有数据,该如何做?(9分)
6)查询Classes表中的数据信息,可以注意到有些年级是错误的,现在先学习一个字符串函数CHARINDEX()的用法:
CHARINDEX()返回字符串中某个指定的子串出现的开始位置。CHARINDEX (’substring_expression’, expression)其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。此函数不能用于TEXT 和IMAGE 数据类型。
下面请利用CHARINDEX()函数修改Classes表中的Grade字段,即:班级名称中包含“081”的年级改为“3”;班级名称中包含“091”的年级改为“2”;班级名称中包含“10”的年级改为“1”。修改完毕后显现修改后的C
原创力文档

文档评论(0)