㈠ sql多项选择题,急求答案,最好有解析
1.答案A,D,E DESC是降序,省略ASC和DESC,默认为升序。
2.答案A,C,D,E 创建视图时不允许在所用SELECT语句中使用ORDER BY、COMPUTE子句
3.C,D,E 执行存储过程时可用WITH RECOMPLE选项进行重新编译;只有当执行存储过程的语句是批处理中的第一个语句,才可以直接通过名称来调用存储过程
4.C,E 使用SQL Server Management Studio不能运行命令行实用程序sqlcmd
5.C,D,F 一个局部变量只能在一个语句批中使用,使用SET语句只能对一个局部变量赋值,刚定义的局部变量的初值为空值
6.B 用户定义函数可以有输入参数和返回值
㈡ SQL经典50题题解
本篇文章主要是对SQL经典50题进行详细解析。
解析包含:1、解题思路,2、考核知识点,3、答案;
首先,表结构用脑图输出出来,如下所示:
先进行数据准备,建表以及插入数据。
1.查询"01"课程比"02"课程成绩高的学生的信息及课程分数
解题思路:
第一步:关键词有“课程编号”、“课程成绩”、“学生信息”,锁定使用表:学生表、成绩表。
第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。
第三步:比较同一个学生不同课程的成绩,再关联一次课程表,利用sid、cid进行关联。
第四步:根据题目,用where比较分数筛选结果。
考核知识点: join,where
答案:
1.1 查询存在" 01 "课程但可能不存在" 02 "课程的情况(不存在时显示为 null )
解题思路:
第一步:关键词有“课程编号”、“学生编号”,锁定使用表:成绩表。
第二步:分别查询出存在" 01 "课程的学生和存在" 02 "课程的学生。
第三步:对两个子查询进行关联,用sid进行左联接。
考核知识点: where, 子查询,left join
答案:
1.2 查询同时存在01和02课程的情况
解题思路: 同1.1,把left join改为join
考核知识点: where, 子查询,join
答案:
1.3 查询选择了02课程但没有01课程的情况
解题思路: 类似1.1,把left join改为right join
考核知识点: where, 子查询,right join
答案:
小结: 上面的题主要考察join、left join、right join。
2.查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩
解题思路:
第一步:关键词有“平均成绩”、“学生编号”、“学生姓名”,锁定使用表:成绩表、学生表。
第二步:给出学生信息及课程分数,通过主键sid关联学生表和课程表。。
第三步:根据题目,用group by聚合计算出平均成绩,然后筛选出大于等于60分的学生。
考核知识点: join、group by、avg()
答案:
3.查询在 SC 表存在成绩的学生信息
解题思路:
第一步:关键词有“SC”、“学生信息”,锁定使用表:成绩表、学生表。
第二步:用EXISTS判断在SC表存在成绩的学生信息
考核知识点: EXISTS语句
答案:
4.查询所有同学的学生编号、学生姓名、选课总数、所有课程的成绩总和
解题思路:
第一步:关键词有“学生编号”、“学生姓名”、“选课总数”、“课程成绩”,锁定使用表:成绩表、学生表。
第二步:通过主键sid关联学生表成绩表,得到学生信息、学生成绩的宽表
第三步:根据题目,用group by聚合计算选课总数和总成绩
考核知识点: left join、group by、count()、sum()、ifnull()
答案:
5.查询“李”姓老师的数量
解题思路:
第一步:关键词有“老师的数量”,锁定使用表:教师表。
第二步:先筛选出“李”姓老师,再汇总统计“李”姓老师的数量
考核知识点: like、where、%、count()
答案:
6.查询学过“张三”老师授课的同学的信息
解题思路:
第一步:关键词有“老师”、“学生信息”,锁定使用表:教师表、学生表、成绩表、课程表。
第二步:通过sid关联学生表、成绩表,再通过cid关联课程表,最后通过tid关联教师表。
第三步:用where筛选出“张三”老师授课的同学的信息。
考核知识点: 多重连接join
答案:
7.查询没有学全所有课程的同学的信息。
解题思路:
第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表、课程表。
第二步:先统计学生的课程数量,再筛选出小于所有课程数量的学生。
考核知识点: left join、group by、count()
答案:
8.查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息。
解题思路:
第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。
第二步:先查询学号“01”的同学学习的课程。
第三步:通过sid关联学生表和成绩表,获取所有学生信息、课程信息。
第四步:用EXISTS筛选出至少1门课相同的同学信息。
考核知识点: left join、子查询、EXISTS
答案:
9.查询和" 01 "号的同学学习的课程完全相同的其他同学的信息
解题思路:
第一步:关键词有“课程”、“学生信息”,锁定使用表:学生表、成绩表。
第二步:用“01”号的同学学习的课程左关联学生课程表,筛选出关链课程数一致的其他同学的sid
第三步:通过sid关联学生表和成绩表,获取完整的学生信息。
考核知识点: left join、子查询、group by
答案:
10.查询没学过"张三"老师讲授的任一门课程的学生姓名
解题思路:
第一步:关键词有“老师”、“学生姓名”,锁定使用表:学生表、成绩表、课程表、教师表。
第二步:反向求解。先查询至少学过“张三”老师讲授的课程的学生sid
第三步:用NOT EXISTS筛选出不在第二步查询结果的学生信息,。
考核知识点: 多重连接join、NOT EXISTS、子查询
答案:
11.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩
解题思路:
第一步:关键词有“姓名”、“平均成绩”,锁定使用表:学生表、成绩表。
第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表
第三步:用group by聚合统计,having对聚合的结果进行筛选。
考核知识点: join、group by、having、case when语句、avg()
答案:
12.检索" 01 "课程分数小于 60,按分数降序排列的学生信息
解题思路:
第一步:关键词有“课程分数”、“学生信息”,锁定使用表:学生表、成绩表。
第二步:通过sid关联学生表和成绩表,得到学生成绩信息宽表
第三步:用where筛选" 01 "课程分数小于 60的记录,并按照分数降序排列。
考核知识点: join、where、order by
答案:
13.按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
解题思路:
第一步:关键词有“平均成绩”,锁定使用表:成绩表。
第二步:用group by将学生课程的成绩由行转换为列并计算平均成绩。
第三步:按照平均成绩降序显示学生的所有课程的成绩以及平均成绩。
考核知识点: join
答案:
14.查询各科成绩最高分、最低分和平均分,以如下形式显示:
以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,
优良率,优秀率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
解题思路:
第一步:关键词有“课程name”、“最高分”,锁定使用表:课程表、成绩表。
第二步:用group by聚合计算课程最高分、最低分、平均分。
第三步:用case语句判断及格、中等、优良、优秀,并结合group by计算。
考核知识点: join、group by、max()、min()、avg()、sum()、case when语句
答案:
15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
解题思路:
第一步:关键词有“各科成绩”,锁定使用表:成绩表。
第二步:用rank()排名。
考核知识点: rank() over(partition by)
答案:
15.1 按各科成绩进行行排序,并显示排名, Score 重复时合并名次
解题思路:
第一步:关键词有“各科成绩”,锁定使用表:成绩表。
第二步:用dense_rank()排名。
考核知识点: dense_rank() over(partition by)
答案:
16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
解题思路:
第一步:关键词有“总成绩”,锁定使用表:成绩表。
第二步:用group by统计学生的总成绩。
第三步:用left join自关联进行排名。
考核知识点: group by、 left join
答案:
16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
解题思路:
第一步:关键词有“总成绩”,锁定使用表:成绩表。
第二步:用group by统计学生的总成绩。
第三步:用变量进行排名。
考核知识点: group by、变量
答案:
17. 统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] 及所占百分比
解题思路:
第一步:关键词有“各科成绩”、“课程名称”,锁定使用表:成绩表、课程表。
第二步:通过cid关联课程表和成绩表,得到课程、成绩信息宽表。
第三步:用group by聚合统计各分段的人数及百分比。
考核知识点: join、group by、case when条件语句
答案:
18.查询各科成绩前三名的记录
解题思路:
第一步:关键词有“各科成绩”,锁定使用表:成绩表。
第二步:筛选出各科比当前成绩高的人数小于3的学生记为各科的前三名。
考核知识点: 子查询
答案:
19.查询每门课程被选修的学生数
解题思路:
第一步:关键词有“每门课程”、“学生数”,锁定使用表:课程表、成绩表。
第二步:用left join关联课程表和成绩表,再用group by分组汇总各科的学生数。
考核知识点: left join、group by
答案:
20.查询出只选修两门课程的学生学号和姓名
解题思路:
第一步:关键词有“选修课程”、“学生姓名”,锁定使用表:学生表、成绩表。
第二步:用join关联学生表和成绩表,再用group by分组汇总每个学生的选修课程数,最后用having对分组汇总结果筛选出选修两门课程的学生。
考核知识点: join、group by、having
答案:
21. 查询男生、女生人数
解题思路:
第一步:关键词有“男生、女生”,锁定使用表:学生表。
第二步:通过ssex学生表用group by分组汇总男生、女生人数。
考核知识点: group by
答案:
22. 查询名字中含有“风”字的学生信息
解题思路:
第一步:关键词有“学生信息”,锁定使用表:学生表。
第二步:用like匹配姓名中含有风”字的学生。
考核知识点: like、%
答案:
23查询同名同性学生名单,并统计同名人数
解题思路:
第一步:关键词有“学生名单”,锁定使用表:学生表。
第二步:使用group by,汇总同名同性人数,再用having筛选出大于1的记录
考核知识点: group by、having
答案:
24.查询 1990 年出生的学生名单
解题思路:
第一步:关键词有“学生名单”,锁定使用表:学生表。
第二步:用where筛选出1990年出生的学生名单
考核知识点: where、year
答案:
25.查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编
号升序排列。
解题思路:
第一步:关键词有“平均成绩”,锁定使用表:成绩表。
第二步:用group by分组计算各科平均成绩,再用order by完成多列排序
考核知识点: group by、order by
答案:
26.查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩
解题思路:
第一步:关键词有“平均成绩”、“学生姓名”,锁定使用表:成绩表、学生表。
第二步:用join关联学生表和成绩表
第三步:用group by分组汇总计算每个学生的平均成绩,再用having筛选平均成绩>=85的记录
考核知识点: join、group by、having
答案:
27.查询课程名称为“数学”,且分数低于 60 的学生姓名和分数
解题思路:
第一步:关键词有“课程名称”、“分数”、“学生姓名”,锁定使用表:课程表、成绩表、学生表。
第二步:用join关联学生表、成绩表、课程表,再用where筛选
考核知识点: 多重join、where
答案:
28. 查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)
解题思路:
第一步:关键词有“所有学生”、“分数”,锁定使用表:学生表、成绩表
第二步:用left join关联学生表、成绩表
考核知识点: left join
答案:
29.查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数
解题思路:
第一步:关键词有“课程成绩”、“姓名”、“课程名称”,锁定使用表:学生表、成绩表、课程表
第二步:用join关联学生表、成绩表、课程表,再筛选出课程成绩在70分以上的。
考核知识点: 多重join
答案:
30.查询不及格的课程
解题思路:
第一步:关键词有“不及格的课程”,锁定使用表:成绩表、课程表
第二步:关联课程表和成绩表,再条件筛选出不及格的课程信息。
考核知识点: join、where、去重
答案:
31.查询课程编号为 01 且课程成绩在 80 分以上的学生的学号和姓名
解题思路:
第一步:关键词有“课程编号”、“课程成绩”、“姓名”,锁定使用表:成绩表、学生表
第二步:关联成绩表和学生表,再条件筛选出结果。
考核知识点: join、where
答案:
32.求每门课程的学生人数
解题思路:
第一步:关键词有“课程”、“学生人数”,锁定使用表:成绩表
第二步:用group by分组汇总各科的学生人数。
考核知识点: group by
答案:
33.成绩不重复,查询选修“张三”老师所授课程的学生中,成绩最高的学生信息及其成绩
解题思路:
第一步:关键词有“成绩”、““张三”老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表
第二步:关联所有表,筛选出选修“张三”老师所授课程的学生。
第三步:因为成绩不重复,对学生成绩由高到低排序,筛选出第一行记录。
考核知识点: 多重join、order by、limit
答案:
34.成绩有重复的情况下,查询选修“张三”老师所授课程的学生中,成绩最高的学生
信息及其成绩
解题思路:
第一步:关键词有“成绩”、““张三”老师”、“学生信息”,锁定使用表:成绩表、课程表、学生表、教师表
第二步:关联所有表,筛选出选修“张三”老师所授课程的学生。
第三步:因为成绩有重复,先求出最高成绩,再匹配最高成绩对应的学生信息。
考核知识点: 多重join、max()
答案:
35.查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩
解题思路:
第一步:关键词有“成绩”,锁定使用表:成绩表
第二步:自联接,筛选出不同课程成绩相同的记录
考核知识点: 自联接join
答案:
36. 查询每门成绩最好的前两名
解题思路:
第一步:关键词有“成绩”,锁定使用表:成绩表
第二步:自联接,筛选出各科低于自身成绩的人数为2的。
考核知识点: left join
答案:
37. 统计每门课程的学生选修人数(超过 5 人的课程才统计)。
解题思路:
第一步:关键词有“选修人数”,锁定使用表:成绩表
第二步:先用group by分组汇总各科的选修人数,再条件筛选出超过5人的课程。
考核知识点: group by、having
答案:
38.检索至少选修两门课程的学生学号
解题思路:
第一步:关键词有“两门课程”,锁定使用表:成绩表
第二步:先用group by分组汇总每个学生的选修课程数,再用having筛选出至少2门课程的学生学号
考核知识点: group by、having
答案:
39.查询选修了全部课程的学生信息
解题思路:
第一步:关键词有“全部课程”、“学生信息”,锁定使用表:成绩表、课程表、学生表
第二步:关联学生表和成绩表,再用group by分组统计每个学生的选修课程数
第三步:最后用having筛选出等于全部课程数的学生信息。
考核知识点: join、 group by、having、子查询
答案:
40.查询各学生的年龄,只按年份来算
解题思路:
第一步:关键词有“学生的年龄”,锁定使用表:学生表
第二步:用year和now来统计
考核知识点: year、now
答案:
41. 按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一
解题思路:
第一步:关键词有“出生日期”,锁定使用表:学生表
第二步:用timestampdiff()统计年龄
考核知识点: timestampdiff()
答案:
42.查询本周过生日的学生
解题思路:
第一步:关键词有“过生日”,锁定使用表:学生表
第二步:用week函数
考核知识点: week()
答案:
43. 查询下周过生日的学生
解题思路:
第一步:关键词有“过生日”,锁定使用表:学生表
第二步:用week函数
考核知识点: week()
答案:
44.查询本月过生日的学生
解题思路:
第一步:关键词有“过生日”,锁定使用表:学生表
第二步:用month函数
考核知识点: month()
答案:
45.查询下月过生日的学生
解题思路:
第一步:关键词有“过生日”,锁定使用表:学生表
第二步:用month函数
考核知识点: month()
答案:
㈢ 求 3道SQL选择题,稍微有点难度的
1.隐藏系统数据库操作中使用到的菜单命令是( )。
A 、选中要隐藏的系统数据库后选择 [ 操作 ] 4 [ 属性 ] 菜单命令
B 、选中要隐藏的系统数据库后选择 [ 查看 ] 4 [ 自定义 ] 菜单命令
C 、选中 SQL Server 服务器后选择 [ 操作 ] 4 [ 编辑 SQL Server 注册属性 ] 菜单命令
D 、都可以
2.下面关于 SQL Server 登录账户叙述错误的是( )。
A 、 默认情况下, Windows 的系统管理员账户自动成为 SQLServer 登录账户
B 、在企业管理器中可修改 Windows 登录账户的登录密码
C 、在企业管理器中可修改 SQL Server 登录账户的登录密码
D 、SQL Server 安装在 Windows NT 或 2000 中才有 BUILTI NAdministrators 登录账户,否则只有 sa 账户
3.下列关于对象浏览器叙述错误的是( )。
A 、在编辑查询时,可将数据库、表或字段名称拖放到查询窗口中
B 、将数据库或字段名称拖放到查询窗口中可直接添加数据库或字段名称
C 、拖放表名,可在查询中添加该表的所有字段名称
D 、拖放模板,可添加模板中的 SQL 命令
4.下列关于关系数据库叙述错误的是( )。
A、 关系数据库的结构一般保持不变,但也可根据需要进行修改
B 、一个数据表组成一个关系数据库,多种不同的数据则需要创建多个数据库
C 、关系数据表中的所有记录的关键字字段的值互不相同
D 、 关系数据表中的外部关键字不能用于区别该表中的记录
5.下列关于数据库的数据文件叙述错误的是( )。
A 、创建数据库时必须指定数据文件
B 、创建数据库时, PRIMARY 文件组中的第一个文件为数数据文件
C 、一个数据库可以有多个数据文件
D 、一个数据库只能有一个主数据文件
6.在使用 Recordset 对象时,如果要查看其他用户的更改操作,则应将游标类型定义为( )。
A 、动态游标或键集游标
B 、键集游标或静态游标
C 、静态游标或仅向前游标
D 、仅向前游标或动态游标
㈣ SQL选择题, 有兴趣着过来看看....!
1、没有正确答案
2、也没有正确答案。a选择出来的是010,而020不会选择,要选择要 where cardno+ where cardno like ’010%020%’
3、也没有正确答案。Select student.sID,student.sName,studentCourse.cID,studentCourse.score from student inner join studentCourse on student.sID=studentCourse.sID
4、d
5、d
㈤ SQL选择题:在一个关系中如果有这样一个属性存在着,它的值能唯一地标识关系中的每一个元祖,称这个属性为
选择答案:C,主属性可以起到唯一标识的作用,所有非主属性的字段必须依赖主属性,这也是数据库表建立的三范式之一。
㈥ 一道SQL Server数据库选择题。
选A 事务的原子性指的是,事务中包含的程序作为数据库的逻辑工作单位,它所做的对数据修改操作要么全部执行,要么完全不执行。这种特性称为原子性。
事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状态
假如数据库的状态满足所有的完整性约束,就说该数据库是一致的。一致性处理数据库中对所有语义约束的保护
㈦ SQL选择题:要查询计算机系和信息管理系的年龄大于18岁的学生,SQL语句中的where子句下列说法正确的是
选择D,这是逻辑运算法则,and的运算级别比or要高,所以计算机先会运算and。根据题目来说,AB肯定排除,因为and是与运算,并且,AB这样写,相当于一个学生要即属于计算机,又要属于信息管理专业,这不可能。所以排除。C是迷惑项,C如果改成where (sdept = “计算机” or sdept = “信息管理”) and sage>18 这样子就是对的。因为括号的计算级别是最高的。先算括号里再算括号外。所以D是正确的。D的逻辑关系是条件符合是计算机且大于18岁的或者是是信息管理且大于18岁的数据。其实最简单的写法,应该是where sdept in('计算机','信息管理') and sage>18
㈧ sql基础选择题
d;
d;
d;
a;
b;
㈨ 几个简单的SQL选择题
1B
2D
㈩ 关于SQL语句的选择题!
比如学生A,同时选修了C01和C02,这时候SELECT * FROM SC WHERE SC.S# = S.S# AND C# <>'C02'返回的是true,因为有一条记录C#是C01。也就是说,学生A尽管选修了C02,也会被查找到。