SQL 操作练习题1.docx

上传人:b****6 文档编号:8061385 上传时间:2023-01-28 格式:DOCX 页数:14 大小:433.29KB
下载 相关 举报
SQL 操作练习题1.docx_第1页
第1页 / 共14页
SQL 操作练习题1.docx_第2页
第2页 / 共14页
SQL 操作练习题1.docx_第3页
第3页 / 共14页
SQL 操作练习题1.docx_第4页
第4页 / 共14页
SQL 操作练习题1.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

SQL 操作练习题1.docx

《SQL 操作练习题1.docx》由会员分享,可在线阅读,更多相关《SQL 操作练习题1.docx(14页珍藏版)》请在冰豆网上搜索。

SQL 操作练习题1.docx

SQL操作练习题1

SQLServer(三级)操作练习题

1数据库运行监控

1.1使用SQL语句实现DMV查询,显示当前缓存占用了大部分CPU时间的前20个批处理或过程,按照各批处理或过程的CPU执行时间降序排列,将结果保存在“c:

\gatDoc\SQL3J2.1.1\2.1.1.doc”文档中。

(提示:

查询数据库master中的系统视图sys.dm_exec_query_stats)

1.2以SA身份登录数据库,在Master数据库上执行SQL语句:

Select*fromsysobjects。

利用SQLServerManangementStudio监控数据库服务器,观察当前按照进程分类的锁有哪些,请在“c:

\gatDoc\SQL3J2.1.1\2.1.1.doc”文档内写出操作步骤,并在该文档内将下列操作界面截屏后保存:

阅读锁的信息,登录帐户信息。

(提示:

启动活动监视器)

1.3打开SQLServerProfiler,建立跟踪,对数据库活动进行监视,同时打开性能监视器,利用SQLServer:

SQLStatistics对象监视数据库服务器每秒的编译次数,运行3分钟后,观察重合时段内SQLServe的活动和上述性能计数器的值,请在“2.1.1.doc”文档内写出操作步骤,并在该文档内将下列三个操作界面截屏后依次保存:

1)在SQLServerProfiler中新建跟踪mytrace。

2)在性能监视器中新建SQLServer:

SQLStatistics计数器。

3)在SQLServerProfiler中查看指定性能计数器的情况。

2数据库备份计划

2.1利用维护计划功能,设置每天3:

00自动执行增量备份(差异备份)数据库model到文件夹C:

\Backup,并将操作步骤写在c:

\gatDoc\SQL3J2.2.1\2.2.1.doc文档里面,将下面两个操作界面截屏后依次保存在同一个文档里:

1)设置备份数据库任务的界面

2)维护计划设置完成的界面

2.2利用SQLServerAgent功能(作业功能),创建作业job1,设置每天5:

00完成以下步骤:

先删除备份文件c:

\gatDoc\SQL3J2.2.1\model.bak,然后对数据库model进行完全备份,保存为c:

\gatDoc\SQL3J2.2.1\model.bak,请在2.2.1.doc文档里写出操作步骤,并将下面三个操作界面截屏后依次保存:

1)设置删除备份文件的界面

2)设置对数据库model进行完全备份的界面

3)设置作业计划属性的界面

3数据库编程

*准备:

假设目前有一个数据库demo,里面有一个表Student,结构如下:

IDint,--学号

Namevarchar(20),--姓名

enterDatedatetime,--入学日期

jobvarchar(10),--职位

highnumeric(8,2),--身高

teacherIDint,--班主任代号

classIDint,--班级编号

练习时请同学自行创建以上数据库和数据表(考试时系统中已经创建好了)。

将下面操作的SQL脚本保存到c:

\gatDoc\SQL3J3.1.1\3.1.1.doc文档中。

3.1建立存储过程add_stu,输入学号、姓名、入学日期、职位、身高、班主任代号、班级编号,向表student插入数据。

3.2建立函数valid_id,根据输入的学号,检查学生是否存在,如果存在,则返回1,否则返回0。

(标量函数)

3.3建立函数get_high,根据输入的学号,返回姓名和身高,其中要求先调用函数valid_id确定该学生是否存在,不存在则显示消息“该学生不存在”。

(多语句表值)

3.4建立函数get_tab,根据输入的班级编号返回该班级所有学生信息。

(内联表值)

3.5编写存储过程disp_stu,根据输入的班级编号,采用游标方式按照下列格式输出该班级所有学生的姓名、职位、身高。

姓名职位身高

-------------------------------------------

-------------------------------------------

 

参考答案:

1.1

selecttop20sql_handle,sum(total_worker_time)ascpu_time

fromsys.dm_exec_query_stats

groupbysql_handle

orderbycpu_timedesc

*分析:

在sys.dm_exec_query_stats视图中,total_worker_time字段用来保存某个进程占用的cup时间,sql_handle表示某个进程编号。

这个视图在master数据库中的系统视图中可以找到。

(本图为操作参考,考试时不需要给出)

1.2

步骤:

(考试时不需要写步骤)

1.在SQLServerManangementStudio打开新查询。

2.选择Master数据库,点击工具栏中的“新建查询”。

3.在查询中执行下面的语句:

Seelct*fromsysobjects

