数据库面试题
- **不断更新中**
- 1. 触发器是什么和它的作用
- 2. 什么是存储过程,用什么调用
- 3. 索引作用,优缺点
- 4. 主键和索引的区别
- 5. 什么是内存泄漏
- 6 .维护数据库完整性,一致性,你会用那种方法
- 7. 什么是事务
- 8. 什么是锁
- 9. 什么是视图
- 10. 游标是什么
- 11. SQL Server 中使用的数据库对象
- 12. NULL 是什么意思
- 13. SQL Server 中有什么类型的索引
- 14. 什么是外键
- 15. SQL Server中有什么不同类型的触发器
- 16. 对于一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑
- 17. 你可以用什么来确保表格里的字段只接受特定范围的值
- 18. 使用存储过程的经验
- 19. 什么是相关子查询?如何使用这些查询
- 20. 什么是SQL注入式攻击
- 21. 如何防范SQL注入式攻击
- [点击查看下一篇 21~30](https://blog.csdn.net/Shenqialong/article/details/106116143)
不断更新中
1. 触发器是什么和它的作用
是一种特殊类型的存储过程,可包含复杂的业务规则和逻辑,通过事件触发,
通过事件触发,维护数据库的完整性和一致性
2. 什么是存储过程,用什么调用
为以后的使用而保存的一条或多条MySQL语句的集合。
可接收、输出、参数.也可返回单个或多个参数
存储过程就是有业务逻辑和流程的集合
存储过程用create procedure 创建, 业务逻辑和sql写在begin和end之间。mysql中可用call porcedureName ();来调用过程。
3. 索引作用,优缺点
- 数据存储结构,特殊查询手段,
- 加快检索过程,提高查询效率,不需全盘扫描
- 减慢数据录入速度,增加数据库尺寸大小
4. 主键和索引的区别
- 主键是特殊索引,表中数据唯一性
- 表中主键只有一,索引可以有多个
- 使用主键自动创建主键索引,
- 主键可有多个字段组成,叫复合主键,同时主键肯定是唯一索引
- 一个表可以有多个唯一索引
一张表 = 多个主键{单个或多个字段组成 = 复合主键 = 多个唯一索引}
5. 什么是内存泄漏
是指分配的堆内存由于某种原因程序内存未释放或无法释放,造成内存的浪费等后果,
调用free和delete可释放
6 .维护数据库完整性,一致性,你会用那种方法
第一是约束,check、主键、外键、非空来约束
然后复杂的用触发器,有保证
最后是自写逻辑,编程复杂,效率低下
7. 什么是事务
被绑定在一起的,作为一个逻辑工作单元的,sql语句分组
任何一个语句执行失败,都会回滚到操作前,比如银行取钱
四大属性(ACID):
- 原子性: 事务必须是原子工作单位,要么全执行,要么全不执行
- 一致性:事务完成时,所有数据必须保持一致状态
- 隔离性:由并发事务所做的修改必须与任何其他并发事务所做的修改隔离
- 永久性:事务完成之后,对于系统的影响是永久的.
三大阶段: 开始、提交、回滚,回滚可到开始,或者某一处理阶段
8. 什么是锁
在DBMS中,锁是实现事务的关键,保证事务完整性,并发性.
使数据的拥有者,在某段时间内不能使用某些数据或数据结构,
锁也有分级,常见订票
9. 什么是视图
试图是一种虚拟表,具有物理表相同的功能
由一个或多个表的行和列组成的子集,修改时不影响基本表,有的可修改,有的不可以
相比多表查询,获取数据更容易
10. 游标是什么
处理数据的一种方法,检索一次一行或多行
相当于指针,对结果集任何一个位置数据灵活的处理,主要用在逐条处理数据的时候
11. SQL Server 中使用的数据库对象
表、索引、试图、存储过程、触发器、用户定义函数、数据库关系图、全图索引.
12. NULL 是什么意思
表示UNKNOWN (未知),占位符 : 不代表 “” (空字符串),
插入数据未插入某个,出现 NULL ,必须要用 IS NULL来判断
13. SQL Server 中有什么类型的索引
索引有两种形式: 聚集索引和非聚集索引,与数据库分开的
- 聚集索引: 在索引的叶级保存数据,意味着无论聚集索引里有哪些或哪个字 段, 这些字段都会按照顺序保存在表格中 ,一个表只能有一个,如电话簿
- 非聚集索引: 在索引的叶级有一个标识符.像指针一样,通过索引找到对应的数据,可存在多个
14. 什么是外键
用来建立两个表格之间的约束, 两个字段称为外键
15. SQL Server中有什么不同类型的触发器
- INSTEAD - OF : 替代数据操控语言(DML)语句对表格执行语句的存储过程, 当出发时,会执行触发器的代码,而不会执行自己的代码
- AFTER : 是DNL语句执行之后才出发执行,对于监视发生在数据库表格里的变化十分好用
16. 对于一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑
索引过多会导致对数据库操作时花费过多的时间,需要在操作数据时进行优化和维护,同时索引也需要维护
17. 你可以用什么来确保表格里的字段只接受特定范围的值
- Check: 它在数据库表格里被定义,用来限制输入该列的值,首选最好的
- 触发器: 要求在表格里定义,在某些情况下会影响性能
18. 使用存储过程的经验
- 返回参数是由存储过程返回,可以用来表示存储过程是成功或失败,返回参数总平时INT类型
- OUTPUT有开发人员指定,可以返回其他类型数据在存储过程中可以使用多个OUTPUT参数,但只能够返回一个参数
19. 什么是相关子查询?如何使用这些查询
是一种包含子查询的特殊类型查询通常是指将查询的结果作为另一次查询的条件
包含的子查询会真正请求外部查询的值,可以实现简单多表连接查询的效果
20. 什么是SQL注入式攻击
平台层注入: 由于数据库配置,数据平台漏洞
代码层注入: 有些程序会用那些用户输入的内容直接来构造动态SQL语句,利用这个特点执行恶意SQL命令