吊打面试官之SQL面试题30问及答案
经典SQL30问一:
- 编写查询,查找表中的行总数。
- 编写查询,消除表结果中的重复记录。
- 编写查询,获取t_employee表中designation字段前3个字符。
- 查询t_employee表,合并输出Designation和Department两个字段的内容。
- 如果使用union和union all合并4条SQL子查询,union会有多少次被用来去除重复行?
- IN和BETWEEN之间的区别是什么,在WHERE子句中如何使用?
- 解释“LIKE”关键字在WHERE子句中如何使用?SQL有哪些通配符?
- 怎样使用“LIKE”语句?
- 解释 GROUP BY 和 HAVING 子句的用法。
- 在t_employee表中,department字段可为空。编写查询,获取尚未分配部门的员工。
答案:
- select count(*) from tblsample;
- Select distinct * from tblSample;
- Select substr(designation,1,3) from t_employee;
- Select Designation + ‘ ‘ + Department from t_employee;
- 1次。
- BETWEEN子句是用来获取一个范围值,而IN子句是从指定值列表中获取对应数据。
- LIKE是用于部分字符串的匹配。SQL有两个通配符,“%”(匹配字符串的任何字符)和“_”(匹配任意单个字符)。
- 在局部搜索中使用。例如,你需要找到lastname包含“gat”字母的所有员工,那么你可以使用下面的查询、匹配搜索条件:
- Select empid, firstname, lastname from t_employee where lastname like ‘%gat%’;
- 这可能会搜索到lastname包含字符“gat”的所有雇员,像Gates、Gatsby、Gatsburg、Sogatsky...
- "%"用于表示名称中剩余的所有字符。这个查询获取在字符串中包含“gat”的所有记录。
- 利用group by子句分组数据,当select语句中使用到组函数和字段一起连用时会用到group by,否则会出现错误。Group by 把select查询的结果集分成几个小组,这个group by子句可以跟在where后面且在having前面。Group by子句也会触发排序操作,会按分组字段排序。 b
- Select empid, firstname, lastname from t_employee where department is null;
经典SQL30问二:
- ORACLE和DB2支持的大对象是什么?MS SQL支持的大对象是什么?
- 在MS SQL中image数据类型的存储容量是多少?
- 在MS SQL中varbinary数据类型的存储容量是多少?
- 编写查询,按条件合并两列为一列(i.e.我想从FullName或FirstName的列中找出不为空的雇员的名字)。
- 如何使用查询创建标识列?
- 哪个函数可以用来比较两个不同的日期?
- 查找超过40岁的所有员工。
- 编写查询,从EMPLOYEE表中找到第二高薪水的员工。
- 编写查询,不使用JOIN操作符,从EMPLOYEE表中查找名字开头是“s”和居住在城市“Mumbai”的所有员工。
- 如何从EMPLOYEE表中删除重复的员工条目?
经典SQL30问三:
- 编写查询,从EMPLOYEE表中找出哪一年最多员工加入公司,总共多少人加入。
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合。
- 编写查询,从EMPLOYEE表中查找所有员工,他们的收入高于他们部门的平均工资。
- 列出员工的HireDate服务年限和月份。
- 如何在单查询中将EMPLOYEE表的性别Gender从“Male”更新为“Female”和从“Female”更新为“Male”?
- 触发器的作用?
- 计算超过2名员工的部门总薪水。
- 如何从现有表中创建一个空表?
- 如何从两个表中获取公共记录?
- 如何从表中交替提取记录?
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,
咱们下期见。