4.在“管理活动监视器”中,右键选择“查看进程”,弹出活动监视器窗口,有多个进程,其中有一个帐户在访问数据库实例,双击该进程后弹出一个进程的详细信息窗口。

(提示:

使用Alt+PrtSc组合键,可以复制当前活动窗口图象)

 

1.3

步骤:

(考试时不需要写步骤)

1.在SQLServerManangementStudio的“工具”菜单中打开SQLServerProfiler。

2.点击“新建跟踪”。

3.填写跟踪名称myTrace,选中“保存到文件”,指定文件夹C:

\和文件名myTrace.trc,单击“运行”。

4.在SQLServerProfiler的“工具”菜单中打开性能监视器。

5.展开“性能日志和警报”,在“计数器日志”上右键选择“新建日志设置”,填写日志名称myLog。

6.点击“添加计数器”,在“性能对象”中选择“SQLServer:

SQLStatistics”,再从列表中选择一个计数器“SQLCompilations/sec”,然后点击“添加”,再点击“关闭”。

7.打开“日志文件”选项卡,在“日志文件类型”中选择“文本文件(用逗号分隔)”。

点击“配置”按钮,指定文件夹C:

\和文件名myLog.csv,然后按“确定”返回。

8.在查询工具中任意使用SQL语句执行一些数据库操作。

9.3分钟后,分别停止SQLServerProfiler和性能监视器的所有运行的任务。

10.关闭SQLServerProfiler的当前跟踪,在“文件”菜单中打开所保存的跟踪文件C:

\myTrace.trc,然后在“文件”菜单中选择“导入性能数据”,选择性能计数器保存的文件C:

\myLog.csv,并在“性能计数器限制对话框”中选中相应的计数器(见后面的参考图)。

(本图为操作参考,考试时不需要给出,所有选项都打勾)

 

2.1

步骤:

(考试时不需要写步骤)

1.在SQLServerManangementStudio的管理->维护计划中,右键点击“新建维护计划”,填写名称。

2.设置计划,选择“重复执行”,频率为每天一次,时间设定为3:

00。

3.在左边任务列表中将“备份数据库”任务拖曳到右边窗口,然后双击他。

4.选择数据库“model”,备份类型选“完整”,文件夹选“C:

\Backup”(直接打字,不要打开对话框进行选择)。

5.保存,退出。

2.2

步骤:

(考试时不需要写步骤)

1.在SQLServerManangementStudio的SQLServer代理->作业中,右键点击“新建作业”,填写名称。

2.点击“步骤”选项卡,新建一个步骤,命名为step1,类型选择“操作系统(cmdExec)”,命令栏目中填写:

delc:

\backup\model.bak,单击“确定”。

3.新建一个步骤,命名为step2,类型选择“Transact-SQL脚本(T-SQL)”,数据库选择“master”,命令栏目中填写:

backupdatabasemodeltodisk='c:

\backup\model.bak',单击“确定”。

4.点击“计划”选项卡,新建一个计划,命名为plan1,选择“重复执行”,频率为每天一次,时间设定为5:

00,单击“确定”。

5.单击“确定”,退出。

3.1(提示:

以下各题可以利用SQLServerManagementStudio中的相关生成工具搭好框架)

createprocedureadd_stu

@idint,@namevarchar(20),@enterdatedatetime,@jobvarchar(20),@highnumeric(8,2),@tIDint,@cIDint

as

begin

insertintostudentvalues(@id,@name,@enterdate,@job,@high,@tID,@cID)

end

*分析:

本题使用存储过程模板(找到指定数据库>可编程性>存储过程,右键“新建存储过程”)。

3.2

createfunctionvalid_id

@idint

returnsint

as

begin

declare@resultint

ifexists(select*fromstudentwhereid=@id)

set@result=1

else

set@result=0

return@result

end

*分析:

本题使用标量函数模板(找到指定数据库>可编程性>函数,右键“新建>标量值函数”)。

3.3

createfunctionget_high

@idint

returns@tabtable

(namevarchar(20),highnumeric(8,2),msgvarchar(20))

as

begin

ifdbo.valid_id(@id)=1

insertinto@tab(name,high)selectname,highfromstudentwhereid=@id

else

insertinto@tab(msg)values('该学生不存在')

return

end

*分析:

本题使用多语句表值函数模板(找到指定数据库>可编程性>函数,右键“新建>多语句表值函数”)。

3.4

createfunctionget_table

@classIDint

returnstable

as

return(select*fromstudentwhereclassID=@classID)

*分析:

本题使用内联表值函数模板(找到指定数据库>可编程性>函数,右键“新建>内联表值函数”)。

3.5

createproceduredisp_stu

@classIDint

as

begin

declare@namevarchar(20),@jobvarchar(20),@highnumeric(8,2)

declarec_rscursorfor

selectname,job,highfromstudentwhereclassID=@classID

openc_rs

print'姓名职位身高'

print'----------------------------'

fetchnextfromc_rsinto@name,@job,@high

while@@fetch_status=0

begin

print@name+''+@job+''+cast(@highasvarchar)

fetchnextfromc_rsinto@name,@job,@high

end

closec_rs

deallocatec_rs

end

*分析:

本题使用存储过程模板(找到指定数据库>可编程性>存储过程,右键“新建存储过程”)。

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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