数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx

上传人:b****8 文档编号:22427922 上传时间:2023-02-04 格式:DOCX 页数:27 大小:446.54KB
下载 相关 举报
数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx_第1页
第1页 / 共27页
数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx_第2页
第2页 / 共27页
数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx_第3页
第3页 / 共27页
数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx_第4页
第4页 / 共27页
数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx

《数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx》由会员分享,可在线阅读,更多相关《数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

数据库实验TransactSQL程序设计与 索引的创建和使用文档格式.docx

ANDT_COURSE.C_NAME='

高等数学'

SELECTT_SCORE.S_NUMBER,S_NAME,C_NAME,SCORE

FROMT_STUDENT,T_COURSE,T_SCORE

WHERET_STUDENT.S_NUMBER=T_SCORE.S_NUMBER

ANDT_SCORE.C_NUMBER=T_COURSE.C_NUMBER

AND(

SCORE=@MaxScore

OR

SCORE=@MinScore

5:

计算表达式的值,并将结果赋给变量@ExpResult。

DECLARE@ExpResultnumeric

SET@ExpResult=67%31

SELECT@ExpResultAS'

表达式计算结果'

6:

查询05541班的学生信息,要求列出的字段为:

班级、本班内的学号、姓名、性别、出生日期、政治面貌。

SELECT班级=SUBSTRING(S_NUMBER,1,5),

本班内的学号=SUBSTRING(S_NUMBER,6,7),

姓名=S_NAME,

性别=SEX,

出生日期=BIRTHDAY,

政治面貌=POLITY

WHERESUBSTRING(S_NUMBER,1,5)='

7:

使用比较运算符计算表达式的值。

DECLARE@Exp1integer,

@Exp2integer

SET@Exp1=30

SET@Exp2=50

IF@Exp1>

@Exp2

PRINT'

第1个变量的值大于第2个变量的值。

'

ELSEIF@Exp1=@Exp2

第1个变量的值等于第2个变量的值。

ELSE

第1个变量的值小于第2个变量的值。

8:

@Exp2integer

@Exp2AND@Exp1<

@Exp1>

@Exp2的结果值为真。

ELSE

@Exp2的结果值为假。

@Exp2OR@Exp1<

9:

使用字符串连接运算符计算表达式的值。

DECLARE@ExpResultchar(60)

SELECT@ExpResult='

湖北省武昌区'

+'

湖北大学'

数计学院'

字符串的连接结果'

10:

使用括号改变表达式的计算顺序。

湖北省武汉市'

DECLARE@ExpResultint

SELECT@ExpResult=100+(20-5)*2/3

计算结果'

11:

从STUDENT数据库中返回T_STUDENT表的第4列的名称。

SELECTCOL_NAME(OBJECT_ID('

T_STUDENT'

),4)

AS'

T_STUDENT表中第4列的名称'

12:

从STUDENT数据库中返回T_STUDENT表的S_NUMBER列的长度。

SELECTCOL_LENGTH('

'

S_NUMBER'

T_STUDENT表中的S_NUMBER列的长度'

13:

检查sysdatabases中的每一个数据库,使用数据库标识号来确定数据库名称。

USEmaster

SELECTdbid,DB_NAME(dbid)ASDB_NAME

FROMsysdatabases

ORDERBYdbid

14:

在T_STUDENT表中先插入三条新记录,其中的POLITY字段的值为NULL,要求对记录进行查询时,对应的NULL值在显示时显示“群众”。

INSERTINTOT_STUDENT(

S_NUMBER,S_NAME,SEX)

VALUES(

Y0452201'

'

王志鹏'

男'

Y0452202'

周小娟'

Y0452203'

李磊'

SELECTS_NUMBERAS学号,S_NAMEAS姓名,

SEXAS性别,POLITYAS政治面貌

WHERESUBSTRING(S_NUMBER,1,6)='

Y04522'

SEXAS性别,(ISNULL(POLITY,'

群众'

))AS政治面貌

15:

利用@@ERROR返回程序的错误代码。

INSERTINTOT_COURSE

(C_NUMBER,C_NAME,HOURS,CREDIT)

VALUES

('

40050407'

C语言程序设计'

72,3)

SELECT@@ERRORAS'

第一次插入记录时的错误代码'

VALUES

VB程序设计'

64,2.5)

第二次插入记录时的错误代码'

16:

显示到当前日期和时间为止试图登录SQLServer的次数。

SELECTGETDATE()AS'

今天的日期和时间'

@@CONNECTIONSAS'

企图登录的次数'

17:

返回在程序执行过程中上一条SQL语句影响的记录数。

SELECT*

SELECT@@ROWCOUNTAS'

第一次查询返回的记录数'

WHERESEX='

第二次查询返回的记录数'

40050408'

第一次插入记录时影响的记录数'

VC程序设计'

第二次插入记录时影响的记录数'

18:

返回SQLServer安装的日期、版本和处理器类型。

SELECT@@VERSIONAS'

当前的SQLServer信息'

19:

使用RTRIM函数删除字符型字段中的尾部空格。

T_COURSE'

C_NAME'

)AS'

课程名称列的长度'

C_NAMEAS课程名称,

DATALENGTH(RTRIM(C_NAME))AS'

课程名称列的实际数据长度'

FROMT_COURSE

20:

使用SUBSTRING函数、LEFT函数和RIGHT函数求T_STUDENT中的班级名称和学号。

SELECTSUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)AS'

