当前位置:首页 » 编程语言 » sql第五版试题
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql第五版试题

发布时间: 2022-11-05 00:08:51

A. sql数据库面试题 急急急

a)select pname as '商品名',avg(qty) as 平均销售量 from s,p,m where m.city='上海' and s.mno=m.mno and p.pno=s.pno,select p.Pno,p.pname,sum(s.qty)
from s left join p on s.pno=p.pno left join m on p.Mno=m.Mno
where m.city='上海市'
group by p.Pno,p.pname,p.city,p.color
b)、先删除Sale表的外键PNO,再删除gds表。

c)联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系
区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时四对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,视图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。

B. 谁来帮我解决这些SQL SERVER测试题

6 ad
7 ac
8 b 这是sql server里面的取前面记录,一般会用来分页

9 d

10 c

C. 计算机SQL语言试题

(一)现有关系数据库如下: 数据库名:我班同学数据库同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号) 宿舍表(宿舍号 char(6),宿舍电话) 用SQL语言实现下列功能的sql语句代码:1.创建数据库[我班同学数据库]代码。2.创建数据表[宿舍表]代码; 宿舍表(宿舍号 char(6),宿舍电话) 要求使用:主键(宿舍号)、宿舍电话:以633开头的7位电话号码3.创建数据表[同学表]代码; 同学表(学号 char(6),姓名,性别,年龄,民族,身份证号,宿舍号) 要求使用:主键(学号)、外键(宿舍号)、默认(民族)、非空(民族,姓名,年龄)、唯一(身份证号)、检查(性别)4.将下列宿舍信息添加到宿舍表的代码 宿舍号 宿舍电话 101 6331157 102 6331777 修改 宿舍号为101的 宿舍电话:6331158 删除 宿舍号为102的 宿舍信息5.创建视图[同学表视图]代码; 同学表视图(学号, 姓名, 性别, 年龄, 民族, 身份证号, 宿舍号, 宿舍电话)6.从同学表视图中查询姓张的女同学的姓名、性别、宿舍电话。7.从同学表中查询女同学的最大年龄、最小年龄、平均年龄。8.创建带参数的存储过程[某宿舍同学]:姓名, 性别, 宿舍电话 执行此过程,查询'101'宿舍情况 (二) 现有关系数据库如下: 数据库名:学生成绩数据库学生表(学号 char(6),姓名,性别,民族,身份证号) 课程表(课号 char(6),名称) 成绩表(ID,学号,课号,分数) 用SQL语言实现下列功能的sql语句代码:1.创建数据库[学生成绩数据库]代码 ;2.创建[课程表]代码 ; 课程表(课号 char(6),名称) 要求使用:主键(课号)、非空(名称)3. 创建[学生表]代码 ; 学生表(学号 char(6),姓名,性别,民族,身份证号) 要求使用:主键(学号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别)4. 创建[成绩表]代码 ; 成绩表(ID,学号,课号,分数) 要求使用:主键(课号)、外键(成绩表.学号,成绩表.课号)、检查(分数),自动编号(ID)5. 将下列课程信息添加到课程表的代码 课号 课程名称 100001 大学语文 100002 大学英语 100003 西班牙语 修改 课号为100002的课程名称:实用英语 删除 课号为100003的课程信息 6. 写出创建:成绩表视图(学号,姓名,课号,课程名称,分数)的代码; 8. 写出创建:某门课程高低均分 计算某门课程成绩最高分、最低分、平均分 存储过程以及执行的代码; 执行:所有修 实用英语 这门学生的最高分、最低分、平均分;9. 检索姓李的女同学的情况:姓名、性别、民族。 10.检索有一门或一门以上课程成绩大于等于90分的所有学生的信息,包括学号、姓名。 (三)有一个[学生课程]数据库,数据库中包括三个表:学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。 成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为:SG(Sno Cno, Grade) (SNO, CNO)为关键字。用SQL语言实现下列功能:1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。4.查询学习1号课程的学生最高分数、平均成绩。5.查询与“李洋”在同一个系学习的学生。6.将计算机系全体学生的成绩置零。
有些秘密是男人永远不会说的,所以就不要再问了,因为再问,他们给的答案也不会是真的!

1、男人很容易喜欢一个女人,却不轻易深爱一个女人。

2、男人在感情的王国里,绝对是个昏君。女人只要肯奉承,他什么都答应。

3、男人普遍喜欢外表温柔的女子,宁愿把精力花在事业或其他地方,也不愿全用来征服女人。

4、男人都不太重视对自己太好的女人。

5、男人都怕女人死缠烂打,但喜欢用同样的方式对付没追上的女人。

6、男人的梦想之一,是拥有可以超越友谊界限的红颜知己。

7、男人会以很理性的态度取舍爱情,就算他感性上很爱一个人,但当他清楚她并非一个好妻子时,他会放弃她,另找合适家居生活的那一个。男人认为恋爱和结婚是两回事,很多时候,他拖延结婚,根本原因就是他认为身边的女人不是想象中的好妻子。

8、男人对妻子的要求,可能比对恋人更低——在外型上,在性格上则更高。

9、懂得欣赏聪明女人的男人不多,和她们在一起,男人总觉得缺乏安全感受。

10、当有喜欢的女人在场时,男人会有如下表现:话多;显得聪明些;比平日慷慨;会把话题扯到得意成就上;会刻意显露平时少见的好心肠;多说一些自以为好笑的笑话引大家发笑。

11、一个男人同时是大男人和小男人的化身。大男人的他,希望女人完全迁就他,令他放心;小男人的他,意识到自己懦弱无能的一面,犹豫不决。说穿了,他们很多都是忌妒心重的小器鬼,又像孩子般容易被哄骗。

12、男人追求女人的时候愿意割舍一切自由,追到了越来越感到自由的重要性。

13、男人内心隐藏着狩猎心态,追捕,得到后就要驯服她,让她变成可在家饲养的乖乖动物。

14、男人都有爱当英雄的自大心态,所以很容易爱上向他诉苦的女人。

15、男人希望身边的女人明白:带着同一个女人去所有地方,实在是一件很闷的事(或许女人也这样觉得吧,只是不好意思说),所以和其他女人适度约会,是调剂和放松,完全可以没有其他企图。

16、两性关系中,女人需要男人告诉她,他愿意为她做任何牺牲,男人则需要女人告诉他,他很能干。

17、男人自以为是的多情,常常是女人眼中不折不扣的薄幸。

18、在男人心底,亲热到哪个程度,就是和女人的恋情发展到什么程度。

19、男人每隔一段时间,就有情绪和体力跌到谷底的几天,不想见任何人,躲起来翻翻书,听听音乐,看看影碟或狂打电玩发泄。

20、有过恋爱经验的男人都知道:女人是不能不骗的,类似像:“我会永远爱你”,“我一直都会像现在这样疼你”,“什么时候需要我,一个电话我就立刻赶来”,“我以后再也不会像爱你这样去爱另外一个人”这种话是必须要说但永远坚持不了的“骗话”,谁让女人这么爱听呢!

