数据库方面的面试题

面试遇到的题目
1.什么是索引?
索引:用来提高数据查询的过滤效率,它类似一个目录,查询数据时,通过“目录”先对数据进行定位,然后直接跳到数据所在的位置。
2.索引的原理?
表只能有一个主键,一个表只能有一个聚集索引,因为主键的作用把表的数据格式转换成平衡树的格式放置,即表在磁盘上的存储结构就由整齐排列的结构转变成了表树状结构,
3.为什么加索引后会使查询变快?
加索引后,表的结构为平衡树结构,这个结构含有很多节点的树,从根节点到叶节点有多少层就查找几次才能得到结果,
这里写图片描述
程序表示:Math.Log(10000000000,10),10000000000是记录数,10是树的分叉数,结果就是查找次数,结果从亿降到个位数,所以所以会使数据查询的速度变快
4.为什么加索引后会使写入、修改、删除变慢?
平衡树结构必须维持一个正确的状态,增删该数据会改变平衡树各节点索引数据内容,破坏树结构,因此,每次数据改变时,都要重新梳理树的机构以确保它的正确,性能就会变慢。
5.怎么创建索引?
主键,外键,唯一,都可以创建索引
sql语句:create index 索引名 on 表(字段1,字段2)
为a字段创建索引
where a =’abc’
where a like ‘abc%’
为a,b字段创建索引
where a =‘abc’ and b=‘def’
6.什么情况下索引会失效?
导致索引失效:
a.条件中有or,即使有条件带索引也不会使用
select * from order where ID =200 or user_id=12 索引会失效
b.对于多列索引,不是使用的第一部分,则不会使用索引。
c.like的模糊查询以%开头,索引失效
select * from order where user_name like ‘%w’,索引失效
d.如果列类型为字符串,一定要在条件中将数据使用引号引用起来,否则索引失效
e.如果mysql预计使用全表扫描比使用索引快,则不适用索引

sql语句的面试题:
1.一个学生表,字段有学生id,name,chenji ,查询这个班的同名同姓的学生有多少人
select count(name)c
from 表
group by name
having c=‘name’;
2.标准表连接语法
内连接,只查询连接条件以内的数据
外连接,可以查询连接条件以外的数据

select
e.employee_id,e.first_name,e.salary,
d.department_name
from employees e
left join departments d
on(e.department_id=d.department_id);

3.事务
事务事由一组sql语句组成,这一组sql语句要么整体成功,要么整体失败
事务的四个特性
a.原子性
b.一致性
c.隔离性
一个事务进行中时,另一事务不能操作数据
d.持久性
提交事务之后,数据持久生效
4.事务操作
启动事务(begin) ——-提交事务(comit) ——回滚事务(rollback)
5.数据访问冲突
多个事务并行运行时,同时访问数据,会造成数据访问冲突
脏数据
不可重复读
幻读
5.事务的隔离级别
4种:读取未提交,读取提交,可重复读,串行化

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值