sqlserver201*数据库总结
数据库优化
第一章数据库的设计
什么是数据库设计?
数据库设计就是将数据库中的数据实体以及这些数据实体之间关系,进行规划和结
构化的过程。设计数据库
1.收集信息
2.标识实体
3.表示每个实体需要存储的详细信息4.表示实体之间的关系绘制e-r图
e-r可以称为实体-关系图实体属性联系映射基数
一对一一对多
多对一多对多实体关系图
矩形表示实体集
椭圆表示属性菱形表示联系集
直线用来连接属性和实体集,也用来连接实体集和联系集
三大范式
1.第一范式
第一范式的目标就是确保每列的原子性
2.第二范式
第二范式在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关。
3.第三范式
第三范式在第二范式的基础上更进一层,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关。
第二章数据库的实现
创建数据库
usemaster--引用空间go
--批处理
ifexists(select*fromsysdatabaseswherename="MySchool")dropdatabaseMySchoolcreatedatabaseMySchoolon()
name="MySchool_data",
--数据库名
--判断数据库是否存在,如果存--创建数据库
在就删除
filename="D:\\MySchool_data.mdf",--数据库的存放位置size=3,--数据库的初始大小maxsize=100,filegrowth=1
--日志文件
--数据库的最大值--数据库的增长率
logon()go
创建表
name="MySchool_log",--数据库的日志名filename="D:\\MySchool_log.ldf",--数据库日志文件的存放位置size=1,--数据库日志文件的初始大小filegrowth=1--数据库日志文件的增长率
ifexists(select*fromsysobjectswherename="Grade")droptableGrade
createtableGrade()Go
--判断该表是否存在,如果存在就删除
--创建表
GradeIdintprimarykeyidentity(1,1)notnull,列明类型主键自增不许为空GradeNamenvarchar(50)notnull添加约束
AltertableSubject--针对那张表添加约束修改表表名
addconstraintFK_Subjectforeignkey(GradeId)referencesGrade(GradeId)添加约束名约束类型具体约束说明Go
SQL编程
局部变量
declare
@xvarchar(5)
声明变量set@x="★"select@x="★"
变量名变量类型变量赋值(单一)
变量赋值(支持多条,接收最后一条返回值)
print@x打印输出变量
@@error以两个@为前缀的为全局变量
类型转换的两种方式
Cast(表达式as数据类型)(常用)
Convert(数据类型[(长度)],长度[,样式])(不常用)
逻辑控制语句-------------------
BeginEnd
-------------------If()
BeginEndElse
BeginEnd
-------------------
While(1=1)BeginEnd-------------------
casewhenStudentResult=60then"差"whenStudentResultbetween60and80then"中"else"优"
第四章子查询
简单子查询多层嵌套+in子查询
------------------------------------------三层子查询---------------------------------------
selectStudentNamefromdbo.StudentwhereStudentNo=(selectStudentNofromdbo.ResultwhereStudentResult="61"andSubJectId=(
selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"))
selectStudentNamefromdbo.StudentwhereStudentNoin(--返回多个用inselectStudentNofromdbo.ResultwhereStudentResult="61"andSubJectId=(
selectSubJectIdfromdbo.SubjectwhereSubjectName="C#OOP"
notin子查询你懂得
Exists子查询
用ifexists判断是否存在Notexists你懂得
第六章事务视图和索引
什么是事务?
事务是单个的工作单元。如果某一事务成功。则在该事务中进行的所有的数据更改均会提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或者回滚,则所有数据更改均
被清除。
begintransactiondeclare@errorintset@error=0
selectdbo.Result.*intoStroyResultfromdbo.Result
innerjoindbo.StudentonResult.StudentNo=Student.StudentNoinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"
set@error=@error+@@error--返回错误行数
deletedbo.Resultfromdbo.Result
innerjoindbo.StudentonResult.StudentNo=Student.StudentNoinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"set@error=@error+@@error
selectdbo.Student.*intoStroyStudentfromdbo.Studentinnerjoindbo.GradeonStudent.GradeId=Grade.GradeIdwhereGradeName="y2"set@error=@error+@@error
deletedbo.Studentfromdbo.Student
innerjoinGradeondbo.Grade.GradeId=dbo.Student.GradeIdwhereGradeName="y2"
set@error=@error+@@error
if(@error0)begin
print"失败"rollbacktransactionendelse
beginprint"成功"
committransaction---提交end
---回滚
第七章存储过程
什么是存储过程?
存储过程是sql语句和控制语句的预编译集合。存储过程优点
1.模块化程序设计
2.执行速度快,效率高3.减少网络流量
4.具有良好的安全性总结
创建存储过程以及使用例子
ifexists(select*fromsysobjectswherename="xp_SelectStu")dropprocedurexp_SelectStugo
createprocedurexp_SelectStuas
SELECTdbo.Grade.GradeName,dbo.Student.StudentName,dbo.Student.LoginPwd,dbo.Student.Address,dbo.Student.BornDate,dbo.Student.Email
execxp_SelectStu
ifexists(select*fromsysobjectswherename="xp_inserStu")dropprocedurexp_inserStugo
createprocedurexp_inserStu@StudentNonvarchar(50),@LoginPwdnvarchar(20),@StudentNamenvarchar(50),@Sexchar(2),@GradeIdint,
@Phonenvarchar(255),@Addressnvarchar(255),@BornDatedatetime,@Emailnvarchar(50)as
insertintodbo.Studentselect
FROMdbo.GradeINNERJOIN
dbo.StudentONdbo.Grade.GradeId=dbo.Student.GradeId
@StudentNo,@LoginPwd,@StudentName,@Sex,@GradeId,@Phone,@Address,@BornDate,@Emailgoexec
xp_inserStu
"tcs2125","12345","
名字","
难","2","131313131","
你猜","201*-12-12","4564165@yahoo.com"---调用以及插入数据
删除存储
Dropprocedure存储过程名
扩展阅读:常见的SQLServer数据库试题及答案总结
常见的SQLServer数据库试题及答案总结
来源:发布时间:201*-04-22浏览:6348人次字体:[大中小]选择题:(20分)
1、根据关系数据基于的数据模型关系模型的特征判断下列正确的一项:(___)A、只存在一对多的实体关系,以图形方式来表示。
B、以二维表格结构来保存数据,在关系表中不允许有重复行存在。C、能体现一对多、多对多的关系,但不能体现一对一的关系。D、关系模型数据库是数据库发展的最初阶段。
2、在“连接”组中有两种连接认证方式,其中在(___)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证B、SQLServer身份验证C、以超级用户身份登录时D、其他方式登录时3、SQLServer201*在安装之前,应注意的事项:(___)
A、SQLServer201*的任何版本在安装时都不用考虑操作系统的制约。B、SQLServer201*的安装对硬件的要求不作任何限制。
C、SQLServer201*在安装之前,必须在操作系统级启用TCP/IP。D、在WindowsNTServer4.0上安装SQLServer201*时,最低的要求是必须安装ServicePack4(SP4)以上。
4、关系数据库中,主键是(1___),主键的建立有(2___)种方法,当运用Transact-SQL语句创建主键时,可以是(3___)。
⑴A、为标识表中唯一的实体B、创建唯一的索引,允许空值C、只允许以表中第一字段建立D、允许有多个主键的⑵A、一B、二C、三D、四⑶A、createtabletable1
(column1char(13)notnullprimary,column2intnot)onprimary;
B、altertabletable1withnotcheckadd
constraint[PK_table1]primarykeynonclustered(column1)onprimary;
C、altertabletable1column1primarykey;
5、表在数据库中是一个非常重要的数据对象,它是用来(1___)各种数据内容的,数据库创建后就可以创建表了,创建表可以用(2___)等方法来创建。⑴A、显示B、查询C、存放D、检索⑵A、企业管理器B、查询分析器
C、OSQLD、企业管理器和CREATETABLE语句6、为数据表创建索引的目的是(1___),可以在创建表时用(2___)来创建唯一索引,也可以用(2___)来创建唯一索引。
⑴A、提高查询的检索性能B、创建唯一索引C、创建主键D、归类
⑵A、设置主键约束,设置唯一约束B、Createtable,CreateindexC、设置主键约束,CreateindexD、以上都可以
7、在Transact-SQL语法中,用来插入数据的命令是(___),用于更新的命令是(___)。A、INSERT,UPDATEB、UPDATE,INSERT
C、DELETE,UPDATED、CREATE,INSERTINTO8、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(1___),使用关键字(2___)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3___),如果在SELECT语句中使用集合函数时,一定在后面使用(4___)。
⑴A、SELECT,INTOB、SELECT,FROMC、SELECT,GROUPD、仅SELECT⑵A、DISTINCTB、UNIONC、ALLC、TOP⑶A、JOINB、UNIONC、INTOC、LIKE
⑷A、GROUPBYB、COMPUTEBYC、HAVINGD、COMPUTE
9、视图是一种常用的数据对象,它是提供(1___)和(1___)数据的另一种途径,可以简化数据库操作,当使用多个数据表来建立视图时,表的连接不能使用(2___)方式,并且不允许在该语句中包括(3___)等关键字。⑴A、查看,存放B、查看,检索C、插入,更新D、检索,插入⑵A、外连接B、内连接C、左连接D、右连接
⑶A、ORDERBY,COMPUTEB、ORDERBY,COMPUTE,COMPUTRBYC、ORDERBY,COMPUTEBY,GROUPBYD、GROUPBY,COMPUTEBY
10、在SQLSERVER服务器上,存储过程是一组预先定义并(1___)的Transact-SQL语句。可以用(2___)来声明游标。
⑴A、保存B、编译C、解释D、编写⑵A、CREATECURSORB、ALTERCURSORC、SETCURSORD、DECLARECURSOR填空题:(20分)
1、更改MicrosoftSQLServer登录的密码的命令是_______________,2、举例说明其语法格式:_____________________________________。
3、WindowsNT授权认证模式只适用于________________________平台,4、对于Windows95/98操作系统下的SQLServer系统将不5、适用。
6、SQLServer中索引类型包括的三种类型分别是_________________,_________________和____________________。
7、在SELECT语句的FROM子句中最多可以指8、定_______个表或视图,9、相互之间要用________分隔,10、当所查询的表不11、在当前数据库时,12、可用___________________________格式来指13、出表或视图对象。
14、服15、务器网络实用工具的目的_________________________________。
16、在当SQLSERVER实例中有DBOA数据库,17、要将它设置成为单用户状态,18、请写出设置命令:___________________________________________。
19、删除表命令是:___________________________________________。
20、用SELECT进行模糊查询时,21、可以使用_________或________匹配符,22、但要在条件值中使用____或____等通配符来配合查询。并且,23、模糊查询只能针对字段类型是_________的查询。
24、计算字段的累加和的函数是:_______,25、统计项目数的函数是:________。10、SQLSERVER中的编程语言就是_____________________________语言。判断题(10分)
1、在CREATEINDEX语句中,使用CLUSTERED来建立簇索引。()2、可以在企业管理器中修改数据库的名称。()3、恢复数据,可以在查询分析器中使用这样的命令:
BACKUPDATABASEdatabase_nameFROMbackup()
4、在查询分析器中修改帐户时可以用系统存储过程Sp_modibaccess。()
5、每个存储过程向调用方返回一个整数返回代码。如果存储过程没有显式设置返回代码的值,则返回代码为0,表示成功。
6、在Transact-SQL语句中,对不符合所有标识符规则的标识符必须进行分隔。7、在SQLSERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。
8、在Transact-SQL语句的WHERE子句中,完全可以用IN子查询来代替OR逻辑表达式。9、通配符“_”表示某单个字符。
10、因为通过视图可以插入、修改或删除数据,因此视图也是一个实在表,SQLSERVER将它保存在syscommens系统表中。简答题:(20分)
26、写出关系型数据库的第一、第二、第三标27、准形式的各自要求。28、触发器的类型以及相对的语句命令?29、自定义函数的类型?各自原返回值。30、用户权限的种类有哪些?各自的作用?分析编码题(20分)
31、请使用Transact-SQL建立如下表:表名:雇员基本信息表;
字段名数据类型宽度精度可空性要求NO_IDCHAR7NOTNULL设为主键NAMECHAR10NOTNULL
SEXCHAR2NOTNULL默认值为”男”AGEINTNOTNULLDEPTVARCHAR50NULLPHONEVARCHAR20NULLNOTESVARCHAR50NULL
32、现有1销售表,33、它们结构如下:idint(标识号)codnochar(7)(商品编码)codnamevarchar(30)(商品名称)specvarchar(20)(商品规格)pricenumeric(10,2)(价格)sellnumint(销售数量)
deptnochar(3)(售出分店编码)selldatedatetime(销售时间)
要求:写出查询销售时间段在201*-2-15日到201*-4-29之间,分店编码是01的所有记录。
34、在table1数据表中增加“No_id”字段,35、数据类型char(12),36、不37、可空,38、并将其设定为UNIQUE约束,39、写出其命令语句。编程填空题:(10分)
填写出下列触发器中缺少的关键字,使下面语句完整:ifupdate([lcostprice])update[b_drug_data]set[scostprice]=((select[lcostprice]frominserted
____________[codno],[lcostprice],[scostprice]
________{b_drug_data.codno}=[inserted.codno])/(select[fsco]from[b_drug_data]__________[codno],[fsco]
_________[b_drug_data.codno]=
(select[codno]frominsertedgroupby[codno])))where[b_drug_data.codno]___(select[codno]frominserted)
选择题:(20分)注:每个选空1分
1、B,2、B,3、C,4、⑴A,⑵C,⑶B,5、⑴C,⑵D,6、⑴A,⑵C7、A,A8、⑴B,⑵A,⑶B,⑷A,9、⑴A,⑵A,⑶B,10、⑴B,⑵D填空题:(20分)注:每空1分
1、Sp_password,sp_password“12345”,”54321”,”abc”2、WindowsNT
3、唯一索引,簇索引,非簇索引4、256,逗号,”数据库.所有者名称.对象名称”5、为客户端网络实用工具提供参数。
6、sp_dboption‘DBOA’,’singleuse’,’true’7、droptable
8、like,notlike,”%”,”_”,字符9、Sum(),Count()10、TranSact_SQL判断题:(10分,每题1分)
1、√2、×3、×4、×5、√6、√7、×8、×9、√10、×简答题:(20分,1、2题每题5分)
1、①第一标2、准形式:由原子值和主键值组成,3、数据表中的每一个字段都不4、可以再分。(同5、一数据表中同6、类字段不7、允许重复8、出现,9、在一个字段内也不10、允许放置多个数据项)
②第二标准形式:要求所有的非关键字段完全依赖于主键。(或类似的解释)③第三标准形式:每一个非主键字段列中没有可传递的的依赖性。(一个非主键列不能依赖于另一个非主键列)
2、类型:①INSERT触发器、②UPDATE触发器、③DELETE触发器相对应的语句:①INSERT语句、②UPDATE语句、③DELETE语句11、自定义函数类型:①标12、量函数返回值:单个数据值②内嵌表值函数返回值:table,③多语句表值函数返回值:table4、权限类型及作用:
①对象权限作用:决定用户对数据库对象所执行的操作,包括用户对数据库中的表、视图、列或存储过程等对象的操作权限
②语句权限作用:决定用户能否操作数据库和创建数据库对象③隐含权限作用:控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。五、(20分,1题10分,2题5分,3题5分)1、(答案中的英语单词不允许错误,男字只能用单引号括起来,否则不给分;)CREATETABLE雇员基本信息表2分
(NO_IDchar(7)notnullprimarykey,2分NAMEchar(10)notnull,1分SEXchar(2)notnulldefault‘男’,2分AGEintnotnull,1分DEPTvarchar(50)null,1分PHONEvarchar(20)null,0.5分NOTESvarchar(50)null0.5分)
2、(答案中的英语单词不允许错误,日期要用引号括起来,否则不给分)SELECT*FROM销售表
WHERE(selldate>="201*-2-15"ANDselldate()。
(A)master(B)NorthWind(C)msdb(D)bookdb
7、在SQLServer201*中,当数据表被修改时,系统自动执行的数据库对象是()。(A)存储过程(B)触发器(C)视图(D)其他数据库对象8、SQLServer的字符型系统数据类型主要包括()。A.Int、money、charB.char、varchar、textC.datetime、binary、intD.char、varchar、int
9、在SQLServer201*中,索引的顺序和数据表的物理顺序相同的索引是()。(A)聚集索引(B)非聚集索引(C)主键索引(D)唯一索引
10、要查询book表中所有书名中包含“计算机”的书籍情况,可用()语句。(A)SELECT*FROMbookWHEREbook_nameLIKE‘计算机*’(B)SELECT*FROMbookWHEREbook_nameLIKE‘计算机%’(C)SELECT*FROMbookWHEREbook_name=‘计算机*’
(D)SELECT*FROMbookWHEREbook_name=‘计算机%’
11、SELECT语句中与HAVING子句通常同时使用的是()子句。
A.ORDERBYB.WHEREC.GROUPBYD.无需配合12、要删除mytable表中的myindex索引,可以使用()语句。(A)DROPmyindex
(B)DROPmytable.myindex
(C)DROPINDEXmyindex(D)DROPINDEXmytable.myindex
13、下列选项都是系统提供的存储过程,其中可以进行视图信息的查询是()。(A)sp_helptext(B)sp_helpindex(C)sp_bindrule(D)sp_rename14、SQLServer提供的单行注释语句是使用()开始的一行内容。A.“/*”B.“--”C.“{”D.“/”15、以下运算符中优先级最低的是()。
(A)+(加)(B)=(等于)(C)like(D)=(赋值)
二、填空题(每空2分,共15空)
1、数据库系统的特点分别是数据的结构化、、数据独立性和。2、在数据库的表中,是指表中的某一列,该列的值唯一标识一行。3、SQLServer201*的文件包括:数据文件(.mdf或.ndf)和。4、在SQLServer201*中,要访问某个数据库,除了需要有一个登录帐号外,还必须有一个该数据库的帐号。
5、,简称DBMS,它是指帮助用户建立、使用和管理数据库的软件系统。
6、在SQLServer201*中,Unicode标准的全称是。7、
SQLServer201*
和。
8、在T-SQL语言中,若要修改某张表的结构,应该使用的修改关键字是;若要创建一个数据库,应该使用的语句是。9、游标的概念包括两个部分,它们是和。10、一个事务的操作必须是具备以下四个属性:原子性、、和
提供备份数据库的两种方式是永久性。
三、程序阅读题(共2题)
1、阅读下面的程序段,然后简述该程序段所完成的功能。(5分)Begin
Waitfortime’15:43’CreateViewmy_view
AsSelectorder_date,book_number,book_idFromorderform
Wherebook_number!<25End
该程序段的功能是:
。2、下面程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向book表的book_id、book_name、price和publisher字段插入数据。阅读并回答以下问题:(10分)UsebookdbGo
Ifexists(SelectnameFrom①
Wherename=’my_proc’andtype=’②’)
DropProcmy_procGo
CreateProcmy_proc
@aint,@bchar(50),@cfloat,@dpublisher③
InsertIntostudent(book_id,book_name,price,publisher)Values(@a,@b,@c,@d)Go
问题:(1)填写该程序段中空白处的内容:①②③
(四、编程题(共4题)
有一个“学生-课程”数据库,数据库中包括三个表:(1)“学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为:Student(Sno,Sname,Ssex,Sage,Sdept)Sno为关键字。
(2)“课程”表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为:Course(Cno,Cname,Cpno,Ccredit)Cno为关键字。
(3)“学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为:SC(Sno,Cno,Grade)(SNO,CNO)为关键字。
2)任写一条调用该存储过程的语句:。
完成下列操作:
1、请把其中建立“学生”表Student的语句写下来,表Student是由学号Sno、姓名Sname、
性别Ssex、年龄Sage、所在系Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一的。
2、在student表中查询Sdept是‘计算机’的学生的所有信息,并按Sno降序排列。(5
分)
3、在以上三个表中查询Ccredit为5并且Grade大于60的学生的学号、姓名和性别。(7
分)
4、为Course表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除SC表中与之有关的记录。
(注:在创建触发器之前要判断是否有同名的触发器存在,若存在则删除之。)(9分)
SQLServer数据库试卷5参考答案
一、选择题(每题2分,共30分)
CCDDABBBABCBACD二、填空题(每空2分,共30分)
1、数据共享、可控冗余度2、主键3、日志文件4、用户5、数据库管理系统6、统一字符编码标准7、备份数据库、备份事务日志8、ALTER、CREATEDATABASE9、游标结果集、游标位置10、一致性、隔离性三、程序阅读题(第一题5分,第二题10分,共15分)
1、系统在15:43分为orderform表中订购数量book_number大于25本的订购信息的order_date、book_number和book_id三个字段创建一个名为my_view的视图。(答题意思差不多即可得满分,其他情况酌情给分)
2、(1)①Sysobjects②P③As(每空2分)
(2)Execmy_proc7,’SQLServer201*教程’,38,‘北京科海集团公司’或Execmy_proc@a=7,@b=’SQLServer201*教程’,@c=38,@d=’北京科海集团公司’(4分)注:该小题不管怎样调用该存储过程,Exec和my_proc不可少,也不可多用Proc关键字;若不全对则酌情给分。四、编程题(共4题,共25分)
1、(共6分)
CREATETABLEStudent(1分)(SnoCHAR(5)NOTNULLUNIQUE,(1分)SnameCHAR(20),(1分)SsexCHAR(1),(1分)SageINT,(1分)SdeptCHAR(15));(1分)2、select*fromstudentwhereSdept=’计算机’orderbySnodesc(5分)
1分
1分
1分
2分
3、(共7分)方法1:
selectstudent.Sno,Sname,Ssexfromstudent,course,sc
(1分)(1分)
where(student.Sno=sc.Sno)and(course.Cno=sc.Cno)
and(course.Ccredit=5)and(sc.Grade>60)(1+1+1+1+1分)
(1分)
(2分+2分)
(1分+1分)
方法2:
selectstudent.Sno,Sname,Ssex
Onstudent.Sno=sc.Sno
4、(共9分)
Ifexists(SelectnameFromsysobjects
Wherename=’my_trig’andtype=’tr’)(整个If语句1分)
Droptriggermy_trigGo
Createtriggermy_trigOnCourseForDeleteAs
(0.5分)
(0.5分)
(1分)(0.5分)(1分)
fromstudentInnerJoin(scInnerJoincourseOncourse.Cno=sc.Cno)where(course.Ccredit=5)and(sc.Grade>60)
(0.5分)(1分)
(1分+2分)
DeleteFromscGo
WhereSnoin(SelectSnoFromDeleted)
友情提示:本文中关于《sqlserver201*数据库总结》给出的范例仅供您参考拓展思维使用,sqlserver201*数据库总结:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。