21、男人遇上旧情人多半会自作多情,以为与自己有过感情的人,内心总会保存一份情,幻想爱过他的女人永远爱他。女人只会美化眼前的男人,男人却不自觉地美化逝去的恋情。所以男人比女人更认同:分手还是朋友。不管是甩人还是被甩,男人多半愿意与前女友继续保持联络。

22、女人在意男友以前的女友,男人却在意女人离开他后找个什么样的男友。如果分手后仍是朋友的,他会时不时批评她的男友。

23、男人跌入爱河,很少问她的过去,不太关心她和哪种男人谈过恋爱,因为男人较注重女人的外表——外表就是现在。

24、男人不愿听心上人的旧恋情,因为一想到自己爱的人之前和其他男人有过肌肤之亲,就难以忍受。

25、面对两个对自己有爱意的人,女人会在徘徊中选择,男人不会为此烦恼——他其实只想同时追上两个人呢!

26、男人爱上一个女人,不一定对她有强烈的亲热冲动,反倒对一些他只是喜欢而不爱的女人,冲动更大些。

27、男人很容易被女人吸引,但他分得出哪种渴求出于性还是爱,大概知道能从她身上得到什么。

28、女人主动示爱,对男人来说,唯一的损失就是缩短了那段朦朦胧胧,若有若无的浪漫日子。

29、男人相信证明自身出色的重要表现之一是:拥有更多的女人。事业上越出色的男人,往往需要更多女人的仰慕和倾心以体现他的超凡脱俗。

30、男人在分手问题上拖泥带水,其实是想把去留的难题丢给女人,减少自己决定带来的内疚感。

31、男人说的“未来”是6个月到1年时间,女人的定义则可以是10年到50年。当男人爱上一个女人,他只会想象如何在短暂的未来与她亲密发展;女人则幻想到恋爱,结婚,生孩子乃至如何白头到老。

32、男人基本是都小器,大方是装出来的。表面上他们不拘小节,其实内心和女人一样,计算得清清楚楚。

33、女性较容易坦白心事,男人恰恰相反。遇到烦恼,他们找个别好友倾诉时,不会说得很完整,总会给自己留最后一点面子。男人的倾诉都是经过包装或刻意切碎的,不让一个人知道全部。这也是女人很难了解男人的原因——他们根本不想被人彻底了解。

34、一个男人可以爱上两个女人,但究竟喜欢哪个多一点,他多半分不清楚。

35、男人看待婚外情比女人实际,因为他有更多机会涉及婚外情,而且他心里明白——花心隐藏在男人的天性中。

36、男人要变心,其实和女人是否注意保持美丽仪表没直接关系,那只是他的借口之一。当他厌倦一个女人,不管她多漂亮,只要是她以外的任何女人,他都觉得比她有吸引力。

37、成熟男人对于崇拜他的少女,抵抗力是相当弱的。

38、男人年纪越大,择偶越随心所欲,乃至不顾他人的任何想法。

39、对许多男人来说,真爱意味着——爱情减去性。换句话,男人只要觉得女人缺乏性的吸引力,就可以一直跟她做单纯的朋友。

40、男人在有寻求亲热的身体冲动那一刻,对异性的要求忽然降低,他会觉得一个平时普通的女人很可爱,甚至很性感。不过等冲动一旦消退,他立刻恢复了习惯的审美判断。

41、男人对女人的爱天天快递查询 http://www.paijian.com/tt.html总是混合了生理冲动,亲热前他觉得女人什么都好,之后却可以无半点留恋,但为了不背负太多罪恶感,他们可以装作温柔地在事后继续吐露缠绵的情话。

42、男人很容易爱上卖弄风情,看起来唾手可得的女人,因为他觉得有更多机会触摸。

D. 我正在学习sql server 2005,我想找点练习题。

我这倒是有两个;练习 但是是word文档 不好复制进来 只能复制点笔试题 要机试题请发给邮件给我 我给你传过来 邮件中说明 是目的 不然我不知道会当垃圾邮件处理的 我的邮箱是 [email protected]

