1. 什么是索引?
索引是一种数据结构,可以帮助我们快速进行数据的查找;
2. 索引是个什么样的数据结构呢?
索引的数据结构和具体的存储引擎的实现有关,在mysql中常用索引有hash索引和B+树索引,innoDB中默认使用B+树索引;
3. 在建立索引的时候,都有哪些需要考虑的因素呢?
1.字段使用频率;
2.如果是联合索引,需要按照索引时的字段顺序使用,否则无法命中索引;
3.过多的索引反而会影响数据库的查询效率
4.ACID是什么?可以详细说一下吗?
A:Atomicity原子性,不可分割
C:Consistency 一致性,
I:Isolation 隔离性;
D:Durability 持久性;
5.为什么要尽量设定一个主键?主键使用自增ID还是UUID?
主键可以保证整张表的唯一性,主键也可以快速定位行数据;
推荐自增ID,因为在默认的InnoDB中,主键索引是作为聚簇索引存在的.自增索引可以保证数据的顺序.
6.字段为什么要求定义为not null?
null值会占用更多的空间维护,所以如果可以的话定义一张表的时候尽量减少允许非空列的存在;
7.MySQL中的varchar和char有什么区别?
char是定长的字符串,空间占用是固定的而var是变长字符串,存储时如果没有指定长度会默认采用最大长度存储,
从检索效率上讲char的效率也更高;
8.varchar(10)和int(10)代表什么含义?
varchar仅代表申请的长度空间,也就是最大存储数据的长度.
9.三个范式
第一范式: 每个列都不可以再拆分.
第二范式: 每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来
第三范式: 非主键列只依赖于主键,不依赖于其他非主键.数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系
10.对慢查询都怎么优化过?
sql优化:
尽量使用索引查询,少用!=或者in这样的操作符会导致全表扫描;
表数据尽量不要使用null;
尽量少用字符串的模糊通配符%查询;
尽量指定查询的结果字段,而不是用*;
分批处理大批量的数据查询;
条件语句exists效率更高;
select into少用;
另外如果表中数据量过大,可以考虑横向分表或者纵向分表;
11、与Oracle相比,Mysql有什么优势?
1.Mysql是开源软件,随时可用,无需付费。
2.Mysql是便携式的
3.带有命令提示符的GUI。
4.使用Mysql查询浏览器支持管理
12、如何区分FLOAT和DOUBLE?
以下是FLOAT和DOUBLE的区别:
浮点数以8位精度存储在FLOAT中,并且有四个字节。
浮点数存储在DOUBLE中,精度为18位,有八个字节。
13、MYSQL数据表在什么情况下容易损坏?
服务器突然断电导致数据文件损坏。
强制关机,没有先关闭mysql 服务等。
14.什么是存储过程?有哪些优缺点?
存储过程是一些预编译的SQL语句。
优点:
存储过程是一个预编译的代码块,执行效率比较高
存储过程在服务器端运行,减少客户端的压力
允许模块化程序设计,只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用
一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
可以一定程度上确保数据安全,对于没有权限执行存储过程的用户,也可授权他们执行存储过程。
缺点:
可移植性不灵活(因为存储过程依赖于具体的数据库)
不便于调试。
没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。
无法适应数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。
15.说一说drop、delete与truncate的区别?
drop直接删掉表有关的一切(数据/结构/约束...),不会记录日志,为DDL(Data Definition Language,数据库定义语言)操作。
truncate 删除表中所有数据(再插入时自增长id又从1开始),该操作也不会记录日志所以比较快,为DDL操作。只能删table。
DELETE语句执行删除的过程是每次从表中删除一行,需要记录日志,比较慢,可以加where 语句,为DML(Data Manipulation Language, 数据操纵语言)。可以删table 和view 。
速度上drop > truncate > delete
16.什么是视图?以及视图的使用场景有哪些?
视图是一种虚拟的表,具有和物理表相同的功能,没有物理存储。可以对视图进行增,改,查,操作,试图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。
使用场景:
只希望用户查看特定信息的列
来源于多个表,可以创建视图提取我们需要的信息,简化操作。
17.