玖叶教程网

前端编程开发入门

SQL面试题(2)

7.视图时什么?视图的使用场景?

视图是一种虚拟结构,通常为一个表或多个表的行列的子集构成,可以像引用表一样引用视图。

作用有两个,

一是简化查询语句,使用视图创建一个虚拟表包含一个或多个表的数据,查询时引用视图即可,使得复杂的查询更易于理解和使用。

二是出于安全原因,在表中有敏感数据不能对外展示时,使用视图创建一个虚拟表展示表的部分数据。

8.三个范式?

范式指导数据库设计规范化,避免数据冗余;

1NF:消除重复数据,即每一列都是不可再分的基本数据项;

2NF:消除部分依赖,表中没有列只与主键的部分相关,即每一行都被主键唯一标识;

3NF:消除传递依赖,消除‘表中列不依赖主键,而是依赖表中的非主键列’的情况,即没有列是与主键不相关的。

9.drop、delete、truncate使用场景?

Delete是DML(数据操纵语言),删除部分行数据时使用delete,并语句中包含where子句指定删除行;

drop、truncate是DDL(数据定义语言),删除表时使用drop,删除表所有行但保留表时使用truncate。

10.SQL查询语句执行顺序?

FROM —— ON —— JOIN —— WHERE —— GROUP BY —— SUM —— COUNT —— HAVING —— SELECT —— DISTINCT —— ORDER BY —— LIMIT

11.介绍表连接?

表的连接有四种,内连接、外连接、左连接、右连接,使用语句是join on inner join,内连接,找出两表都可匹配的记录,即两表的交集; full outer join: 全连接,两个表的记录合并,即两表的并集;如果左表缺失或者右表缺失的数据会填充NULL; left join: 左连接,以左表的字段记录去右表找可匹配记录,如果右边记录缺失则填充NULL;right join: 右连接,以右表的字段记录去左表找可匹配记录,如果左边记录缺失则填充NULL; 注:MYSQL不支持full join

12.用于筛选的字段?

where、having; having是用于聚合后的筛选

13.聚合函数是什么,有哪些?

对列数据做基本的数据统计

max、min、sum、count、avg 配合group by

14.用于排序的字段?

Order by

几类分组排序的窗口函数:

Row_number() 排序效果1234

rank() 排序效果1114

dense_rank() 排序效果1112

窗口函数使用格式:<窗口函数> over partition by <用于分组的列名> over by <用于排序的列名>

15.对字符串进行操作的几种函数?

有三种比较常用的操作,连接、截取、分割:

concat,连接字符串,concat(A,B)=AB

substr,从指定截取指定长度字符串,substr(str,1,2)=st

split,以制定分隔符分割字符串形成数组,split(’1,2,3‘,‘,’)=[1,2,3]

16.取TOPN的方式?

使用order by升序或降序做排序操作,再使用limit限制返回N条数据

17.常用日期运算函数?

datediff(date1,date2) ,计算两个时间的天数差

Date_sub(date,days), 计算startdate减少days天后的日期

Date_add(date,days) ,计算startdate增加days天后的日期

18.介绍case when用法和使用场景?

常用于为不好理解的数据项转化为有意义的描述

用法:case 条件列 when 条件1 then 结果1 when 条件2 then 结果2

else 结果n end

19.类型转换函数?

cast(表达式 as 数据类型)

convert(数据类型,表达式)

注:cast 不可以转换日期类型,convert可以通用

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言