数据库常见面试题

本文详细介绍了数据库面试中的重点,包括关系型与非关系型数据库的优缺点、索引的利弊及其创建时机、不同类型的JOIN操作、LIMIT查询、支持表情的字符集设置、数据复制方法、事务的ACID特性、查看与修改表结构及事务隔离级别等。还探讨了锁的分类和作用,以及数据库字段的增删改操作。
摘要由CSDN通过智能技术生成

1、常见的关系型数据库及非关系型数据库、优缺点

关系型数据库:mysql /oracle/sql server/sqlite

优点:1、都使用表结构,已于维护;2、SQL语言通用,使用方便;3、支持一个表以及多个表之间非常复杂的查询。

缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、高并发读写需求,硬盘I/O是一个很大的瓶颈。

非关系型数据库:redis / hbase /mongoDB /CouchDB

优点:1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等;2、读写速度快;3、高扩展性;4、成本低

缺点:1、不提供sql支持,学习和使用成本较高;2、无事务处理;3、数据结构相对复杂,复杂查询方面稍欠

 

2、索引的好处和缺点

好处:1、通过创建索引,可以在查询的过程中,提高系统的性能;2、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;3、在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间

缺点:1、创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大;2、索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大;3、在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行写/更新操作时,还需要操作索引文件

 

3、哪些情况适合创建索引,哪些情况不适合创建索引

应该创建索引:1、经常需要搜索的列;2、作为主键的列;3、经常用在连接的列,这些列主要是一些外键,可以加快连接的速度;4、经常需要根据范围进行搜索的列;5、经常需要排序的列;6、经常使用在where子句上面的列;

不应该创建索引:1、查询中很少用到的列;2、对于那些具有很少数据值的列.比如性别;3、对于那些定义为text,image的列;4、当对修改性能的要求远远大于搜索性能时.因为当增加索引时,会提高搜索性能,但是会降低修改性能

 

4、索引常见操作

create [unique] [clustered] [nonclustered] index index_name  on {tabel/view} (column[dese/asc][....n])

单独建索引:

CREATE INDEX idx_no_name ON customer(customer_no,customer_name); 

#删除索引:

DROP INDEX idx_no_name  on customer ;

查看索引

show index from customer

 

5、left join、right join、inner join区别

left join 左连接,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据

select * from A left join B on A.id = B.id

right join 右连接,查出来的结果显示右边的所有数据,然后左边边显示的是和右边有交集部分的数据

select * from A right join B on A.id = B.id

inner join 内连接,表示以两个表的交集为主,查出来是两个表有交集的部分

select * from A inner join B on A.id = B.id

 

6、limit n,m

limit N,M   N,从哪个位置开始 ,M  需要查找的数据量

SELECT * FROM tablename LIMIT 5,10; //检索记录行6-15

 

7、建表支持表情输入的charset

CHARSET=utf8mb4 才支持表情等的输入

 

8、两张表数据复制

复制表机构和数据

CREATE TABLE 新表 AS SELECT * FROM 旧表

复制表机构

CREATE TABLE 新表 AS SELECT * FROM 旧表 where 1=2

复制旧表数据到新表(表结构一致)

INSERT INTO 新表 SELECT * FROM 旧表

复制旧表数据到新表(表结构不一致)

INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM 旧表

 

9、事务的四个特性

ACID是衡量事务的四个特性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

 

10、查看建表语句、表结构

show create table  表名;查看建表语句

DESC 表名 ; 查看表结构

 

11、修改表名

ALTER TABLE 旧表名 RENAME TO 新表名 ;

 

12、事务的隔离级别 为什么可以隔离,锁的机制

事务问题:脏读;不可重复读;幻读;

事务等级:1、读未提交;2、读提交;3、可重读;4、可串行化

https://blog.csdn.net/zhouym_/article/details/90381606

 

13、数据库的锁分类、锁机制

数据库系统角度分为三种:排他锁、共享锁、更新锁。
程序员角度分为两种:一种是悲观锁,一种乐观锁。

https://blog.csdn.net/weixin_39651041/article/details/79985715

 

14、Mysql创建表,字段;

https://blog.csdn.net/u010002184/article/details/79354136

 

15、数据库修改字段/新增字段/删除字段

修改字段:ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新数据类型 新类型长度 新默认值 新注释;

ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型;

删除字段:ALTER TABLE 表名 DROP [COLUMN] 字段名 ;

新增字段:ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段 ;

https://blog.csdn.net/u010002184/article/details/79354136

 

ps这里声明三点:1、以上内容为整理+原创,大部分答案为搜索整理但是部分出处忘记了,如有需要可以联系我加上;2、整理该博文目的在于记录本次跳槽期间遇到的数据库相关问题,供大家分享;3、该篇博文后续会持续更新知识点总结;

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值