数据库面试问题

数据库

  1. 事务

四大特征ACID①原子性:事务是最小的执行单位,不允许分割,要么不做要么都做完。

②一致性:事务操作之后,数据前后保持一致状态。

③隔离性:指一个事务的内部操作对别的事务是是隔离的,并发的事务之间互不干扰。

④持久性:指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。

脏读:比如A事务修改了某数据,但是没提交,B事务读取了这个数据,A事务发生回滚,B事务读的这个就是脏数据。

不可重复读:在同一个事务内,两次相同的查询返回了不同的结果。如何A读取一个数据,期间B修改了,A再次读取就不一样。

幻读:事务不独立执行会产生的现象。:A事务将数据库中所有数据都删除,B事务又插入了一个数据,导致删除后发现还有一个数据。

数据库隔离级别?读未提交,可能发生、脏读、不可重复度、幻读 读提交,可以避免脏读

可重复度,可避免脏读、不可重复度 串行化,可避免脏读、不可重复度、幻读

  1. 数据库都有什么锁?

按照锁的级别分有表级锁、页级锁、行级锁,表级锁的开销最小,不会出现死锁。

其他有悲观锁、乐观锁、共享锁、排他锁、意向锁、行锁。

  1. 数据库的左连接和右连接的区别?

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接,内连接) 只返回两个表中连接字段相等的行

full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。

  1. 数据库索引?

数据库索引分为:普通索引、唯一索引、全文索引、空间索引、单列索引、多列索引

优点:①能够加快数据的检索速度②唯一性索引可以保证每一行数据的唯一性③加速表与表之间的连接 缺点:①创建索引需要消耗时间②创建索引需要消耗物理空间③维护数据库也要维护索引

数据库的底层索引是用B树和B+树实现的,但是为什么使用的是它们,为什么不用红黑树?

    B+Tree的内部节点存key,叶子节点存value,这样可以更快的缩小查找范围,提升sql的查询效率红黑树等数据结构也可以用来实现索引,但是文件系统以及数据库系统普遍采用B-Tree/B+Tree作为索引结构.这是因为:索引本身也很大,因此索引往往是以索引文件的形式存储在磁盘上.所以,索引查找的过程就会产生磁盘的I/O操作,相比于内存存取,I/O存取消耗要高几个数量级,所以索引的优劣最重要的指标就是在查找过程中的磁盘I/O存取次数.

  1. delete、truncate、drop的区别?

①delete是删除某行数据,truncate是清空表、drop是删除表②delete可以回滚、truncate和drop不能回滚③执行速度上drop>truncate>delete

  1. 数据库的优化方法?

八种①使用索引,使用外键,使用锁,使用事务②选合适的字段属性,优化查询语句,使用连接代替子查询③使用联合代替临时表

7.order by和group by的区别

①order by 对字段进行排序,默认的为升序ASC,降序是DESC. ②group by是分组查询,一般和聚合函数同时使用

8.视图和表的区别

①视图是编译好的sql语言,表不是②视图没有实际物理记录,而表有③视图是窗口,表是内容

④视图是虚表,表是实表

9.什么是存储过程?

存储过程是一系列特点sql语言的集合,而且是已经编译过的可以直接运行,使用它能大大方便对数据库进行操作 优点:执行效率高、安全性高、存储本地减少网络通讯,缺点可移植性差

10.SQL语言有哪些功能?

①数据查询DQL select②数据定义DDLcreate、drop③数据操纵DML insert、update、delete④DCL数据控制grant、revoke

11.什么是触发器(trigger)?

触发器是由某个事件来触发某个操作,事件包括insert语句、update语句、delete语句,当数据库执行这些语句就会激发相应的操作 作用:①它可以强化约束,来维护数据的完整性②写入数据前可以检验和转换

12.什么是游标?

游标实际上是存储过程中的操作,用来读取数据的。游标充当指针的作用。包括声明游标、打开游标、使用游标和关闭游标。处理之前,变量之后

13.like %和-的区别?

like有两种通配符 % -,%可以匹配多个字符,-只能匹配1个

14.聚簇索引和非聚簇索引?

聚集索引表记录的排列顺序和索引的排列顺序一致,所以查询效率快,非聚集索引指定了表中记录的逻辑顺序,但是记录的物理和索引不一定一致

15.mysql存储引擎?

inInnoDB、MyISAM的区别?、

innoDB支持事务,myisam不支持,innodb支持外键,myisam不支持,innodb使用聚簇索引,myisam使用非聚簇索引

16.什么是死锁?

两个进程因互相等待资源而引发的一种无限等待过程叫死锁。

17悲观锁和乐观锁?

悲观锁认为数据每时每刻都在变动,一个事务拿到悲观锁后,其他任何事务都不能对该数据进行修改。乐观锁认为数据的变动不会太频繁。因此,它允许多个事务同时对数据进行修改。

18.数据库完整性约束?

实体完整性、参照完整性、用户定义的完整性

19.

聚合函数

1.count() 所有记录数bai2.count(*)所有非null记录数3.avg()   某一列du平均值

4.min() 某一列最zhi小值5.max() 某一列最大值6.sum() 某一列总和

20.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值