数据库常见面试题总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载

数据库常见面试题总结

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 类型 约束…)

表的删除:drop table 表名

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

插入记录:insert into 表名…values…

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

删除记录:delete 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语句中使用,而存储过程则不能。

时间: 2024-10-15 16:32:39

数据库常见面试题总结的相关文章

数据库常见面试题

数据库事务: 是一系列的数据库操作,是数据库应用的基本逻辑单位.事务性质:原子性.1)原子性.即不可分割性,事务要么全部被执行,要么就全部不被执行.2)一致性或可串性.事务的执行使得数据库从一种正确状态转换成另一种正确状态3)隔离性.在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,4)持久性.事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存. ----------------------------------------

MySQL数据库常见面试题

1.事务的特性及隔离级别: 参见博客:http://www.cnblogs.com/Hangtutu/p/8016663.html 2.视图 视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的.视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的? 简单:使用视图的用户完全不需要关心后面对应的表的结构.关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集.? 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管

34个数据库常见面试题讲解

https://www.2cto.com/database/201710/688377.html 1.触发器的作用? 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以联级运算.如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发. 2.什么是存储过程?用什么来调用? 存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中

数据库常见面试题(1)

1. 超键.候选键.主键.和外键 定义: 超键(super key):在关系中能惟一标识元素属性的集称为关系模式的超键. 候选键:(Candidate Key):不含有多余属性的超键称为候选键.也就是说在候选键中再删除属性,就不是候选键了. 主键(Primary Key):用户选作元组标识的候选键为主键. 外键(Froeign Key):如果模式R中的属性k是其他模式的主键,那么k在模式R中称为外键. 示例:学生表中含有属性学号.身份证号.姓名和性别,其中学号和身份证号是唯一的,姓名和性别不是唯

数据库常见面试题(2)

1.数据库常见优化方案 对查询进行优化,要尽量避免全表扫描: 考虑在 where 及 order by 涉及的列上建立索引, 2.导致引擎放弃使用索引而进行全表扫描的情况 在 where 子句中对字段进行 null 值判断 在 where 子句中使用 != 或 <> 操作符 在 where 子句中使用 or 来连接条件,修改方案:使用union联合查询 in和 not in 也要慎用,修改方案:对于连续的数值,能用 between就不要用 in 了,用 exists 代替 in 是一个好的选择

史上最全Python工程师常见面试题集锦,有这一份就够了

从互联网诞生以来,基本上所有的程序都属于网络程序,也就需要设计到网络编程,在python中,就是在python程序本身这个进程内,链接别的服务器进程的通信端口进行通信.在Python程序员找工作的时候,京城被问到关于网络编程的问题.下面就和大家分享一下那些面试中经常出现的问题吧. 1.Tcp 协议和 udp 协议有什么区别? (1)TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的,即发送数据之前不需要建立连接. (2)每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多

JDBC常见面试题集锦

什么是JDBC,在什么时候会用到它? JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库.JDBC接口及相关类在java.sql包和javax.sql包里.我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果. JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单. 有哪些不同类型的JDBC驱动? 有四类JDBC驱动.和数据库进行交互的Java程序分成两个部分,一部分是JDB

【转载】JAVA常见面试题及解答(精华)

JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class T { transient int a;  //不需要维持 int b;  //需要维持 } 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存. volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变.在多线程程序中,有时两个或更多的线程共

java常见面试题——java笔试题总结

注:本文转载自http://www.cnblogs.com/huajiezh/p/5790928.html,版权归其所有! Java常见面试题总结 一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4.描述一下ArrayList和LinkedList各自实现和区别 5.Java中的队列都有哪些,有什么区别. 6.反射中,Class.forName和cl