1.数据库的三范式是什么?
第一范式:表中的每个字段都不能再分;
第二范式:满足第一范式并且表中的非主关键字字段都依赖于主键字段;
第三范式:满足第二范式并且表中的非主关键字必须不传递依赖与主键字段;
2.什么是数据库事务?
事务具有四大特性:一致性,原子性,隔离性,持久性。
数据库事务是指:几个SQL语句,要么全部执行成功,要么全部执行失败,银行转账就是事务的典型场景。
数据库事务的三个常用指令:Begin Transaction、Commit Transaction、RollBack Transaction。
3.什么是视图?
视图实际上是在数据库中通过Select查询语句从多张表中提取的多个表字段所组成的虚拟表。
1)视图并不占据物理空间,所以通过视图查询出的记录并非保存中视图中,而是保存在原表中。
2)通过视图可以对指定用户隐藏相应的表字段,起到保护数据的作用。
3)在满足一定条件时,可以通过视图对原表中的记录进行增删改操作。
4)创建视图时,只能使用单条select查询语句。
4.什么是索引?
索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可以快速的访问数据库表中的特定信息。
索引分为:聚集索引、非聚集索引、唯一索引等。
一张表可以有多个唯一索引和非聚集索引,但最多只能有一个聚集索引。
索引可以包含多列
合理的创建索引能够提升查询语句的执行效率,但降低了新增、删除操作的速度,同时也会消耗一定的数据库物理空间。
5.什么是存储过程?
存储过程是一个预编译的SQl语句,优点是允许模块化的设计,就是说只需创建一次,以后再改程序中就可以调用多次。
如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
6.什么是触发器?
触发器使一种特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而
不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
7.在关系数据库中如何描述多对多的关系?
在关系型数据库中描述多对多的关系,需要建立第三张数据表。比如学生选课,需要在学生信息表和课程信息表的基础上,再建立选课信息表,
该表中存放学生id和课程id。
8.什么是数据库约束,常见的约束有哪几种?
数据库约束用于保证数据库表数据的完整性(正确性和一致性)。可以通过定义约束、索引、触发器来保证数据的完整性。
总的来说,约束可以分为:
主键约束:primary key
外键约束:foreign key
唯一约束:unique
检查约束:check
空值约束:not null
默认值约束:default
9.列举几种常用的聚合函数?
Sum:求和
Avg:求平均数
Max:求最大值
Min:求最小值
Count:求记录数
10.什么是内连接、左外连接、右外连接?
内连接:匹配两张表中相关联的记录
左外连接:除了匹配两张表中相关联的记录外,还会匹配左表中剩余的记录,右表中未匹配到的字段用NULL表示。
右外连接:除了匹配两张表中相关联的记录外,还会匹配右表中剩余的记录,左表中未匹配到的字段用NULL表示。
在判断左表右表时,要根据表名出线在Outer Join(外连接)的左右位置关系。
11.如何在删除主表记录时,一并删除从表相关联的记录?
如果两张表存在主外键关系,那么在删除主键表的记录时,如果从表有相关联的记录,那么将导致删除失败。
在定义外键约束时,可以同时指定3种删除策略:
一是将从表记录一并删除(级联删除);
二是将从表记录外键字段设置成NULL;
三是将从表记录外键字段设置为默认值。
12.什么是游标?
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录进行处理的机制。
游标的使用步骤:
1、定义游标;
2、打开游标;
3、从游标中操作数据;
4、关闭游标;