班级'

RIGHT(RTRIM(S_NUMBER),2)AS学号,

S_NAMEAS姓名,

SEXAS性别,

BIRTHDAYAS出生日期,

POLITYAS政治面貌

WHERELEFT(S_NUMBER,5)='

21:

在第一个字符串(GoodMorning)中删除从第6个位置(字符M)开始的7个字符,然后在删除的起始位置插入第二个字符串(Afternoon),创建并返回一个新的字符串。

DECLARE@varStringchar(30)

SELECT@varString=STUFF('

GoodMorning'

6,7,'

Afternoon'

SELECT@varStringAS'

返回的字符串'

22:

查询T_STUDENT表的学生信息,要求显示的字段为:

学号、姓名、性别和学生的年龄。

SELECTS_NUMBERAS学号,

YEAR(GETDATE())-YEAR(BIRTHDAY)AS年龄

23:

在T_STUDENT表中查询每个学生的出生月份。

DATEPART(Month,BIRTHDAY)AS出生月份

24:

从系统当前日期中返回系统当前的年份数、月份数和天数。

SELECTYEAR(GETDATE())AS当前年份,

MONTH(GETDATE())AS当前月份,

DAY(GETDATE())AS当前天数

25:

在同一表达式中使用CEILING(),FLOOR(),ROUND()函数。

SELECTCEILING(28.6)AS'

CEILING(28.6)的值'

FLOOR(28.6)AS'

FLOOR(28.6)的值'

ROUND(37.2364,3)AS'

ROUND(37.2364,3)的值'

26:

查询T_STUDENT表中出生年份为1985年的学生信息。

POLITYAS政治面貌

WHERECONVERT(char(40),BIRTHDAY,102)LIKE'

1985%'

27:

编写一个用户自定义函数fun_SumScores,要求根据输入的班级号和课程号,求此班此门课程的总分。

CREATEFUNCTIONfun_SumScores

@ClassNameASchar(10),

@CourseNumberASchar(10)

RETURNSreal

BEGIN

DECLARE@SumResultASreal

SELECT@SumResult=SUM(SCORE)

FROMT_SCORE

WHERESUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)=@ClassName

ANDC_NUMBER=@CourseNumber

GROUPBYSUBSTRING(S_NUMBER,1,LEN(S_NUMBER)-2)

RETURN@SumResult

END

28:

使用自定义函数fun_SumScores,求T_SCORE表中的各个班级的各门课程的总分。

29:

根据T_SCORE表中的考试成绩,查询05541班学生高等数学的平均成绩,并根据平均成绩输出相应的提示信息。

