1.数据库三范式是什么?
第一范式,每张数据表必须要有主键,并且列不可再分。
第二范式:第一范式基础上,所有的非主键字段必须完全依赖主键,不能出现部分依赖。表中只能存在一个业务主键,用来标识唯一一条记录,并且这张表中的所有属性完全依赖该业务主键。适用于多对多关系。
第三范式:第二范式的基础上,所有的非主键属性直接依赖主键,不能出现传递依赖。就是任何字段不能由其他字段派生出来。适用于一对多关系,例如如果出现部门表,那么员工表中就只能存在部门表的主键id。如果没有部门表,那么就需要创建出来。
2.mysq的数据引擎都有什么?
mysql中的常用的数据引擎包括MyIsam,InnoDB,memory等等。
MyIsam不支持外键,不支持事务,并发性比较差。全表锁。
Innodb行锁,支持事务,比较安全。并发性强。支持外键约束。
Memory全表锁,存储在内存中,优点是非常快,缺点是一断电数据就会消失。
3.详细说明InnoDB和MyISAM的区别?
从以下四个方面说明:
1.InnoDB支持事务,MyISAM不支持。InnoDB中每一条sql语句都默认封装成事务。自动提交。
2.InnoDB支持外键,MyISAM不支持。如果需要转换的时候,要小心存在外键的表会出现失败情况。
3.InnoDB是聚集索引,数据文件和索引绑到一起的,必须要有主键,使用主键索引效率比较高。MyISAM是非聚集索引,数据文件是分离的的,索引保存的是数据文件的指针。
4.InnoDB不支持全文索引,而MyISAM是支持全文索引的。查询效率上MyISAM比较高。、
4.什么是数据库的事务?
事务:多条sql语句要么全部成功,要么全部失败。
事务的特性:原子性,一致性,隔离性,持久性。
原子性: 所有的sql语句作为一个原子单元执行。所有的sql语句全部执行成功,整个事务才可以提交。
一致性:事务操作之后,所有的数据状态是一致的,数据不会被破坏。
隔离性:在并发数据操作的时候,不同事物之间有独立的数据空间,不会相互影响。
持久性:一旦事务提交成功,事务中的所有操作都必须持久化到数据库中。
5.什么是索引?
索引是帮助我们高效获取数据的一种数据结构,类似于一本书的目录,根据索引我们可以快速的定位到具体的某一条记录的存在的范围。
我们通常说的索引包括聚集索引,唯一索引,复合索引,没有特别说明,默认都是B+树。
6.常用的sql优化手段都有什么?
1.小表驱动大表
2.查询的时候尽量不要查询select * ,
3.减少子查询,使用关联查询。
4.尽量不要使用or,使用union或者union all
5.尽量避免在where条件中使用!=,因为这样查询的时候会导致引擎放弃使用索引。
7.简单说说drop、delete、truncate的区别
delete和truncate只删除表的数据,不删除表结构。delete在事务提交之后才会生效,truncate、drop是立即生效。