SQL机试基础题目与答案梳理_第1页
SQL机试基础题目与答案梳理_第2页
SQL机试基础题目与答案梳理_第3页
SQL机试基础题目与答案梳理_第4页
SQL机试基础题目与答案梳理_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL机试基础题目与答案梳理考试时间:______分钟总分:______分姓名:______一、单项选择题(每题只有一个正确选项,请将正确选项填写在括号内)1.在SQL查询中,用于去除结果集中重复行的关键字是()。A.UNIQUEB.DISTINCTC.REMOVED.DIFFERENT2.下列关于`WHERE`子句和`HAVING`子句的区别描述正确的是()。A.`WHERE`子句用于过滤分组后的数据,`HAVING`子句用于过滤分组前的数据B.`WHERE`子句中可以使用聚合函数,而`HAVING`子句不能使用C.`WHERE`子句在`GROUPBY`之前执行,而`HAVING`子句在`GROUPBY`之后执行D.`WHERE`子句只能对单列数据进行过滤3.如果要查询所有名字长度为3个字符的员工记录,应该使用以下哪种模糊查询语句?()A.LIKE'___'B.LIKE'___'C.LIKE'___'D.LIKE'%_%'4.在SQL中,执行`SELECTCOUNT(score)FROMstudents`和`SELECTCOUNT(*)FROMstudents`的结果通常()。A.第一个结果包含score列为NULL的记录B.第二个结果包含score列为NULL的记录C.两个结果完全相同D.第二个结果为05.查询学生表中所有记录,并按照年龄从大到小排序,SQL语句应该是()。A.SELECT*FROMstudentsORDERBYageDESCB.SELECT*FROMstudentsORDERBYageC.SELECT*FROMstudentsSORTBYageDESCD.SELECT*FROMstudentsORDERBYageASC6.关于SQL中的连接查询,`INNERJOIN`(内连接)和`LEFTJOIN`(左连接)的主要区别在于()。A.`INNERJOIN`只返回两个表中完全匹配的行,`LEFTJOIN`返回左表所有行B.`INNERJOIN`返回左表所有行,`LEFTJOIN`只返回两个表中完全匹配的行C.`INNERJOIN`返回右表所有行,`LEFTJOIN`返回左表所有行D.两者功能完全相同7.查询所有没有订单记录的用户信息,应该使用以下哪种查询方式?()A.SELECT*FROMusersWHEREorder_idISNULLB.SELECT*FROMusersLEFTJOINordersONusers.id=orders.user_idWHEREorders.idISNULLC.SELECT*FROMusersRIGHTJOINordersONusers.id=orders.user_idWHEREusers.idISNULLD.SELECT*FROMusersINNERJOINordersONusers.id=orders.user_idWHEREorders.idISNULL8.在SQL查询语句中,子查询出现在`WHERE`子句中时,通常需要配合以下哪个关键字使用?()A.GROUPBYB.IN或EXISTSC.ORDERBYD.HAVING9.下列关于NULL值的说法,错误的是()。A.NULL表示未知或不存在B.NULL不等于0也不等于空字符串C.使用`LIKE'%NULL%'`可以查询出字段值为NULL的记录D.聚合函数(如SUM,AVG)默认会忽略NULL值10.要从`SELECT`查询结果中只返回前5条记录,应使用的关键字是()。A.LIMIT5B.FETCHFIRST5ROWSONLYC.TOP5D.ROWS5二、多项选择题(每题有两个或两个以上正确选项,多选、少选、错选均不得分)1.以下哪些是SQL中常用的聚合函数?()A.COUNT()B.SUM()C.ORDERBY()D.MAX()E.AVG()2.在使用`GROUPBY`进行分组查询时,下列哪些说法是正确的?()A.SELECT后面的非聚合列必须出现在GROUPBY子句中B.SELECT后面的非聚合列不能出现在GROUPBY子句中C.HAVING子句用于过滤分组后的结果D.WHERE子句用于过滤分组前的原始数据E.GROUPBY可以对一个或多个字段进行分组3.关于SQL中的通配符,下列说法正确的是()。A.`%`代表任意长度的字符(包括零个字符)B.`_`代表任意单个字符C.`[]`代表括号内任意一个字符D.`#`代表任意一个数字E.`*`代表任意长度的字符4.在SQL连接查询中,以下哪些连接类型是存在的?()A.INNERJOINB.LEFTJOINC.RIGHTJOIND.CROSSJOINE.FULLJOIN5.下列关于`ORDERBY`排序的描述,正确的是()。A.默认情况下,字符串是按照ASCII码升序排列的B.数字是按照数值大小升序排列的C.可以指定多个排序列,前面的列优先级高D.`ORDERBY`只能对数字列进行排序E.`ORDERBYscoreDESC`表示按score降序排列三、填空题(请将答案填写在横线上)1.SQL语句的标准执行顺序是:`FROM`->`JOIN`->`WHERE`->`GROUPBY`->`HAVING`->`______`->`ORDERBY`->`LIMIT`。2.查询所有成绩大于80分的学生姓名,如果学生姓名中包含“张”,应该使用`WHEREnameLIKE'______'`。3.如果要统计`employees`表中`dept_id`的不同部门数量,应该使用语句`SELECT______(dept_id)FROMemployees`。4.连接查询中,如果需要返回左表的所有行,即使右表中没有匹配项,应该使用______JOIN。5.查询`students`表中年龄最大的学生的姓名,可以使用`SELECTnameFROMstudentsWHEREage=(SELECTMAX(age)FROMstudents)`,这种查询方式称为______查询。四、简答题1.请简述`WHERE`子句和`HAVING`子句的主要区别,并举例说明。2.请解释`INNERJOIN`(内连接)和`LEFTJOIN`(左连接)在结果集返回上的不同。3.在SQL中如何处理包含`NULL`值的字段?请写出判断字段为NULL的关键字。试卷答案一、单项选择题1.B解析:`DISTINCT`关键字用于去除结果集中重复的行。`UNIQUE`、`REMOVE`和`DIFFERENT`不是SQL标准关键字。2.C解析:`WHERE`子句用于在分组前过滤数据(不能使用聚合函数),而`HAVING`子句用于在分组后过滤数据(通常配合聚合函数使用)。3.C解析:`%`代表任意长度的字符(包括0个字符),`_`代表任意单个字符。要匹配3个字符,需要使用三个下划线`___`。4.B解析:`COUNT(*)`会计算表中所有行的数量(包括值为NULL的行);`COUNT(column)`只计算指定列中非NULL的行数。5.A解析:`ORDERBY`用于排序,`DESC`表示降序排列(从大到小),`ASC`(默认)表示升序排列。6.A解析:`INNERJOIN`(内连接)仅返回两个表中匹配的行;`LEFTJOIN`(左连接)返回左表的所有行,右表不匹配的行显示为NULL。7.B解析:要找“没有订单”的用户,通常使用左连接(保留左表所有用户),然后在右表(订单表)中筛选出ID为NULL的记录。8.B解析:在`WHERE`子句中使用子查询时,通常使用`IN`(判断是否在列表中)或`EXISTS`(判断是否存在)来关联。9.C解析:`NULL`代表空值或未知,不等于0也不等于空字符串。`LIKE'%NULL%'`只会匹配字段值字面量为"NULL"的记录,无法匹配NULL值本身。10.A解析:`LIMIT`是MySQL等数据库常用的分页关键字。Oracle/PostgreSQL使用`FETCHFIRST`,SQLServer使用`TOP`,但`LIMIT`是最通用的机试答案。二、多项选择题1.A,B,D,E解析:`COUNT`、`SUM`、`AVG`、`MAX`、`MIN`都是标准的聚合函数。`ORDERBY`是排序子句,不是函数。2.A,C,D,E解析:在`GROUPBY`中,非聚合列必须出现在`GROUPBY`子句中;`HAVING`用于分组后过滤;`WHERE`用于分组前过滤;可以按多列分组。3.A,B,C解析:`%`匹配任意字符,`_`匹配单个字符,`[]`匹配括号内的任意一个字符。`#`不是标准SQL通配符,`*`在SQL中通常用于星号函数或乘法,不是通配符。4.A,B,C,D解析:SQL标准中包含内连接、左连接、右连接、交叉连接。虽然MySQL不支持`FULLJOIN`,但在标准SQL环境中它是存在的。5.A,B,C,E解析:字符串默认按ASCII码排序,数字按数值排序;可以指定多个排序列,前面的优先级高;`DESC`表示降序。三、填空题1.SELECT解析:SQL的执行顺序是:FROM->JOIN->WHERE->GROUPBY->HAVING->SELECT->ORDERBY->LIMIT。2.张%解析:第一个字符是“张”,后面任意长度用`%`表示。3.COUNT(DISTINCT)解析:统计不同值的数量需要使用`COUNT(DISTINCT列名)`。4.LEFT解析:`LEFTJOIN`确保保留左表的所有记录。5.子查询解析:将一个查询嵌套在另一个查询中,称为子查询。四、简答题1.答案:区别:`WHERE`子句在数据分组之前进行过滤,不能包含聚合函数;`HAVING`子句在数据分组之后进行过滤,通常包含聚合函数。举例:查询平均年龄大于20岁的班级。`SELECTclass_id,AVG(age)FROMstudentsGROUPBYclass_idHAVINGAVG(age)>20;`。这里不能使用`WHEREAVG(age)>20`,因为`WHERE`执行时还没有分组。2.答案:区别:*`INNERJOIN`:只返回两个表中匹配的行(即交集)。如果左表有数据但右表没有对应匹配,该行不会出现在结果中。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论