IF(SELECTAVG(SCORE)FROMT_SCORE

WHERELEFT(S_NUMBER,5)='

ANDC_NUMBER='

10010218'

>

75

BEGIN

05541班高等数学的平均考试成绩比较理想!

SELECTAVG(SCORE)AS平均考试成绩

FROMT_SCORE

END

05541班高等数学的平均考试成绩不太理想!

30:

查询05541班学生的考试情况,并使用CASE语句将课程号替换为课程名进行显示。

SELECTS_NUMBERAS学号,

课程名称=CASEC_NUMBER

WHEN'

THEN'

40051060'

关系型数据库原理'

SCOREAS考试分数

FROMT_SCORE

ORDERBYS_NUMBER

31:

查询05541班学生的考试情况,并根据考试分数输出考试等级,当分数大于等于90分,输出“优”,当分数在80至90之间,输出“良”,当分数在70至80之间,输出“中”,当分数在60至70之间,输出“及格”,当分数在60分以下,输出“不及格”。

考试等级=CASE

WHENSCORE>

=90THEN'

优'

=80THEN'

良'

=70THEN'

中'

=60THEN'

及格'

ELSE

'

不及格'

32:

使用WHILE…CONTINUE…BREAK语句求5的阶乘。

DECLARE@Resultinteger,

@iinteger

SELECT@Result=1,

@i=5

WHILE@i>

BEGIN

SET@Result=@Result*@i

SET@i=@i-1

IF@i>

1

CONTINUE

5的阶乘为:

PRINT@Result

BREAK

33:

在程序中使用WAITFOR语句,使WAITFOR后面的语句等待10秒钟后再继续执行。

SELECT*FROMT_STUDENT

WAITFORDELAY'

0:

10'

SELECT*FROMT_COURSE

34:

编写一个自定义函数,功能是查询给定姓名的学生,如果没有找到则返回0,否则返回满足此条件的学生人数,主程序调用这个函数,查询姓名为“王华”的学生,并根据函数的返回值进行输出。

索引的创建和使用

在STUDENT数据库中创建一个新表T_DEPARTMENT,并将其中的D_NAME字段设置为聚集的唯一索引。

CREATETABLET_DEPARTMENT

D_NUMBERINT,

D_NAMECHAR(20)UNIQUECLUSTERED

在STUDENT数据库中创建一个新表T_SPECIALTY,并将其中的P_NUMBER字段设置为主键。

CREATETABLET_SPECIALTY

P_NUMBERINTPRIMARYKEY,

P_NAMECHAR(20)

创建一个新的非聚集索引,要求按照T_STUDENT中的S_NAME字段的降序创建,索引名为“IX_S_NAME”。

单击“T_STUDENT”数据表,并右击其中的“索引”文件夹,从弹出的快捷菜单中选择“新建索引”选项,在打开的“新建索引”对话框中,输入索引名为“IX_S_NAME”,在索引类型旁边的下拉列表框中选择“非聚集索引”选项,并单击“添加”按钮,打开“选择列”对话框,在其中选中“S_NAME”字段前面的复选框。

单击“确定”按钮,关闭“选择列”对话框,在“新建索引”对话框中将“S_NAME”字段的排序顺序改为“降序”。

最后单击“确定”按钮,就创建了“IX_S_NAME”索引。

使用CREATEINDEX语句为表T_STUDENT创建一个非聚集索引,索引字段为S_NAME,索引名为IX_STUDENTName。

GO

CREATEINDEXIX_STUDENTName

ONT_STUDENT(S_NAME)

为表T_STUDENT创建一个复合索引,使用的字段为SEX字段和BIRTHDAY字段,排序顺序SEX为降序,BIRTHDAY为升序。

CREATEINDEXIX_T_STUDENT2

onT_STUDENT(SEXDESC,BIRTHDAYASC)

用系统存储过程查看T_STUDENT表的索引信息。

sp_helpindexT_STUDENT

T_STUDENT表中的索引IX_T_STUDENT2的名称更改为IX_T_STUDENT_SexAndBirth。

sp_rename'

T_STUDENT.IX_T_STUDENT2'

IX_T_STUDENT_SexAndBirth'

index'

除表T_STUDENT中的索引IX_T_STUDENT_SEXAndBirth。

DROPINDEXT_STUDENT.IX_T_STUDENT_SEXAndBirth

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1