招商银行面试准备

  1. 项目相关,并发多少,有没有压测
  2. mysql事务ACID
    1. A是指原子性,一件事务要么全部完成,要么全部不完成;
    2. C是指一致性,执行事务前后,数据保持一致,多个事务对同一数据的读取结果是相同的;
    3. I是指隔离性,并发访问数据时,各个事务之间是相互独立的;
    4. D是持久性,是指一件事务完成之后,对数据库的操作是永久性的。
  3. 并发事务带来的问题

    1. 脏读
      读取了脏数据,脏数据是一个事务还没有提交的数据。具体是指,多并发条件下,一个事务读取了另一个事务正在修改但还没有提交的数据。

    2. 丢失修改
      是指,多并发情况下,一个事务对数据的修改,被另一事务的修改覆盖。

    3. 不可重复读
      一个事务多次读取数据,读取内容前后不一致。

    4. 幻读
      一个事务多次读取数据,两次读取多了几行或者少了几行数据。它与不可重复读的区别在于,不可重复读数据读取数目不会发生变化,只是内容发生变化。

  4. MySQL四个隔离级别

    1. 读未提交(read uncommitted)
      最低隔离级别,允许读取未提交数据,会出现脏读,不可重复读,幻读。

    2. 读已提交(read committed)
      只能读取已经提交的数据,可以防止脏读,但不能防止不可重复读和幻读。

    3. 可重复读(repeatable read)
      可以重复读取数据,读取结果一致,可以防止脏读和不可重复读,但是不能防止幻读。

    4. 可串行化(serializable)
      最高隔离级别,完全服从ACID隔离级别,所有事物依次逐个执行,可以防止脏读,不可重复读,幻读。

  5. InnoDB存储引擎默认采用REPEATABLE-READ隔离级别,但是它有next-key lock算法,可以防止幻读的产生,所以可以达到可串行化隔离级别。InnoDB在分布式事务下,一般会用到可串行化隔离级别

  6. mysql存储过程
     

  7. MySQL索引建立几大原则

    1. 选择唯一性索引

    2. 最左前缀匹配原则(联合索引: mysql 从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。)

    3. 尽量选择区分度高的列作为索引,谁的区分度更高(同值的最少),谁建索引

    4. 为经常需要排序、分组、联合操作的列建立索引

    5. 索引的长度应尽量少,方便存储和查询

    6. 表的主键、外键必须有索引

    7. 限制每张表上的索引数量,建议不超过5个

    8. 每一张表必须有主键

    9. 前缀索引: 有时候需要索引很长的字符列,这会让索引变得大且慢。通常可以索引开始的部分字符

  8. 数据库三大范式

    1. 第一范式,数据库表中每一字段值都是不可分割的原子值

    2. 第二范式,表中每一列都和主键相关,而不能只与主键某一部分相关(主要针对联合主键而言)

    3. 第三范式,表中非主键字段必须直接依赖于主键,而不能间接依赖

  9. Mysql最左匹配原则

    在mysql建立联合索引时,会遵循最左匹配原则,即最左优先,会从联合索引最左边开始匹配。
  10. 为什么要有联合索引

    1. 减少开销

    2. 覆盖索引,减少IO操作

    3. 效率高,索引列越多,筛选出的数据越小

  11. mysql的约束有哪些

    1. 唯一约束,unique

    2. 非空约束,not null

    3. 唯一非空约束,unique not null

    4. 主键约束,primary key

    5. 自增长策略,auto_increment

    6. 外键约束,foreign key(classnum) reference class(num)

  12. 常见字段类型
    int char varchar date time

  13. 常见语句
    创建表 create table student(.......);
    删除表 drop table student;
    向表添加字段,删除字段,更改字段类型
    alter table student add name varchar;
    alter table student drop name;
    alter table student modify name char;
    插入记录
    insert into student(num) value(1);
    修改表中记录
    update student set name='Tom' where num=1;
    删除记录
    delete from student where num=1;
    查询语句

  14. 主键索引,唯一索引,普通索引,全文索引,多列索引

  15. 数据库删除命令
    drop table student;
    truncate table student;
    delete from student where num=1;
    drop与truncate的区别在于,drop不仅删除表中内容,还将表从数据库中移除。truncate只是清除表中数据。

  16.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值