基础:
1.数据库的三范式:原子性、唯一性、不依赖性,是典型的时间换空间策略
2.char、varchar、int 区别
3.两种存储引擎的区别
4.主从复制流程以及作用
5.设计表一对一、一对多,多对多
6.
mysql查询时的书写顺序: select…from…where…group by…having…order by… mysql的执行顺序: from…where…group by…having…select…order by…
having和where的区别
7.join on,join left on,join right on ,union
8.存储过程与触发器的区别
创建:delimiter // create procedure pro( ) … end //
调用:call
删除:drop procedure pro;
创建:create trigger before … on … when
dorp trigger … on …
一张表复制到另一张表中,
当表不存在时:Create table new_table (select * from old_table);
当表存在时: insert into new_table select * from old_table
9.简单说一下drop、delete与truncate的区别
10.MySQL、MongoDB、Redis以及HBase的对比
11.
数据库的事物:
1.事物的四大特性(ACID):
原子性、一致性、隔离性、持久性
2.四大隔离级别:
脏读、不可重复读、幻读
Read uncommitted、Read commit、Repeatable read 、Serializable
3.事物并发会带来那些问题和解决办法
脏读、不可重复读、幻读,通过隔离级别来解决
丢失更新:回滚丢失(隔离级别解决)、覆盖丢失(锁和隔离级别解决)
4.锁:如何避免
数据库的锁:共享锁、排他锁
锁思想:悲观锁、乐观锁
锁现象:活锁、死锁
数据库索引:
- 什么是索引:
a) 索引是用来快速寻找那些具有特定值的记录,MySQL中的索引都以B-树的形式保存,如果没有索引,执行查询时,MySQL会扫面整个表的所有记录,直到找到符合要求的记录,如果做为索引条件的列上创建了索引,MySQL无需扫面记录,可迅速找到目标记录位置。 - 索引的类型
a) 普通索引:没有唯一性的限制,alert table tablename add index 索引名
b) 唯一索引:索引列的值必须唯一,alert table tablename add unique[索引名] (列字段)
c) 主键:主键唯一且不为空,一般在创建表时就指定,
create table tablename ([],primary key(列名) auto_increament)
alert table tablename add primary key not null
d) 全文检索:在varchar或者text类型上创建,通过create table、create index、alert table命令创建 - 单列索引和多列索引:单列索引会先筛选出符合条件,多列索引比他要多几个筛选条件,返回结果。
- 最左索引:多列索引的一个优点,
- 选择索引列:可以考虑主要是两种,where和join子句中出现的列。MySQL只对比较类型的操作符才使用索引(<,<=,=,>,>=,BETWEEN,IN),like不是以%开头的模糊查询情形。