数据库常见面试题总结

简介:

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

数据库常见面试题总结

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语句中使用,而存储过程则不能。





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5230510.html,如需转载请自行联系原作者

相关文章
|
2月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
74 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
3月前
|
存储 NoSQL 关系型数据库
面试题18: NOSQL数据库
面试题18: NOSQL数据库
|
3月前
|
缓存 数据库 索引
面试题17: 数据库优化
面试题17: 数据库优化
|
2月前
|
存储 关系型数据库 MySQL
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
最全MySQL面试60题(含答案):存储引擎+数据库锁+索引+SQL优化等
225 0
|
24天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
315 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
24天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
34 6
|
2月前
|
SQL 存储 关系型数据库
C# .NET面试系列十:数据库概念知识
#### 1. 为什么要一定要设置主键? 设置主键是数据库设计中的一个重要概念,有几个主要原因: 1、唯一性 ```c# 主键必须保证表中的每一行都有唯一的标识。这样可以避免数据冗余和不一致性。如果没有主键或者主键不唯一,就可能出现数据混乱或错误。 ``` 2、查询性能 ```c# 数据库系统通常会使用主键来加速数据检索。主键通常会被索引,这样可以更快速地找到特定行的数据,提高查询效率。 ``` 3、关联性 ```c# 主键常常用于建立表与表之间的关系。在关系数据库中,一个表的主键通常与其他表中的外键建立关联,这种关系对于数据的一致性和完整性非常重要。 ``` 4、数据完
134 1
C# .NET面试系列十:数据库概念知识
|
3月前
|
存储 数据库 索引
面试题 16: 什么是数据库索引
面试题 16: 什么是数据库索引
面试题 16: 什么是数据库索引
|
4月前
|
存储 缓存 NoSQL
2023春招面试题:Redis数据库面试题整理
2023春招面试题:Redis数据库面试题整理
|
4月前
|
SQL 关系型数据库 MySQL
毕业季--数据库常见面试题
毕业季--数据库常见面试题