针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。针对每一道题目,所有答案都选对,则该题得分,否则不得分。
1. 数据库设计的最终目标不包括()。 (选择两项)BD
A. 高效
B. 满足范式要求
C. 安全
D. 表现设计者的技术实力
E. 易用
F. 便于将来扩展功能和容量
2. 有关数据冗余说法错误的是()。(选择一项)C
A. 数据库中,数据存在副本的现象,就是数据冗余。
B. 通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性。
C. 在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。
D. 数据冗余通常是由于数据库设计引起的。
3. 用于表示数据库实体之间的关系图是()。A
A. 实体关系图
B. 数据模型图
C. 实体分类图
D. 以上都不是
4. 假定有一个用户表,表中包含字段:userid (int)、username (varchar)、 password(varchar)等,该表需要设置主键,以下说法正确的是()。(选择两项)AB
A. 如果不能有同时重复的username和password,那么username和password可以组合在一起作为主键。
B. 此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。
C. 此表设计主键时,根据选择主键的最小性原则,最好采用username和password作为组合键。
D. 如果采用userid作为主键,那么在userid列输入的数值,允许为空。
5. 语句 alter table userinfo add constraint uq_userid unique(userid)执行成功后,为userinfo表的()字段添加了()约束。B
A. userid 主键
B. userid 唯一
C. uq_userid 外键
D. uq_userid 检查
6. 运行如下T-SQL,结果返回包含()的记录集。A
create table scores
(
scoreid int identity(1,2),
score numeric(4,2) not null,
courseid int
)
insert int scores values(90.5,null);
insert into scores values(78.234,2);
select * from scores;
A. 1 90.50 NULL
3 78.23 2
B. 1 78.23 2
C. 1 90.50
D. 1 90.50
2 78.23 2
7. 关于子查询,以下说法正确的是()。(选择两项)AC
A. 一般来说,表连接都可以用子查询替换。
B. 一般来说,子查询都可以用表连接替换。
C. 相对于表连接,子查询适合于作为查询的筛选条件。
D. 相对于表连接,子查询适合于查看多表的数据。
8. 创建存储过程如下:
create procere scoreproc
@scoreid int,@score numeric(4,2) output
as
select @score = score from scores where scoreid=@scoreid
正确的调用是:C
A. exec scoreproc 1,@myscore output
print @myscore
B. exec scoreproc @id = 1,@myscore output
print @myscore
C. declare @myscore numeric(4,2)
exec scoreproc 1,@myscore output
print @myscore
D. declare @myscore numeric(4,2)
exec scoreproc @id = 1,@myscore output
print @myscore
9. 假设需要设计一张表,记录各个作者着作的所有图书信息,表的结构如下:作者(作者名称,图书1,版本1,书价1,图书二,版本2,书价2,…),该表最多符合第()范式。A
A. 一
B. 二
C. 三
D. 不符合任何范式
10. 一个学生只能就读于一个班级,而一个班级可以同时容纳多个学生,学生与班级之间是()的关系。C
A. 一对一
B. 一对多
C. 多对一
D. 多对多
11. E-R图中,关系集用下面()来表示。B
A. 矩形
B. 椭圆形
C. 菱形
D. 圆形
12. 有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。
产品:#产品编号,产品名称,产品价格;
订单:#订单编号,#产品编号,订购日期,订购数量;(订单编号与产品编号是组合主键)
该表最高符合第()范式。B
A. 一
B. 二
C. 三
D. 未规范化的
13. 有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。
产品:#产品编号,产品名称,产品价格;
订单:#订单编号,总价,订购日期;
订单子项: #子项编号,订单编号,产品编号,订购数量;
该表最高符合第()范式。C
A. 一
B. 二
C. 三
D. 未规范化的
14. 创建sql语句如下:
create table userInfo
(
userId int identity(-1,1), 第1行
userName nvarchar(20) not null, 第2行
cardNO char not null, 第3行
age smallint(2), 第4行
address ntext(300) 第5行
)
执行时,会在第()行出现错误。(选择两项)DE
A. 1
B. 2
C. 3
D. 4
E. 5
15. 以下关于规范设计的描述正确的是()。(选择两项)AD
A. 规范设计的主要目的是消除数据冗余。
B. 规范设计往往会增加数据库的性能。
C. 设计数据库时,规范化程度越高越好。
D. 在规范化数据库时,易于维护数据库的完整性。
16. 关于存储过程,以下说法正确的是()。(选择一项)A
A. 不能在存储过程中使用CREATE VIEW命令。
B. T-SQL批代码的执行速度要快于存储过程。
C. 存储过程必须带有参数。
D. 存储过程不能返回结果集。
17. 已知有scores表,scoreid为主键,现在表中共有10条记录,其中一条scoreid=21。
创建视图:
create view view_scores
as
select * from scores
执行如下命令:
delete from view_scores where (scoreid = 21)
再执行如下命令:
select * from scores
select * from view_scores
假定上述命令全部执行成功,将各自返回()()行记录。D
A. 10,10
B. 10,9
C. 9,10
D. 9,9
18. 设计用户表时,身份证号为固定18位长,对该字段最好采用()数据类型。(选择一项)B
A. int
B. char
C. varchar
D. text
19. 授予用户someone对scores表的一些权限,正确的授权语句是()。(选择一项)C
A. grant insert , update to talbe scores on someone
B. grant insert and update to table scores on someone
C. grant insert , update on scores to someone
D. grant insert and update on scores to someone
20. 建立如下数据库表:
create talbe Department(
departID 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表中已经存在的部门,最有的做法是()。(选择一项)B
A. 把employeeID和deptID设为组合主键。
B. 把employeeID设为主键,同时在deptID列上创建一个外键约束。
C. 把employeeID设为主键,同时在deptID列上创建一个检查约束。
D. 在deptID列上创建一个唯一约束,同时在deptID列上创建一个外键约束。
21. 建立一张员工表,当向表中插入数据时,若不提供入职时间,就把系统当前时间作为员工入职时间插入数据库,以下说法正确的是()。(选择一项)D
A. 约束不能使用各种函数,所以无法实现要求的功能。
B. 可以使用CHECK约束实现,默认值采用日期函数getDate()。
C. 入职时间必须设为日期类型。
D. 可以使用DEFAULT约束实现,默认值采用日期函数getDate()。
22. 为了加快对某表查询的速度,应对此表建立()。(选择一项)D
A. 约束
B. 存储过程
C. 规则
D. 索引
23. 假设有表student(学生)的设计如下:
id () 标识列
name () 学生姓名
address () 学生地址
department () 所属院系
departmentHead () 学院主管
该表最高满足()范式。(选择一项)B
A. 一
B. 二
C. 三
D. 不满足任何范式
24. 为数据库中一个或者多个表中的数据提供另外一种查看方式的逻辑表被称为()。(选择一项)C
A. 存储过程
B. 数据库关系图
C. 视图
D. 表
25. 要建立一个教师表,包含姓名、职称、级别等字段。若插入数据时,级别字段如果不输入,缺省值为“讲师”,最合适的实现方式是()。A
A. 为“级别”字段建立default约束。
B. 为“级别”字段建立check约束。
C. 为教师表数据输入编写一个存储过程进行控制。
26. 现有订单表orders,包含数据如下表。若查询既订购了产品p01,又订购了产品p02的顾客编号,可以执行以下()sql语句。(选择两项)CD

A. select distinct (cid) from orders ol where ol.pid in ('p01','p02')
B. select distinct (cid) from orders ol where ol.pid = 'p01' and ol.pid = 'p02'
C. select distinct (o1.cid) from orders o1,orders o2 where o1.pid='p01' and o2.pid='p02' and o2.cid = o1.cid
D. select distinct(cid) from orders where pid = 'p01' and cid in(select cid from orders where pid='p02')
27. 关于聚集索引,以下()说法是错误的。(选择两项)CD
A. 一个表最多只能创建一个聚集索引。
B. 聚集索引比非聚集索引有更快的访问速度。
C. 主键一定是聚集索引。
D. 创建了聚集索引的列不允许有重复值。
28. 关于视图,以下()说法是错误的。(选择一项)C
A. 使用视图,可以简化数据的使用。
B. 使用视图,可以保护敏感数据。
C. 视图是一种虚拟表,视图中的数据只能来源于物理数据表,不能来源于其他视图。
D. 视图中指存储了查询语句,并不包含任何数据。
29. 常用的存储过程不包括()。(选择一项)D
A. sp_tables
B. sp_columns
C. sp_stored_proceres
D. sp_renametable
30. 对事务的描述错误的是()。(选择2项)BD
A. 一个事务中的所有命令作为一个整体提交或者回滚。
B. 如果两个并发事务要同时修改一个表,可能产生死锁。
C. SQL Server默认将每条单独的T-SQL语句视为一个事务。
D. 事务必须使用begin transaction来明确制定事务的开始。
31. 分数表scores设计如下:
courseID(课程编号)
studentID(学生编号)
score(分数)
另有一个学生信息表student,包含studentID,sname(学生姓名)。
已知并非所有学生都参加了courseID为0001的考试,现在查询所有参加0001号课程考试及格学生的学生姓名,下面正确的是()。(选择一项)A
A. select sname from student where studentID in (select studentID from scores where courseID = 0001 and score>=60)
B. select sname from student where studentID = (select studentID from scores where courseID = 0001 and score>=60)
C. select sname from student where studentID not in (select studentID from scores where courseID = 0001 and score<=60)
D. select sname from student where studentID exists (select studentID from scores where courseID = 0001 and score>=60)
32. 在()的列上更适合创建索引。(选择两项)AD
A. 需要对数据进行排序
B. 具有默认值
C. 频繁更改
D. 频繁搜索
33. SQL Server数据库有2种登录认证方式。其中在()方式下,需要客户端应用程序连接时提供登录时需要用户标识和密码。C
A. Windows身份认证。
B. 以超级用户身份登录。
C. SQL Server身份认证。
D. 以系统身份登录时。
34. SQL Server数据库中,下列不属于T-SQL事务管理语句的是()。(选择一项)B
A. BEGIN TRANSACTION;
B. END TRANSACTION;
C. COMMIT TRANSACTION;
D. ROLLBACK TRANSACTION;
35. 要建立一个约束,保证用户表(user)中年龄(age)必须在16岁以上,下面语句正确的是()。(选择一项)A
A. alter table user add constraint ck_age CHECK(age>16)
B. alter table user add constraint df_age DEFAULT(16) for age
C. alter table user add constraint uq_age UNIQUE(age>16)
D. alter table user add constraint df_age DEFAULT(16)
36. SQL Server数据库中,包含两个表:Order订单表,Item订单子项目表。当一个新订单被加入时,数据要分别保存到Order和Item表,要保证数据完整性,可以使用以下()语句。(选择一项)C
A. BEGIN TRASACTION
INSERT INTO Order VALUES(此处省略)
INSERT INTO Items VALUES(此处省略)
END TRASACTION
B. BEGIN TRASACTION
INSERT INTO Order VALUES(此处省略)
INSERT INTO Items VALUES(此处省略)
IF(@@Erro = 0)
COMMIT TRASACTION
ELSE
ROLLBACK TRASACTION
C. BEGIN TRASACTION
INSERT INTO Order VALUES(此处省略)
IF(@@Erro = 0)
INSERT INTO Items VALUES(此处省略)
IF(@@Erro = 0)
COMMIT TRASACTION
ELSE
ROLLBACK TRASACTION
ELSE
ROLLBACK TRASACTION
D. BEGIN TRASACTION
INSERT INTO Order VALUES(此处省略)
INSERT INTO Items VALUES(此处省略)
IF(@@Erro <> 0)
ROLLBACK TRASACTION
37. 现有一个学生信息表student,包含主键studentID(学生编号)。又有分数表scores,包含studentID(学生编号)、以及score(考试分数)。已知student表中共有50个学生,有45人参加了考试(分数存在scores表中),其中10人不及格。执行以下SQL语句:
select * from student where exists(select studentId form score where score<60)
可返回()条记录。(选择一项)A
A. 50
B. 45
C. 10
D. 0
38. create table student
(
id int identity(1,1),
name varchar(20)
)
alter table student add constraint uq_name unique(name)
insert into student values(null)
insert into student values(null)
insert into student values('jack')
insert into student values('jack')
依次执行以上SQL语句后,student表中存在()行记录。B
A. 1
B. 2
C. 3
D. 4
39. 已知employee表中具有默认约束df_email,删除该约束的语句为()。(选择一项)A
A. alter talbe employee drop constraint df_email
B. alter talbe employee remove constraint df_email
C. alter talbe employee delete constraint df_email
D. remove constraint df_email from talbe employee
40. 在employee表的firstname字段上建立的非聚集索引的物理效果是()。(选择一项)D
A. 所有的行按照firstname字段值升序排列并物理地存储在数据页中
B. 索引中的项按照索引键值的顺序存储,但表中信息的顺序保持不变。
C. 所有的行按照firstname字段值降序排列并物理地存储在数据页中
D. 所有的行被物理地存储在数据页上,并且根据firstname字段按照索引建立时指定的顺序排列
41. 创建存储过程的片断如下:创建成功后,以下()调用方式是正确的。(选择一项)B
create procere proc_score
@passed int = 60,
@count int output
as
select count(*) from scores where score < @passed
A. execute proc_score @count int output
B. declare @count int
execute proc_score 70,@count output
C. declare @count int output
execute proc_score 70,@count
D. execute proc_score 70,@count output
42. 现有学生表Students和用户表Users,两表中的数据如下:
执行sql语句:select * from Users union select * from Students。下列说法正确的是()。(选择一项)A
Users Students
userID(int) name (varchar) studentID(int) age(int)
1 Wen 1 80
2 Shu 2 75
3 Gao
4 Shui
A. 出现错误:name与age不是同一数据类型。
B. 正确执行,返回6行4 列。
C. 正确执行,返回6行2 列。
D. 正确执行,返回4行2列。
43. 假设有scores表的设计如下:
ID(编号,主键)
StudentID(学生编号)
CourseID(课程编号)
Score(分数)
现在要查询参加过至少两门课程考试的学生各门课程的平均成绩。以下SQL语句正确的是()。(选择一项)A
A. select StudentID,avg(score) from scores group by StudentID having count(studentID)>1
B. select StudentID,avg(score) from scores group by StudentID where count(studentID)>1
C. select StudentID,avg(score) from scores group by StudentID where count(studentID)>1 group by StudentID
D. select StudentID,avg(score) from scores having count(studentID)>1
44. 假设orders表中存在orderid等于1的纪录,执行下面T-SQL:
begin transaction
delete from orders where orderid = 1
if (@@error<>0)
rollback transaction
rollback transaction
以下说法正确的是()。(选择一项)B
A. 执行成功,orderid为1的记录被永久删除。
B. 执行成功,orders表没有任何变化。
C. 执行时出现错误。
D. 执行成功,但事务处理并没有结束。
45. 项目开发需要经过几个阶段,绘制数据库的E-R图应该在()阶段进行。(选择一项)B
A. 需求分析
B. 概要设计
C. 详细设计
D. 代码编写
46. 将E-R图转换为表的过程中,如果实体之间存在多对多的关系,通常的做法是()。(选择一项)B
A. 在两个实体间建立主外键关系。
B. 在两个实体间建立关联表,把一个多对多的关系分解成两个一对多的关系。
C. 在两个实体间建立关联表,把一个多对多的关系分解成两个一对一的关系。
D. 在两个实体间不建立任何关系。
47. 某个字段希望存放电话号码,该字段应选用()数据类型。
A. char(10)
B. text
C. varchar(13)
D. int
48. 运行以下语句得到的结果是()C
use javaWebDB
create table numbers
(
N1 INT,
N2 NUMERIC(5,0),
N3 NUMERIC(4,2),
)
INSERT numbers VALUES(100,100.5,10.5)
select * from numbers
A. 返回100,100,10.5的结果集
B. 返回100,100,10.50的结果集
C. 返回100,101,10.50的结果集
D. 语句无法全部成功执行
49. 数据库事务处理具有如下特征(),被简称为ACID。(选择四项)ACEF
A. 原子性
B. 安全性
C. 隔离性
D. 完整性
E. 持久性
F. 一致性
50. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能( )。C
A. 数据查询
B. 数据操纵
C. 数据定义
D. 数据控制

E. 面试题目(sql)

1、忍不住想说一句,因为第一题中的字段类型是
【日期型】,而各种数据库操作日期型数据有不同的方法,没有一种共通的方法,所以脱离了数据库而言没有一种共通的sql。
2、select
ID,NAME,ADDRESS,PHONE,LOGDATE
from
T
where
ID
in(
select
ID
from
T
group
by
NAME
having
count(*)>1)
order
by
NAME;
3、delete
from
T
where
ID
not
in
(select
min(id)
from
T
group
by
name);
4、update
T
set
T.ADDRESS=(select
E.ADDRESS
from
E
where
E.NAME=T.NAME),
T.PHONE=(select
E.PHONE
from
E
where
E.NAME=T.NAME);
5、这个不同的数据库也有不同的处理方法,不能脱离数据库谈了。
如:SqlServer或者access可以使用
top
oracle可以使用
rownum

---
以上,希望对你有所帮助。

F. sql期末考试试题及答案

查询题:1).select*fromEMPwhereDEPTNO='20';2).select*fromEMPwhereENAMElike'MA%';3).select*fromEMPorderbyJOB;4).selectb.DNAME,COUNT(a.*)asnumfromEMPaleftjoinDEPTbona.DEPTNO=b.DEPTNOgroupbyb.DNAME5).select*fromEMPwhereSAL>(selectmax(SAL)asSALfromEMPwhereDEPTNO='20');程序题:1).函数:CREATEFUNCTION[SumN](@nINT)RETURNSINTASBEGINdeclare@outINT,@iintset@out=0set@i=1while@i<=@nbeginset@out=@out+@iset@i=@i+1endreturn(@out)END2).存储过程:CREATEPROCEDURE[emp_info](@nDECIMAL(2))ASselect*fromEMPwhereDEPTNO=@n视图和索引1).CREATEVIEW[emp10_view]ASselect*fromEMPwhereDEPTNO='10'2).ALTERTABLE[EMP]ADDCONSTRAINT[IX_Empno]PRIMARYKEYCLUSTERED([empno]ASC)

