数据库面试常见问题

数据库面试常见问题

  数据库面试常见问题有哪些呢?你想知道吗?下面是小编整理的数据库面试常见问题,欢迎大家阅读!

  1、SQL的表连接方式有哪些?

  SQL中连接按结果集分为:内连接,外连接,交叉连接

  内连接:inner join on,两表都满足的组合。内连接分为等值连接,不等连接,自然连接。

  等值连接:两表中相同的列都会出现在结果集中。

  自然连接:两表中具体相同列表的列会合并为同一列出现在结果集中。

  外连接:分为左(外)连接,右(外)连接,全连接

  左(外)连接:A left (outer) join B,以A表为基础,A表的全部数据,B表有的组合,没有的为null。

  右(外)连接:A right(outer) join B,以B表为基础,B表的全部数据,A表有的组合,没有的位null。

  全连接:A full (outer) join 两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null。

  交叉连接:cross join,就是笛卡尔乘积。

  2、三范式

  1NF:表中的字段都是单一属性,不再可分。

  2NF:在1NF的基础上,表中所有的非主属性都必须完全依赖于任意一组候选键,不能仅依赖于候选键中的某个属性。

  3NF:在2NF的基础上,表中所有的属性都不依赖其他非主属性。

  简单的说就是:1NF表示每个属性不可分割,2NF表示非主属性不存在对主键的部分依赖,3NF表示不存在非主属性对主键的依赖传递。

  3、表的操作

  表的创建:create table 表名 (列名1 类型 约束,列2 类型 约束…)

  表的删除: 表名

  表的更改(结构的更改,不是记录的更新):alter table 表名 add|drop 列名|约

  束名

  插入记录: into 表名…values…

  更新记录:表名 set 列名=值 where 条件

  删除记录: from 表名 where 条件

  4、数据的完整性

  数据完整性指的是存储在数据库中的数据的一致性和准确性。

  完整性分类:

  (1)实体完整性:主键值必须唯一且非空。(主键约束)

  (2) 引用完整性(也叫参照完整性):外键要么为空,要么引用主表中存在的记录。(外键约束)。

  (3)用户自定义完整性:针对某一具体关系数据库中的约束条件。

  5、SQL的查询优化

  (1)从表连接的角度优化:尽量使用内连接,因为内连接是两表都满足的行的组合,而外连接是以其中一个表的全部为基准。

  (2)尽量使用存储过程代替临时写SQL语句:因为存储过程是预先编译好的SQL语句的集合,这样可以减少编译时间。

  (3)从索引的角度优化:对那些常用的查询字段简历索引,这样查询时值进行索引扫描,不读取数据块。

  (4)还有一些常用的'select优化技巧:

  (5)A.只查询那些需要访问的字段,来代替select*

  B、将过滤记录越多的where语句向前移:在一个SQL语句中,如果一个where条件过滤的数据库记录越多,定位越准确,则该where条件越应该前移。

  6、索引的作用,聚集索引与非聚集索引的区别

  索引是一个数据库对象,使用索引,可以是数据库程序无须对整个数据进行扫描,就可以在其中找到目标数据,从而提高查找效率。索引的底层采用的是B树。

  聚集索引:根据记录的key再表中排序数据行。

  非聚集索引:独立于记录的结构,非聚集所以包含的key,且每个键值项都有指向该简直的数据行的指针。

  聚集索引与非聚集索引的区别:

  (1)聚集索引的物理存储按索引排序,非聚集所以的物理存储不按索引排序。

  (2) 聚集索引插入,更新数据的速度比非聚集索引慢,单查询速度更快。

  (3) 聚集索引的叶级结点保存的是时间的数据项,而非聚集结点的叶级结点保存的是指向数据项的指针。

  (4)一个表只能有一个聚集索引(因为只有一种排序方式),但可以有多个非聚集索引。

  7、存储过程与函数的区别

  (1)函数有返回值,存储过程没有返回值。

  (2) 因为存储过程没有返回值,所以不能将存储过程的执行结果赋值给变量;函数有返回值类型,调用函数时,可以将函数的执行结果赋值给变量。也就是说,函数可以在select语句中使用,而存储过程则不能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 yyfangchan@163.com (举报时请带上具体的网址) 举报,一经查实,本站将立刻删除