数据库常考面试题

MySQL的存储引擎

MyISAM:插入、查询速度快,但是不支持事务,不支持外键。
InnoDB:支持事务,外键,行级锁定,性能较低。

数据库常考面试题

数据库内外网交换怎么做的,如果交给你,你会怎么做

你是否知道一些第三方的组件能够完成数据库的交换

数据库你通常是怎么优化的

1、尽量使用UNION ALL代替UNION
2、like尽量少用
3、当只要一行数据时使用LIMIT 1
4、数字字段在条件中不要用”引着
5、select * 换成select 字段
6、避免在where中使用in, not in, or, having
7、使用exists(not exists)替换in(not in)

MySql数据库的优化

  1. 把常用的字段和不常用的字段分开。(比如将主表和明细表的字段分开放在两个表中存放)
  2. 列选择原则。整型 > datetime > enum,char > varchar。从前往后,能使用前面的就用前面的。比如存储性别,int(1)就比char(1)性能好,因为int是定长,不用考虑字符集;char(1)需要考虑字符集。
  3. 够用就行,不要慷慨。比如:varchar(10),varchar(300)。虽然varchar是变长,但是varchar(300)在表连接查询的时候会占用更大的内存。
  4. 使用索引。索引是一种可以高效查询的数据结构。
    • 提高查询速度。
    • 提高排序速度。
    • 提高分组统计速度。

索引底层采用的算法有两种

BTree树:左前缀原则。

Hash索引

存储过程的优缺点

存储过程(Stored Procedure )是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。
优点:
1. 由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的SQL语句块要快。
2. 由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、减轻网络负担。

缺点:
1. 不可移植性
2. 业务逻辑多处存储,会增加额外的维护负担。

创建存储过程语句


--创建存储过程
if (exists (select * from sys.objects where name = 'proc_get_student'))
    drop proc proc_get_student
go
create proc proc_get_student
as
    select * from student;

--调用、执行存储过程
exec proc_get_student;

存储过程的参数是怎么传递的

存储过程的异常是怎么分类的

存储过程你通常在何处编写

你们数据库采用何种字符集,和其他字符集相比,有什么区别

开发中如何解决SQL注入的问题

  1. 数据库权限控制。普通用户和系统管理员区分开。
  2. 通过正则表达式校验用户输入。
  3. 参数化查询。强制执行类型和长度检查。

你的项目里面触发器是如何使用的,触发器有什么优点和缺点,有什么作用

谈一谈数据库里面的视图

触发器和函数的区别

数据库连接池有哪些,如果让你设计一个连接池,你会怎么设计

项目中数据库之间的同步是如何完成的

事务的隔离性详细说说

数据库的索引在项目中是怎么使用的

索引的理解与作用

根据索引得到行指针,然后快速定位到数据库记录。可以提高检索速度。

事务的理解

猜你喜欢

转载自blog.csdn.net/Jolie_Laide0212/article/details/74516324
今日推荐