G. sql面试题50题(mysql版)

--插入学生表测试数据
insert into Student values(༽' , '赵雷' , 񟬶-01-01' , '男');
insert into Student values(༾' , '钱电' , 񟬶-12-21' , '男');
insert into Student values(༿' , '孙风' , 񟬶-05-20' , '男');
insert into Student values(ཀ' , '李云' , 񟬶-08-06' , '男');
insert into Student values(ཁ' , '周梅' , 񟬷-12-01' , '女');
insert into Student values(ག' , '吴兰' , 񟬸-03-01' , '女');
insert into Student values(གྷ' , '郑竹' , 񟬵-07-01' , '女');
insert into Student values(ང' , '王菊' , 񟬶-01-20' , '女');
--课程表测试数据
insert into Course values(༽' , '语文' , ༾');
insert into Course values(༾' , '数学' , ༽');
insert into Course values(༿' , '英语' , ༿');
--教师表测试数据
insert into Teacher values(༽' , '张三');
insert into Teacher values(༾' , '李四');
insert into Teacher values(༿' , '王五');
--成绩表测试数据
insert into Score values(༽' , ༽' , 80);
insert into Score values(༽' , ༾' , 90);
insert into Score values(༽' , ༿' , 99);
insert into Score values(༾' , ༽' , 70);
insert into Score values(༾' , ༾' , 60);
insert into Score values(༾' , ༿' , 80);
insert into Score values(༿' , ༽' , 80);
insert into Score values(༿' , ༾' , 80);
insert into Score values(༿' , ༿' , 80);
insert into Score values(ཀ' , ༽' , 50);
insert into Score values(ཀ' , ༾' , 30);
insert into Score values(ཀ' , ༿' , 20);
insert into Score values(ཁ' , ༽' , 76);
insert into Score values(ཁ' , ༾' , 87);
insert into Score values(ག' , ༽' , 31);
insert into Score values(ག' , ༿' , 34);
insert into Score values(གྷ' , ༾' , 89);
insert into Score values(གྷ' , ༿' , 98);

-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
select c.*,a.s_score as 01课程score,b.s_score as 02课程score from
score a,score b
left join student c
on b.s_id = c.s_id
where a.s_id = b.s_id and a.c_id = ༽' and b.c_id = ༾' and a.s_score > b.s_score;

-- 2、查询"01"课程比"02"课程成绩低的学生的信息及课程分数
select a.* ,b.s_score as 01课程,c.s_score as 02课程 from student a
join score b
on a.s_id=b.s_id and b.c_id = ༽'
left join score c
on b.s_id = c.s_id and c.c_id = ༾'
where b.s_score < c.s_score ;

-- 3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
select a.s_id,a.s_name,round(avg(b.s_score),2) as 平均成绩 from student a
join score b
on a.s_id = b.s_id
group by b.s_id having 平均成绩 >= 60;
备注:round[avg(成绩),1]里,round是四舍五入函数,1代表保留1位小数

-- 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩
-- (包括有成绩的和无成绩的)
select b. ,round(avg(a.s_score),2) as 平均成绩 from
student b
left join score a on b.s_id = a.s_id group by a.s_id having 平均成绩 < 60
union
select b.
,0 as 平衡成绩 from student b where b.s_id not in (select s_id from score);

-- 5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩
select a.s_id,a.s_name,count(b.c_id) as 选课总数 ,sum(b.s_score) as 总分 from student a
left join score b
on a.s_id = b.s_id group by s_id ;

-- 6、查询"李"姓老师的数量
select count(*) as 李姓老师数量 from teacher where t_name like '李%'

-- 7、查询学过"张三"老师授课的同学的信息
select a.* from student a join score b
on a.s_id = b.s_id
where b.c_id in (select c.c_id from course c
join teacher d on c.t_id = d.t_id where d.t_name = '张三');

-- 8、查询没学过"张三"老师授课的同学的信息
select a.* from student a left join score b on a.s_id = b.s_id where a.s_id not in
(select s_id from score where c_id =
(select c_id from course where t_id =
(select t_id from teacher where t_name = '张
三'))) group by a.s_id;

-- 9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
select * from student where s_id in
(select a.s_id from score a join score b on a.s_id = b.s_id
where a.c_id = ༽' and b.c_id = ༾');

-- 10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息
select * from student where s_id in
(select s_id from score where c_id = ༽' )
and s_id not in (select s_id from score where c_id = ༾' );

-- 11、查询没有学全所有课程的同学的信息
select * from student where s_id not in
(select s_id from score group by s_id having count(c_id) = 3);

-- 12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息
select distinct a.* from student a left join score b
on a.s_id = b.s_id where b.c_id in
(select c_id from score where s_id = ༽') and a.s_id != ༽' ;
注意:distinct是去重的

-- 13、查询和"01"号的同学学习的课程完全相同的其他同学的信息
select * from student where s_id in
(select s_id from score group by s_id having count(c_id) =
(select count(c_id) from score where s_id = ༽') and s_id not in
(select s_id from score where c_id not in
(select c_id from score where s_id = ༽')) and s_id != ༽');

-- 14、查询没学过"张三"老师讲授的任一门课程的学生姓名
select s_name from student where s_id not in
(select s_id from score where c_id in
(select c_id from course where t_id in
(select t_id from teacher where t_name ='张三')));

-- 15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
select a.s_id ,b.s_name,round(avg(a.s_score),2) as 平均成绩 from score a
left join student b on a.s_id = b.s_id
where s_score < 60 group by s_id having count(1) >=2;
或者试试
select a.s_id ,b.s_name,round(avg(a.s_score),2) as 平均成绩 from score a
left join student b on a.s_id = b.s_id
where a.s_score < 60 group by a.s_id having count(*) >=2;

-- 16、检索"01"课程分数小于60,按分数降序排列的学生信息
select a.* ,b.c_id ,b.s_score from student a
left join score b on a.s_id = b.s_id
where b.c_id = ༽' and b.s_score < 60
order by b.s_score desc;

-- 17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
select a.s_name ,
sum(case when b.c_id = ༽' then s_score else null end ) as 语文,
sum(case when b.c_id = ༾' then s_score else null end ) as 数学,
sum(case when b.c_id = ༿' then s_score else null end ) as 英语,
round(avg(s_score),2) as 平均成绩
from student a left join score b on a.s_id = b.s_id group by a.s_name
order by 平均成绩 desc;

-- 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
--及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
select b.c_id,b.c_name,
max(a.s_score) as 最高分,
min(a.s_score) as 最低分,
round(avg(a.s_score),2) as 平均分,
round(sum(case when a.s_score>= 60 then 1 else 0 end)/count(s_id),2) as 及格率 ,
round(sum(case when a.s_score>= 70 and a.s_score <80 then 1 else 0 end)/count(s_id),2) as 中等率,
round(sum(case when a.s_score>= 80 and a.s_score <90 then 1 else 0 end)/count(s_id),2) as 优良率,
round(sum(case when a.s_score>= 90 then 1 else 0 end)/count(s_id),2) as 优秀率
from score a
left join course b
on a.c_id = b.c_id group by b.c_id;

-- 19、按各科成绩进行排序,并显示排名
第一种:
set @pre_c_id:= ༽'
set @rank:=0;
select tb2.s_id ,tb2.c_id,tb2.s_score,tb2.排名 from
(select *,(case when tb1.c_id = @pre_c_id then @rank:=@rank+1 else @rank:=1 end) as 排名,
(case when @pre_c_id = tb1.c_id then @pre_c_id else @pre_c_id:=tb1.c_id end ) as pre_c_id
from
(select * from score order by c_id,s_score desc) tb1 )tb2;

如果看不懂用第二种方法:
SELECT a.c_id,a.s_id,a.s_score,COUNT(b.s_score)+1 AS 排名
FROM score a LEFT JOIN score b ON a.s_score<b.s_score AND a.c_id = b.c_id
GROUP BY a.c_id,a.s_id,a.s_score ORDER BY a.c_id,排名,a.s_id ASC

-- 20、查询学生的总成绩并进行排名
set @rank:=0;
select * ,(@rank:=@rank+1) as rank from
(select s_id ,sum(s_score) as 总成绩 from score
group by s_id order by 总成绩 desc) tb1;

-- 21、查询不同老师所教不同课程平均分从高到低显示
select a.c_id, d.t_name,round(avg(a.s_score)) as 平均分 from score a
left join student b on a.s_id = b.s_id
left join course c on a.c_id = c.c_id
left join teacher d on c.t_id = d.t_id group by a.c_id
order by 平均分 desc;

-- 22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
set @pre_c_id:= ༽'
set @rank:=0;
select b.s_name,tb2.s_id ,tb2.c_id,tb2.s_score,tb2.排名 from
(select *,(case when tb1.c_id = @pre_c_id then @rank:=@rank+1 else @rank:=1 end) as 排名,
(case when @pre_c_id = tb1.c_id then @pre_c_id else @pre_c_id:=tb1.c_id end ) as pre_c_id
from
(select * from score order by c_id,s_score desc) tb1 )tb2 join student b on tb2.s_id = b.s_id where 排名 = 2 or 排名 =3;

-- 23、统计各科成绩各分数段人数:课程编号,课程名称,[100-85],(85-70],(70-60],(0-60]及所占百分比
select b.c_id,b.c_name ,
sum(case when a.s_score >=85 then 1 else 0 end) as 100-85 ,
concat(round(100 sum(case when a.s_score >=85 then 1 else 0 end)/count( ),2), '%') as 百分比,
sum(case when a.s_score <85 and a.s_score >=70 then 1 else 0 end) as 85-70 ,
concat(round(100 sum(case when a.s_score <85 and a.s_score >=70 then 1 else 0 end)/count( ),2),'%') as 百分比,
sum(case when a.s_score <70 and a.s_score >=60 then 1 else 0 end) as 70-60 ,
concat(round(100 sum(case when a.s_score <70 and a.s_score >=60 then 1 else 0 end)/count( ),2) ,'%')as 百分比,
sum(case when a.s_score <60 and a.s_score >=0 then 1 else 0 end) as 60-0 ,
concat(round(100 sum(case when a.s_score <60 and a.s_score >=0 then 1
else 0 end)/count(
),2),'%') as 百分比
from score a left join course b on a.c_id = b.c_id group by b.c_id;

-- 24、查询学生平均成绩及其名次
select tb1.*,(@rank:=@rank +1 ) as rank from
(select s_id ,round(avg(s_score),2) as 平均成绩 from score
group by s_id order by 平均成绩 desc) tb1,(select @rank:=0) b;

-- 25、查询各科成绩前三名的记录
set @pre_c_id:= ༽'
set @rank:=0;
select b.s_name,tb2.s_id ,tb2.c_id,tb2.s_score,tb2.排名 from
(select *,(case when tb1.c_id = @pre_c_id then @rank:=@rank+1 else @rank:=1 end) as 排名,
(case when @pre_c_id = tb1.c_id then @pre_c_id else @pre_c_id:=tb1.c_id end ) as pre_c_id
from
(select * from score order by c_id,s_score desc) tb1 )tb2 join student b on tb2.s_id = b.s_id where 排名 <4;

-- 26、查询每门课程被选修的学生数
select c_id ,count(s_id) as 选修人数 from score group by c_id;

-- 27、查询出只有两门课程的全部学生的学号和姓名
select a.s_id ,b.s_name from score a left join student b on a.s_id = b.s_id group by s_id having count(*) = 2;

-- 28、查询男生、女生人数
select sum(case s_sex when '男' then 1 else 0 end) as 男生人数,
sum(case s_sex when '女' then 1 else 0 end) as 女生人数 from student;

-- 29、查询名字中含有"风"字的学生信息
select * from student where s_name like '%风%'

-- 30、查询同名同性学生名单,并统计同名人数
--略,不想写

-- 31、查询1990年出生的学生名单
select * from student where s_birth like 񟬶%'

-- 32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列
select c_id ,round(avg(s_score),2) as 平均成绩 from score group by c_id order by 平均成绩 desc, c_id asc;

-- 33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
select a.s_id,b.s_name ,round(avg(s_score),2) as 平均成绩 from score a
left join student b on a.s_id = b.s_id group by a.s_id having 平均成绩>=85;

-- 34、查询课程名称为"数学",且分数低于60的学生姓名和分数
select b.s_name ,a.s_score from score a
left join student b on a.s_id = b.s_id
where a.c_id=(select c_id from course where c_name = '数学')and a.s_score < 60;

-- 35、查询所有学生的课程及分数情况;
select b.s_name,
sum(case when a.c_id = ༽' then a.s_score else null end) as 语文,
sum(case when a.c_id = ༾' then a.s_score else null end) as 数学,
sum(case when a.c_id = ༿' then a.s_score else null end) as 英语
from score a right join student b on a.s_id = b.s_id group by b.s_name

-- 36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;
select b.s_name,
sum(case when a.c_id = ༽' then a.s_score else null end) as 语文,
sum(case when a.c_id = ༾' then a.s_score else null end) as 数学,
sum(case when a.c_id = ༿' then a.s_score else null end) as 英语
from score a right join student b on a.s_id = b.s_id group by b.s_name having 语文>= 70 or 数学>= 70 or 英语>= 70 ;

-- 37、查询不及格的课程
select a.s_id,a.c_id,b.c_name,a.s_score from score a
left join course b on a.c_id = b.c_id where a.s_score<60;

--38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名;
select a.s_id,b.s_name from score a left join student b on a.s_id = b.s_id where a.c_id = ༽' and a.s_score>=80;

-- 39、求每门课程的学生人数
select c_id,count(*) as 学生人数 from score group by c_id ;

-- 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩
select a.*,b.c_id,max(b.s_score) as 最高成绩 from student a
right join score b on a.s_id = b.s_id
group by b.c_id
having b.c_id = (select c_id from course
where t_id = (select t_id from teacher where t_name = '张三'));

-- 41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
--(这题我搞不清题目是什么意思,是指查找学生个体参加了的所有课程的成绩各不相同的那个学生信息呢?还是所有课程之间做对比呢,我更倾向于理解为前者)

--理解为前者的写法
select * from
(select * from score group by s_id,s_score) tb1
group by s_id having count(*) = 1;

--理解为后者的写法
select distinct a.s_id,a.c_id,b.s_score from score a,score b where a.c_id != b.c_id and a.s_score = b.s_score;

-- 42、查询每门课程成绩最好的前两名
set @pre_c_id:= ༽'
set @rank:=0;
select tb2.s_id ,tb2.c_id,tb2.s_score from
(select *,(case when tb1.c_id = @pre_c_id then @rank:=@rank+1 else @rank:=1 end) as 排名,
(case when @pre_c_id = tb1.c_id then @pre_c_id else @pre_c_id:=tb1.c_id end ) as pre_c_id
from
(select * from score order by c_id,s_score desc) tb1 )tb2
join student b on tb2.s_id = b.s_id where 排名 <3;

-- 43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人相同,按课程号升序排列
select c_id ,count(*) as 选修人数 from score group by c_id having 选修人数>5 order by 选修人数 desc , c_id asc;

-- 44、检索至少选修两门课程的学生学号
select s_id from score group by s_id having count(*) >= 2;

-- 45、查询选修了全部课程的学生信息
select * from student where s_id in
(select s_id from score group by s_id having count(*) = 3)

--46、查询各学生的年龄
select s_name ,(date_format(now(),'%Y')-date_format(s_birth,'%Y') + (CASE when date_format(now(),'%m%d')>=date_format(s_birth,'%m%d') then 0 else 1 end)) as age
from student

-- 47、查询本周过生日的学生
---(实现得并不完全,因为例如出生月日为‘01-01’在每一年可能会输入不同周)
select * from student where week(date_format(s_birth,'%m%d'))=week(date_format(now(),'%m%d')) ;

-- 48、查询下周过生日的学生
select * from student
where week(date_format(s_birth,'%m%d'))=week(date_format(date_add(now(),interval 7-dayofweek(now())+1 day),'%m%d'));

-- 49、查询本月过生日的学生
select * from student where date_format(s_birth,'%m') = date_format(now(),'%m')

-- 50、查询下月过生日的学生
select * from student where date_format(s_birth,'%m') = date_format(date_add(now(),interval 1 month),'%m')

H. SQL数据库试题求解

------------------------------------------------------
create table students(st_id varchar(20),st_name varchar(50),sex varchar(10))

insert into students(st_id,st_name,sex)
select 'st001','张杰', '男' union all
select 'st002', '公孙燕飞' ,'男' union all
select 'st003', '王楠', '女' union all
select 'st004', '王伟', '男' union all
select 'st005','李燕纹', '女' union all
select 'st006', '孙武' ,'男'
select *
from students

create table teachers(t_id varchar(20),t_name varchar(50),t_lesson varchar(50))

insert into teachers

select 't001', '张老师' ,'数学' union all
select 't002', '李老师', '英语'

delete from results
create table results(r_id varchar(20),r_fenshu int,r_stid varchar(50),r_tid varchar(50))

insert into results
select 'r001','90', 'st001', 't002' union all
select 'r002', '68', 'st005', 't001' union all
select 'r003', '92', 'st003' ,'t001' union all
select 'r004', '82', 'st006', 't002' union all
select 'r005', '70', 'st002', 't002' union all
select 'r006', '86', 'st002', 't001' union all
select 'r007', '57', 'st003', 't002' union all
select 'r008', '76', 'st006', 't001' union all
select 'r009', '55', 'st001', 't001' union all
select 'r010', '77', 'st004', 't002' union all
select 'r011', '58', 'st005', 't002'
----------------------------------------------------------
1.
select st_id
from students
where st_name = '王伟'

2.select st_id,st_name
from students
where st_name like '__燕%'

3 select st_name,len(st_name) as 名字长度
from students
where sex ='男'

4 select min(r_fenshu) as 最低分数
from teachers t inner join results r on t.t_id =r.r_tid
where t_lesson ='数学' --这个是不考虑成绩中有null值的
5 select s.st_id as 学生编号,r_fenshu as分数,r_tid as 课目号
from students s inner join results r on s.st_id =r.r_stid
where s.sex='女'
--如果还要课目的名称的话请用下面的
select s.st_id as 学生编号,r.r_fenshu as 分数,r.r_tid as 课目号,t.t_lesson as 课目名称
from students s inner join results r on s.st_id =r.r_stid
inner join teachers t on r.r_tid = t.t_id
where s.sex='女'

6 select avg(r.r_fenshu)
from results r inner join teachers t on r.r_tid = t.t_id
where t.t_lesson='英语'

7.select *
from students s inner join results r on s.st_id =r.r_stid
inner join teachers t on r.r_tid = t.t_id
where s.st_id in (select top 2 st_id from students order by st_id desc)
order by s.st_id desc

8 select sum(r.r_fenshu) as 总分
from results r inner join students s on r.r_stid =s.st_id
where s.st_name = '王楠'
9.select distinct s.st_id,s.st_name
from students s inner join results r on s.st_id = r.r_stid
where st_id not in (select r_stid from results where r_fenshu<60) and st_id not in (select r_stid from results where r_fenshu >=90)

10 update results
set r_fenshu = r_fenshu + 10
--如果分数不可能大于100请用这句 set r_fenshu = case when r_fenshu + 10 <=100 then r_fenshu + 10 else 100 end
where r_stid in (select st_id from students where sex='女')

1 进阶题
select t.t_name,count(*)
from students s,teachers t,results r
where r.r_tid = t.t_id
and s.st_id =r.r_stid
and r.r_fenshu >= 60
and t.t_id in (select t_id from teachers where t_lesson='数学' )
--and t_lesson='数学'
group by t.t_name

2

select top 1 sum(r_fenshu) as 总分,t.t_lesson,t_id,t_name
from results r,teachers t
where r.r_tid = t.t_id
group by t.t_lesson,t_id,t_name
order by 总分 desc

3. delete from results where r_stid in (select r_stid from results group by r_stid having count(r_tid) = 1)

1 选做题
select d.name from sysobjects d where d.xtype='U'
2.select top 5 * from students order by newid()

I. 50分求sql题

1.一道SQL语句面试题,关于group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负

如果要生成下列结果, 该如何写sql语句?

胜 负
2005-05-09 2 2
2005-05-10 1 2
------------------------------------------
create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-10','胜')
insert into #tmp values('2005-05-10','负')
insert into #tmp values('2005-05-10','负')

select * from #tmp
select rq, shengfu from #tmp group by rq,shengfu
select rq, shengfu from #tmp group by shengfu,rq
select rq, shengfu,sum(shengfu) from #tmp group by shengfu,rq

1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负' then 1 else 0 end)'负' from #tmp group by rq

2) select N.rq,N.胜,M.负 from (
select rq,胜=count(*) from #tmp where shengfu='胜'group by rq)N inner join
(select rq,负=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq
3)select a.col001,a.a1 胜,b.b1 负 from
(select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a,
(select col001,count(col001) b1 from temp1 where col002='负' group by col001) b
where a.col001=b.col001

2.请教一个面试中遇到的SQL语句的查询问题
表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
------------------------------------------
select (case when a>b then a else b end ),
(case when b>c then b esle c end)
from table_name

3.面试题:一个日期判断的sql语句?
请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)
------------------------------------------
select * from tb where datediff(dd,SendTime,getdate())=0

4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
显示格式:
语文 数学 英语
及格 优秀 不及格
------------------------------------------
select
(case when 语文>=80 then '优秀'
when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
when 英语>=60 then '及格'
else '不及格') as 英语,
from table

5.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?
------------------------------------------
用户临时表:create table #xx(ID int, IDValues int)
系统临时表:create table ##xx(ID int, IDValues int)

区别:
用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.
当创建它的进程消失时这个临时表就自动删除.

全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也自动删除.

6.sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。
------------------------------------------
它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQL Server的存储容量是可以扩大的.

SQL Server 2000 数据库有三种类型的文件:

主要数据文件
主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。

次要数据文件
次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。

日志文件
日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。

7.请用一个sql语句得出结果
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。
如使用存储过程也可以。

table1

月份mon 部门dep 业绩yj
-------------------------------
一月份 01 10
一月份 02 10
一月份 03 5
二月份 02 8
二月份 04 9
三月份 03 8

table2

部门dep 部门名称dname
--------------------------------
01 国内业务一部
02 国内业务二部
03 国内业务三部
04 国际业务部

table3 (result)

部门dep 一月份 二月份 三月份
--------------------------------------
01 10 null null
02 10 8 null
03 null 5 8
04 null null 9

------------------------------------------
1)
select a.部门名称dname,b.业绩yj as '一月份',c.业绩yj as '二月份',d.业绩yj as '三月份'
from table1 a,table2 b,table2 c,table2 d
where a.部门dep = b.部门dep and b.月份mon = '一月份' and
a.部门dep = c.部门dep and c.月份mon = '二月份' and
a.部门dep = d.部门dep and d.月份mon = '三月份' and
2)
select a.dep,
sum(case when b.mon=1 then b.yj else 0 end) as '一月份',
sum(case when b.mon=2 then b.yj else 0 end) as '二月份',
sum(case when b.mon=3 then b.yj else 0 end) as '三月份',
sum(case when b.mon=4 then b.yj else 0 end) as '四月份',
sum(case when b.mon=5 then b.yj else 0 end) as '五月份',
sum(case when b.mon=6 then b.yj else 0 end) as '六月份',
sum(case when b.mon=7 then b.yj else 0 end) as '七月份',
sum(case when b.mon=8 then b.yj else 0 end) as '八月份',
sum(case when b.mon=9 then b.yj else 0 end) as '九月份',
sum(case when b.mon=10 then b.yj else 0 end) as '十月份',
sum(case when b.mon=11 then b.yj else 0 end) as '十一月份',
sum(case when b.mon=12 then b.yj else 0 end) as '十二月份',
from table2 a left join table1 b on a.dep=b.dep

8.华为一道面试题
一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。
------------------------------------------
select id, Count(*) from tb group by id having count(*)>1
select * from(select count(ID) as count from table group by ID)T where T.count>1

实在没空发邮件。。。在这收吧

J. 一些SQL的试题

4.1
select stud_id,name ,birthday,gender,mark from stud_info where name like '张%' and len(name)=2
4.2
select stud_id ,name from stud_grade where grade=(select max(grade) from stud_grade
或者select top 1 stud_id ,name from stud_grade order by grade desc

4.3
declare @zhuanye char(10)
select @zhuanye=sunbstring(zhuanye,5,2) from stud_info
select name from stud_info where @zhuanye='01'

4.4
create proc people_num
as
begin
select count(*) from stud_info where gender='男'
end

4.5
alert table stud_info add column money varchar(30)

4.6
alter table stud_info add constraint uniqueindex unique(telcode)
4.7
ALTER TABLE stud_info
ADD
CONSTRAINT pk_level
PRIMARY KEY CLUSTERED (stud_id)
4.8
alter table stud_grade
add constraint stud_info
foreign key (stud_id)
references (stud_id)
4.9
create nonclustered index CourseIndex
on stud_grade(course_id)
4.10
create view stud_view
as
select A.stud_id ,A.name,B.grade from stud_info A,stud_grade B where A.stud_id=B.stud_id and
substring(stud_id,3,2)='01'

第二题
36 select 姓名,年龄 from S order by 年龄 desc
37 select * from S where 姓名 like '王%'
38 select S.姓名,S.年龄,S.性别,S.系别 from S,C,SC where S.学号=SC.学号 and C.课号=SC.课号 and C.课名='数据库原理'
39 select * from S where 系别=(select 系别 from S where 姓名='刘平')