程序设计sqlserver练习题
- 格式:doc
- 大小:252.00 KB
- 文档页数:7
1、请简述一下第二范式2、请简述UPDATE 触发器工作原理3、强制引用完整性时,简述SQL Server 禁止用户进行的操作(4、简述相关子查询的步骤(5、简述使用索引和不使用索引的理由6、 SQLServer2000的系统数据库有哪几个?7、创建数据库中的表时应完成的主要任务有哪些?8、一般不考虑在哪些列上建立索引。
9、应用程序角色和标准角色的区别有哪些?10、视图的优点有哪些?11、SQLServer2000主要的客户组件有哪些?第二组:12、试叙述概念模型与逻辑模型(即结构模型)的主要区别。
13、设有关系R和S,其值如下:R A B C S B C D2 4 6 4 5 63 6 94 6 83 4 5 6 8 06 9 2试求R⋈S、R⋈S的值。
2=114、“从已知的FD集F使用推理规则集推不出的FD,必定不在F+中”,这句话是指推理规则的正确性还是完备性?它具有什么性质?15、试解释“并发调度可串行化”这个概念。
16、DBMS的完整性子系统的主要功能是什么?17、为什么要从两层C/S结构发展成三层C/S结构?18、在DDB中,什么是“数据分片”?19、试叙述ODBC应用程序的初始化部分要使用哪些ODBC函数?(按顺序写出函数的中文名称)答案:答:概念模型:①对现实世界的第一层抽象;②与软、硬件无关;③从用户观点对数据建模。
逻辑模型:①对现实世界的第二层抽象;②与硬件无关,与软件有关;③从计算机实现观点对数据建模。
32.解:R⋈S A B C D R⋈S A R.B R.C S.B S.C D2=12 4 6 8 2 4 6 4 5 63 6 9 2 24 6 4 6 83 4 5 6 3 6 9 6 8 03 6 9 6 9 23 4 5 4 5 63 4 5 4 6 833.答:这句话是指推理规则的完备性。
保证了可以推出所有被蕴涵的函数依赖。
34. 答:事务并发调度的执行结果与某一串行调度的执行结果等价,称为“并发调度是可串行化的”。
SQL Server综合练习题说明:请在做题前找到随题文件北风贸易.mdf和北风贸易.ldf,附加数据库并指定数据库名为“w+学号最后两位+姓名”,如“w23张三”,以下所有的操作均完成在这个数据库中,请严格按照题目要求答题,包括字段次序。
一、基础设计(共40分)业务介绍:●Sporting Goods是一家美国批发公司,接收来自世界范围内的运动产品零售商店的定单。
该公司的客户遍布国内外,每一个客户都有一个唯一标识号。
●公司必须保存有客户的商店名称和电话号码、地址、所在城市、州、国家、邮政编码、信誉等级以及对客户喜好的总体评论。
●公司需跟踪每一份定单的标识号、订货日期及付款方式。
●客户所在区域有唯一的名称及标识号。
●每个区域有一个仓库,仓库具有唯一的标识号及其它信息,包括地址、城市、州、、国家、邮政编码、经理ID及电话号码等。
●库存中每一件商品具有唯一的标识号,还必须跟踪产品价格、订购的数量及已发送的数量。
●公司对每一种产品,必须知道它唯一的产品标识号及名称。
●公司有一些雇员或销售代表被派往多个地区,对每一雇员,公司备有其姓、名、唯一的标识号及计算机登录ID,其他信息包括该雇员进入公司的时间、评语、职务、工资及佣金百分率。
●对每一个仓库及它存储的产品,公司货单记录有每个产品的存储量、再订货点等。
1) 建立下列9张表(1)s_customer表(描述客户信息)(2)s_dept表(描述公司各部门信息)(4)s_emp表(描述公司雇员信息)(6)s_product表(描述产品信息)2) 参照完整性约束3) 其它约束1.s_customer客户的信誉等级(Credit_rating)只能取Excellent、Good、Poor2.s_dept表中,name及region_id的组合必须是唯一的,确保在地区中部门名是唯一的。
3.任何雇员的佣金百分率必须为以下值之一:10、12.5、15、17.5、204.在表s_inventory中,product_id及warehouse_id的组合必须是唯一的。
第五章1.使用CREATE TABLE语句创建数据表时()A.必须在数据表名称中指定表所属的数据库B.必须指明数据表的所有者C.指定所有者和表名称组合起来在数据库中必须唯一D.省略数据表名称时,则自动创建一个本地临时表2.下列关于ALTER TABLE 语句叙述错误的是()A.ALTER TABLE 语句可以添加字段B.ALTER TABLE 语句可以删除字段C.ALTER TABLE 语句可以修改字段名称D.ALTER TABLE 语句可以修改字段数据类型3.数据库可以表可以设置字段有效性规则属于()A.实体完整性范畴B参照完整性范畴C.数据一致性范畴D.域完整性4下列用于定义字段的SQL语句中,错误的是()A学号varchar(10) B 成绩int4C 产量floatD 价格decinmal(8,4)5 若要删除数据库中已经存在的表s,可用()A DELETE TABLE SB DELETE SC DROP TABLE SD DROP S6若要在基本表s中增加一列CN(课程名),可用()A ADD TABLE S(CN CHAR(8))B ADD TABLE S ALTER(CN CHAR(8))C ALTER TABLE S ADD(CN CHAR(8))D ALTER TABLE S (ADD CN CHAR(8))7 学生关系模式是(s# , Sname , Sex , Age),S的属性分别表示学生的学号、姓名、性别、年龄。
要在表S中删除属”年龄“, 可选用的SQL 语句是()A delete age from sB ALTER TABLE S DROP AGEC UPDATE S AGED ALTER TABLE S ‘AGE’8 有关系S (S#, SNAME ,SAGE),C(C#,CNANE),SC(S# ,C#,GRADE).其中S#是学生号,SNAME 是学生姓名,sage 是学生年龄,C#是课程号,CNAME是课程名称。
第一章1、SQL server2000是一个(B)关系型数据库管理系统A、B/SB、C/SC、D/SD、E/S2、下面关于实例名称的说明错误的是(A)A、实例名称区分大小写B、实例名称不能是default或mssqlserverC、实例名必须遵从SQL server标识符规则且不能为保留关键字D、必须将实例名限制为16个字符3、SQL server2000的核心管理工具是(B)A、服务管理器B、企业管理器C、SQL查询分析器D、osql实用工具4、SQL server2000的C/S体系结构可以采用灵活的部署方案,包括桌面系统、二层结构和三层结构。
5、SQL server2000包括企业版、标准版、个人版、开发版、评估版等版本。
6、执行SELECT@@SERVERNAME命令可以查询数据库服务器的名称。
7、简述客户机/服务器二层结构的工作原理在二层结构系统中,SQL Server 2000被安装在数据库服务器上,客户端程序可以安装在网络中的多台计算机上。
客户端程序可以通过网络连接直接访问数据库服务器,发送数据库访问请求;服务器接收到请求后,执行数据库访问操作,将执行结果返回到客户端程序;最后客户端程序将查询结果显示到用户界面上。
8、简述客户机/服务器三层结构的工作原理在三层结构系统中,客户端程序并不直接与数据库服务器打交道,它甚至可以不知道数据库服务器的存在,也不需要了解数据库结构。
当需要获取服务器中的数据时,客户端程序向应用服务器发送业务请求(注意,不是数据库访问请求),应用服务器对接收到的业务请求进行解析,将其转换为数据库访问语句,然后访问数据库服务器,执行SQL语句,获取查询结果;数据库服务器将结果返回到应用服务器,应用服务器再将此结果转换为客户端程序需要的业务数据,再发送到客户端程序;最后,客户端程序将接收到的应用服务器。
9、参照1.4.2小节练习安装SQL server2000服务器第二章1、下面关于SQL server2000服务器组的说明错误的是(D)A、可以在SQL server2000企业管理器内创建服务器组B、默认的SQL server服务器组的名称为“SQL server组”C、用户可以创建新的SQL server组D、不能为“SQL server组”创建子服务器组2、在注册SQL server服务器时,以下选项不是必须指定的是(C)A、服务器的名称B、身份验证模式C、登录名和密码D、注册服务器所在服务器组的名称3、下列(C)方式不能启动和停止SQL server服务A、服务管理器B、企业管理器C、服务器网络实用工具D、命令方式4、在“SQL server属性(配置)”对话框中,可以看到SQL server的(A)信息A、产品B、状态C、连接D、用户5、在windows服务中,SQL server的服务名为(B)A、SQL serverB、MSSQLSERVERC、Microsoft SQL ServerD、SQLSvr6、可以用于启动SQL server服务器的命令为(A)A、net start MSSQLSERVERB、start MSSQLSERVERC、start service MSSQLSERVERD、loading MSSQLSERVER7、SQL server的默认监听端口为(C)A、135B、23C、1433D、1398、当用户使用企业管理器连接到指定的服务器时,需要进行身份验证,因此,在注册服务器时需要指定的身份验证的模式。
SQL Server基础练习题及答案【幻天火焰】目录一、单表盘问练习 (1)二、聚合函数练习 (3)三、分组盘问练习 (3)四、嵌套盘问练习 (4)五、联接盘问练习 (6)六、外联接盘问 (7)七、补充提高 (7)一、单表盘问练习1、盘问 <学生信息表 >,盘问学生 "张三 "的全部根本信息Select *from A_studentinfowhere sname=' 张三 '2、盘问 <学生信息表 >,盘问学生 "张三 "和〞李四〞的根本信息Select *from A_studentinfowhere sname=' 张三 'or sname=' 李四 '3、盘问 <学生信息表 >,盘问姓 " 张 "学生的根本信息Select *from A_studentinfowhere sname like ' 张%'4、盘问 <学生信息表 >,盘问姓名中含有 "四 " 字的学生的根本信息Select *from A_studentinfowhere sname like '% 四 %'5、盘问 <学生信息表 >,盘问姓名长度为三个字,姓“李〞,且最后一个字是“强〞的全部学生信息。
select *from A_studentinfowhere sname like ' 李_强 '6、盘问 <学生信息表 >,盘问姓 " 张 "也许姓〞李〞的学生的根本信息。
Select *from A_studentinfowhere sname like ' 张%'or sname like ' 李 %'7、盘问 <学生信息表 >,盘问姓 " 张 "并且 " 所属省份 " 是 "北京 "的学生信息Select *from A_studentinfowhere sname like ' 张%'and province=' 北京 '8、盘问 <学生信息表 >,盘问 "所属省份 "是 " 北京 " 、〞新疆〞、〞山东〞也许 "上海 " 的学生的信息 Select *from A_studentinfowhere province in (' 北京 ',' 上海 ',' 新疆 ','山东 ')9、盘问 <学生信息表 >,盘问姓 " 张 ",但是 " 所属省份 " 不是 " 北京 "的学生信息Select *from A_studentinfowhere sname like ' 张%'and province !=' 北京 '10、盘问 <学生信息表 >,盘问全部学生信息,并依照“性别〞排序,性别相同的情况下依照“所属省份〞排序,所属省份相同的情况下再依照“班级〞排序select *from A_studentinfoorder by sex,province,class11、盘问 <学生信息表 >,盘问现有学生都来自于哪些不相同的省份select distinct province as省份from A_studentinfo12、盘问 <学生选修信息表 >,盘问没有填写成绩的学生的学号、课程号和成绩Select *from A_studentcoursewhere score is null13、盘问 <学生选修信息表 >,盘问全部填写了成绩的学生的选修信息,并依照“成绩〞从高到低进行排序Select *from A_studentcoursewhere score is not nullorder by score desc二、聚合函数练习1、统计 <学生信息表 >,统计共有多少个学生Select count (*) as 学生数量from A_studentinfo2、统计 <学生信息表 >,统计年龄大于20 岁的学生有多少个Select count(*) as 学生数量from A_studentinfowhere (2021-yearofbirth)>203、统计 <学生信息表 >,统计入学时间在1980 年至 1982 年的学生人数select count(*) as学生数量from A_studentinfowhere enrollment between '1998-01-01' and '2003-12-30'对照以下盘问方式,看看有何不相同,为什么?select count(*) as学生数量from A_studentinfowhere enrollment between '1998' and '2003'4、统计 <学生选修信息表>,统计学号为"S001"的学生的平均成绩Select avg(score) as 平均成绩from A_studentcoursewhere sno='S001'5、统计 <学生选修信息表>,统计学号为"S001"的学生的总成绩select sum(score) as 总成绩from A_studentcoursewhere sno ='S001'6、统计 <学生选修信息表>,盘问课程号为〞C001〞的课程的最高成绩select max(score) as 最高成绩from A_studentcoursewhere cno='C001'7、统计 <学生信息表 >,盘问全部学生中的最大年龄是多少select 2021-min(yearofbirth) as最大年龄from A_studentinfo三、分组盘问练习1、统计 <学生选修信息表>,统计每个课程的选修人数select cno,count(*)as 学生数量from A_studentcoursegroup by cno2、统计 <学生选修信息表>,统计每个同学的总成绩select sno,sum(score) as 总成绩from A_studentcoursegroup by sno3、统计 <学生信息表 >,统计每个班级中每种性其余学生人数,并依照班级排序select class as 班级 ,sex as 性别 , count(*) as 人数 from A_studentinfogroup by class,sexorder by class4、统计 <学生选修信息表>,统计每门课程的平均成绩,并依照成绩降序排序Select cno,avg(score) as 平均成绩from A_studentcoursegroup by cnoorder by avg(score) desc5、统计 <学生选修信息表>,显示有两门以上课程不及格的学生的学号Select sno as 不及格学生学号from A_studentcoursewhere score<60group by snohaving count(*)>16、统计 <学生信息表 >,统计每个班级中的最大年龄是多少select class as班级, 2021-min(yearofbirth) as最大年龄from A_studentinfogroup by class四、嵌套盘问练习1、用子盘问实现,盘问选修“高等数学〞课的全部学生的总成绩select sum(score) as 高等数学总成绩from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject=' 高等数学 ')2、用子盘问实现,统计 <学生选修信息表 >,显示学号为 "S001"的学生在其各科成绩中,最高分成绩所对应的课程号和成绩select score,cnofrom A_studentcoursewhere sno='S001'and score =(select max(score)from A_studentcoursewhere sno ='S001')思虑:若是该学号学生有两个课程分数都为最高的100 分,盘问会有什么结果3、用子盘问实现,盘问 2 班选修 " 数据库技术 " 课的全部学生的成绩之和select sum(score) as 数据库技术总成绩 from A_studentcoursewhere cno =(select cnofrom A_courseinfowhere subject=' 数据库技术 ')and sno in(select snofrom A_studentinfowhere class='2')4、用子盘问实现,盘问 3 班 "张三 "同学的 " 测试管理 " 成绩select scorefrom A_studentcoursewhere cno=(select cnofrom A_courseinfowhere subject=' 测试管理 ')and sno in(select snofrom A_studentinfowhere class='3'and sname=' 张三 ')五、联接盘问练习1、盘问 " 张三 " 的各科考试成绩,要求显示姓名、课程号和成绩 select sname as 姓名 ,cno as 课程号 ,score as 成绩 fromA_studentinfo,A_studentcourseand sname='张三 '2、盘问 " 张三 " 的各科考试成绩中,哪科没有记录考试成绩,要求显示姓名、课程号和成绩 select sname as 姓名 ,cno as 课程号 ,score as 成绩 fromA_studentinfo,A_studentcourseand sname='张三 'and score is null3、盘问 " 张三 " 的各门课程成绩,要求显示姓名、课程名称和成绩 select sname as 姓名 ,subject as 课程名称 ,score as 成绩 fromA_studentinfo,A_courseinfo,A_studentcourseandand A_studentinfo.sname=' 张三 '4、盘问 3 班" 张三 " 的" 测试管理 " 成绩,要求显示姓名、成绩select sname as 姓名 ,score as 成绩from A_studentcourse,A_courseinfo,A_studentinfoandand subject=' 测试管理 'and class='3'and sname='张三 '5、盘问全部 2000 年以前入学的,各班男生的各科考试平均成绩select class as 班级 ,avg(score) as 男生平均成绩 fromA_studentcourse,A_courseinfo,A_studentinfoandand sex='男 'and enrollment<'2000-01-01'group by class六、外联接盘问盘问李刚毅全部课程的成绩,并显示学号、姓名、课程号和成绩,没有成绩记录的学号包括:('S009','S010','S011') 1、使用左联接select A_studentinfo.sno as 学生表学号 ,sname as 姓名 ,A_studentcourse.sno as 成绩表学号 , cno as 课程号 ,score as成绩from A_studentinfoleft join A_studentcoursewhere sname='李刚毅 '2、使用右联接select A_studentinfo.sno as 学生表学号 ,sname as 姓名 ,A_studentcourse.sno as 成绩表学号 , cno as 课程号 ,score as 成绩from A_studentcourseright join A_studentinfowhere sname='李刚毅 '3、对照等值连接select sname,scorefrom A_studentinfo,A_studentcourseand sname='李刚毅 '七、补充提高1、盘问“张三〞比“王三〞入学早几年select A.sname as 姓名 ,year(A.enrollment) asB.sname as 姓名 ,year(B.enrollment) as 入学时间入学时间,,datediff(year,A.enrollment,B.enrollment) as年差from A_studentinfo A,A_studentinfo Bwhere A.sname=' 张三 'and B.sname='王三 '2、盘问所在班级和该班内学生的年龄之和,其中每个人的年龄都大于20 岁,每个班的年龄之和大于60 岁select class as 班级 ,sum(2021-yearofbirth) as 年龄和from A_studentinfowhere (2021-yearofbirth) >20group by classhaving sum(2021-yearofbirth)>60order by class3、从学生表中盘问第 2 到 5 条数据〔以学号排序〕select top 4 *from a_studentinfowhere sno not in(select top 1 snofrom a_studentinfoorder by sno)order by sno4、计算每种产品的节余库存量表 1,为产品进货表,产品名称 name[char(10)] ,产品数量 amount[int] 表 2,为产品出货表,产品名称 name[char(10)] ,产品数量 amount[int]业务逻辑:表 1 储藏产品的总进货量,表 2储藏每种产品每次的出货量,如产品 A 进货为 100,出货了 3 次,每次分别为 10、 20、 30,那么 A 产品的库存就为40表 A1|表 A2---------------------------------|---------------------------name amount|name amountA100|A10B100|A20|A30|B10|B40--方法 1--建立视图create view A2Sumasselect name,sum(amount) as thesumfrom A2group by name--关系盘问from A1,A2Sum--方法 2select ,A1.amount-A2Table.A2amount as stocks--方法 3--定义单个产品变量declare @aa int(select sum(amount)from A2where name='A'group by name)--计算单个产品节余select name,amount-@aa as leavefrom A1where name='A'5、盘问学生表,在结果中将性别为“男〞的显示为“先生〞,将性别为“女〞的显示为“女士〞,否那么显示为空。
sqlserver习题练习1、创建数据库图书管理系统(tsgl),其数据文件初始大小为10mb,最大值为100mb,增长率为10%;日志文件初始大小为2mb,最大值为20mb,增长率为1mb。
数据文件和日志文件都放在D盘下以自己的学号加姓名命名的文件内。
2、为tsgl数据库增加一个辅助数据文件,初始大小为20mb,最大值不受限制,增长率为20%。
3、在tsgl数据库中创建以下表:图书表:列名数据类型长度说明图书编号Char 15 主键名称Varchar 30 非空作者Char 8 非空价格Money出版社Varchar 30 非空备注Text读者表列名数据类型长度说明借书证编号Char 11 主键读者名Char 8 非空班级Char 7 非空性别Bit 非空Text备注借还表列名数据类型长度说明借书证编号Char 11 外键,参照读者表的借书证编号图书编号Char 15 外键,参照图书表的图书编号借阅时间Datetime归还时间Datetime向上面表添加如下数据:图书表:S10001 数学张建43 机械工业出版社S10002 语文何强40 内蒙古出版社S10003 C语言谭浩强62 清华大学出版社国家级精品教材读者表D2011 张三1000101 1D3011 李四1000102 0D3012 王五1000102 1借还表:D2011 S10002 2010/12/24D2011 S10003 2010/5/14 2010/6/11D3012 S10003 2010/4/3 2010/6/24、把语文这门图书的价格改为455、把语文的价格改为50,同时将其备注改为优秀教材6、将图书编号为S10001的出版社改为清华大学出版社7、将读者编号为D3012的读者编号改为D30138、记录读者编号为D2011在2010/12/27归回了一本图书编号为S10002的图书9、删除读者编号为D3012的读者信息。
实验1 数据库操作1.创建数据库:操作1.1:创建一个test数据库,其主数据文件逻辑名test_data,物理文件名test_data.mdf,初始大小10MB,最大尺寸为无限大,增长速度1MB;数据库日志文件逻辑名称为test_log,物理文件名为test_log.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为10%。
2.查看数据库属性:操作1.2:使用T-SQL语句查看数据库test属性3.删除数据库:操作1.3:使用T-SQL语句删除数据库test实验2 表操作1.创建表:操作2.1:创建学生表:操作2.2:创建课程信息表:操作2.3:创建选课表:表名:slt_couse 说明:选课表操作2.4:创建院系信息表:表名:dept 说明:院系信息表2.修改表结构:(1)向表中添加列:操作2.5:为“dept”表添加“dp_count”列(数据类型为nvarchar,长度为3,允许为空)(2)修改列数据类型:操作2.6:修改“dept”表的“dp_count”列数据类型为int(3)删除表中指定列:操作2.7:删除“dept”表的“dp_count”列3.删除表操作2.8:删除“dept”表4.向表中输入数据记录操作2.9:分别向“student”表、“couse”表、“slt_couse”表、“dept”表中输入数据记录实验3 数据完整性1.空值约束( NULL )操作3.1:将student表中的st_sex列属性更改为NOT NULL2.默认值约束( DEFAULT )操作3.2:将student表中的st_from列默认值设置为“陕西省”3.默认值对象操作3.3:创建默认值对象df_today为当前日期,并将其绑定到slt_couse表中的sltdate列,然后取消绑定,最后删除默认值对象df_today。
4.检查约束( CHECK )操作3.4:将slt_couse表中的score列的检查约束设置为>=0且<=1005.规则约束对象操作3.5:创建规则约束对象rl_sex,用于检查性别的取值仅限于“男”和“女”,并将其绑定到student 表中的st_sex列,然后取消绑定,最后删除规则约束对象rl_sex。
一、上机题一、上机题1. 在Student 数据库的以下表中数据库的以下表中 学生表(Student)基本数据表的字段 字段名字段名 类型类型 长度长度 StudentID Int (Identity) StudentCode Char 8 StudentName V archar 20 Sex Bit Phone V archar 20 Address V archar 100 Parent V archar 20 Birthdate Smalldatetime Remark V archar 500 Photo Image RegisterDateDatetime成绩表(Score)基本数据的字段字段名字段名类型类型长度长度 小数位小数位 ScoreID Int(Identity) StudentCodeChar 8 ExamType Char 1 Chinese Decimal 5 1 Math Decimal 5 1 English Decimal 5 1 Physics Decimal5 1 ChemistDecimal51(1) 在Student 表的StudentCode 字段创建聚集索引Index_StudentCode ,并且该索引为唯一索引,然后向Student 表中插入一条与表中记录的StudentCode 字段相同的记录,检查能否插入成功。
录,检查能否插入成功。
Create union index index_studentcode on student (studenrcode) (2) 在Student 表的StudentName 字段创建非聚集索引。
字段创建非聚集索引。
Create nonclustered index index_studentcode on student(studentname) (3) 在Score 表的StudentCode 字段创建聚集索引。
SQL server查询语句练习题用SQL语句创建四个表:create database tongjigouse tongjigocreate table student(Sno varchar(20) not null primary key 厂■学号Sname varchar(20) not null,—学生姓名Ssex varchar(20) not null,—学生性别Sbirthday datetime,--学生出生年月Class varchar(20)—学生所在班级)gocreate table teacher一老0帀(Tno varchar(20) not null primary key,一教工编号(主码)Tname varchar(20) not null,—教工姓名Tsex varchar(20) not null,―教工性别Tbirthday datetime,—教工出生年月Prof varchar(20)z--职称Depart varchar(20) not null—教工所在部门)gocreate table Course—课程(Cno varchar(20) not null primary key,一课程号Cname varchar(20) not null,--课程名称Tno varchar(20) not null references teacher(Tno), 一教工编号(外码))gocreate table Score—分数(Sno varchar(20) not null references student(Sno), ■■学号(外码)Cno varchar(20) not null references Course(Cno), 一课程号(外码) primary key(Sno,Cno), Degree Decimal(4z l)z—成绩)表中数据如下:表(_) Student表(二)Course表(三)Score表(四)Teacherselect Sname,Ssex,Class from student2、査询教师所有的单位即不重复的Depart列。
**学院课程考试试卷课程名称:《SQLServer:数据库设计和高级查询》(A)卷年级:班级:姓名: _______________ 学号: _________________考试(考查)闭卷题号1-2021-4041-50总分分数1.授予用户teacher对Score表的插入和修改的权限,正确的授权语句是()。
A. GRANT INSERT,UPDATE TO TABLE Score ON teacherB. GRANT INSERT AND UPDATE TO TABLE Score ON teacherC. GRANT INSERT,UPDATE ON Score TO teacherD. GRANT INSERT AND UPDATE ON Score TO teacher2.建立如下数据库表:CREATE TABLE department(DeptID int NOT NULL primary key,DeptName varchar (20) NOT NULL)CREATE TABLE Employee(EmployeeID int NOT NULL,DeptID int NOT NULL,Name varchar (20) NOT NULL)要想保证Employee 表中每一个雇员(Employee)是唯一的,且只能属于在Department 表中已经存在的部门,最佳的做法是()。
A. EmployeeID和DeptID设为组合主键B. EmployeeID设为主键,同时在DeptID 列上创建一个外键约束C. EmployeeID设为主键,同时在DeptID 列上创建一个检查约束D. 在 DepartmentID列上创建一个唯一约束,同时在DeptID 列上创建一个外键约束3.建立一张员工表( employee ),当向表中插入数据时,若不提供入职时间(beginTime) ,就把系统当前时间自动作为员工入职时间插入数据库中,以下说法正确的是()。
1、算数运算:计算下列表达式的值 1+2、1-2、45*45、62*68、5/3、5.0/3.0 3 -1 2025 4216 1 1.666666 2、求一个整数n除以另一个整数m的商和余数(n>m) 方法一: declare @n int,@m int,@shang int,@yu int set @n=329 set @m=78 set @shang=@n/@m set @yu=@n % @m print @shang print @yu 方法二: declare @n int,@m int set @n=20 set @m=6 select '商为',@n/@m,'余数为', @n%@m 3、对一个3位正整数x进行分解求和,如789,求s=7+8+9 declare @x int,@a int,@b int,@c int,@s int set @x=789 set @a=@x/100 set @b=(@x-100*@a)/10 set @c=@x-100*@a-10*@b set @s=@a+@b+@c print @s 4、两个变量的值交换,如a=3,b=5,交换后a=5,b=3 declare @a int,@b int,@c int set @a=3 set @b=5 set @c=@a set @a=@b set @b=@c select @a,@b 5、求下列函数的值(数值函数): (1)abs(-5),sqrt(9),square(9),power(2,10) 5 3.0 81.0 1024 (2)log(2),exp(1),round(12.56,1) 0.69314718055994529 2.7182818284590451 12.60 (3)ceiling(12.3),ceiling(-12.3) 13 -12 (4)floor(12.3),floor(-12.3), pi() 12 -13 3.1415926535897931 (5)sign(-152),sign(152),sign(0) -1 1 0 6、求下列函数的值(字符串函数): upper('aHJmkkTYhj') lower('aHJmkkTYhj') ltrim(' aH') rtrim('abc ') replicate('123',3) reverse('abcde')
AHJMKKTYHJ ahjmkktyhj aH abc 123123123 edcba
'3+5='+str(8) len('aHJmkkTYhj') right('201119511001',4) left('201119511001',4) substring('201119511001',5,4) replace('201119511001','2011','2012')
3+5= 8 , 10, 1001, 2011, 1951, 201219511001
7、求下列函数的值(日期和时间函数) getdate() year(getdate()) month(getdate()) day(getdate()) str(year(getdate()))+'年'+str(month(getdate()))+'月'+str(day(getdate()))+'日'
2013-06-04 21:02:10.347 2013 6 4 2013年 6月 4日 8、求下列函数的值(转换函数) cast('2012-4-3' as datetime) cast('123' as int)+500
2012-04-03 00:00:00.000 623 9、求下列函数的值(聚合函数) select count(*),avg(入学成绩),sum(入学成绩),max(入学成绩),min(入学成绩) from 学生 13 660.0 8580.0 772.0 269.0 10、求半径为r的圆面积s DECLARE @r float,@s float SET @r=5.6 SET @s=pi()*@r*@r print @s 11、已知三角形的三条边(a、b、c)的边长,求面积s DECLARE @a float,@b float,@c float,@p float,@s float set @a=3 set @b=4 set @c=5 set @p=(@a+@b+@c)/2 set @s=sqrt(@p*(@p-@a)*(@p-@b)*(@p-@c)) print '圆面积s='+str(@s) 12、假设某班有50个学生,其学号的尾数为01-50,随机抽取一个学生课堂发言。 方法一 DECLARE @a int set @a=ceiling(rand()*50) print '随机抽取的学号为:'+str(@a) 方法二 DECLARE @a int set @a= Round(Rand()*49+1,0) print @a 13、求解方程2x2+7x-78=0 Declare @a int,@b int,@c int,@x1 numeric(8,2),@x2 numeric(8,2),@d numeric(8,2) Set @a=2 Set @b=7 Set @c=-78 Set @d=square(@b)-4*@a*@c Set @x1=(-@b+sqrt(@d))/(2*@a) Set @x2=(-@b-sqrt(@d))/(2*@a) Select @x1,@x2 14、判断某一年(y)是否为闰年? DECLARE @y int set @y=2000 if @y%4=0 and @y%100<>0 or @y%400=0 print str(@y)+'年是闰年' else print str(@y)+'年不是闰年' 15、判断成绩的等级 方法一: DECLARE @a int SET @a=69 print CASE WHEN @a>=90 THEN '优秀' WHEN @a>=80 and @a<90 THEN '良好' WHEN @a>=70 and @a<80 THEN '中等' WHEN @a>=60 and @a<70 THEN '及格' else '不及格' END 方法二: DECLARE @a int,@b char(10) SET @a=69 Set @b= CASE WHEN @a>=90 THEN '优秀' WHEN @a>=80 and @a<90 THEN '良好' WHEN @a>=70 and @a<80 THEN '中等' WHEN @a>=60 and @a<70 THEN '及格' else '不及格' END Print @b 16、求和:s=1+2+3+……+100 DECLARE @i smallint,@sum smallint SET @i=1 SET @sum=0 WHILE @i<=100 BEGIN SET @sum=@sum+@i SET @i=@i+1 END PRINT ' s=1+2+3+……+100='+str(@sum) 17、求和:s=1+3+5……+99 DECLARE @i smallint,@sum smallint SET @i=1 SET @sum=0 WHILE @i<=99 BEGIN SET @sum=@sum+@i SET @i=@i+2 END PRINT ' s=1+3+5……+99='+str(@sum) 18、求和:s=2+4+6……+100 DECLARE @i smallint,@sum smallint SET @i=2 SET @sum=0 WHILE @i<=100 BEGIN SET @sum=@sum+@i SET @i=@i+2 END PRINT ' s=2+4+6……+100='+str(@sum) 19、求和:1-100之间能被7整除的所有数之和s DECLARE @i smallint,@sum smallint SET @i=0 SET @sum=0 WHILE @i<=100 BEGIN SET @i=@i+1 if @i%7=0 SET @sum=@sum+@i END PRINT '1-100之间能被7整除的所有数之和s='+ltrim(str(@sum)) 20、求和:s=1+1/2+1/4++1/8……+1/1024 DECLARE @i smallint,@s float SET @i=1 SET @s=0 WHILE @i<=1024 BEGIN SET @s=@s+1.0/@i SET @i=@i*2 END PRINT 's=1+1/2+1/4++1/8……+1/1024='+str(@s,10,5) 21、统计未来100年中闰年的年份个数 DECLARE @y int,@i int set @i=0 set @y=2013 print '未来100年中以下年份为闰年:' while @y<=2113 begin if @y%4=0 and @y%100<>0 or @y%400=0 begin print @y set @i=@i+1 end set @y=@y+1 end print '共有'+str(@i)+'年' 22、waitfor语句 waitfor delay '00:00:05' print '***********' print '* 12345 *' print '***********' 28、求s=1+2+3+……+n>9999的最小n Declare @i int, @sum int Set @i=1 Set @sum=0 While @sum<=9999 begin Set @sum=@sum+@i Set @i=@i+1 End Print @i 23、一张纸厚0.5mm、足够大,问至少对折多少次可以达到珠峰高度(8848.13m)? declare @n float,@s int set @n=0.5 set @s=0 while @n<8848.13*1000 begin set @n=@n*2 set @s=@s+1 end print @s 24、求t=5! DECLARE @i smallint,@s smallint SET @i=1 SET @s=1 WHILE @i<=5 BEGIN SET @s=@s*@i SET @i=@i+1 END PRINT '5!='+str(@s) 25、求s=1!+2!+3!+...+10! 的值