MySQL面试题积累(重要)【实时更新:2022/09/18】

目录

MySQL数据库:

1.char和vachar的区别:            

 2.varchar和text区别: 

3.SQL注入:BUG

4. 事务的四大特征ACID

5.术语:提交事务,回滚事务(事务回滚)

6.什么是索引?

7.为什么使用索引?

8.MySQL的锁

9.什么是死锁?

10.如何处理死锁?

11.SQL的执行顺序

12.字段为什么要定义为NOT NULL ?

13.说一说Drop,Delete与Truncate的共同点和区别?

14.数据库中的主键,超键,外键,候选键是什么?

15.三个范式

16.什么是SQL注入?

17.SQL约束有哪几种?

18.什么是子查询?

19.数据库为什么优化?

 20.什么是存储过程?

21.存储过程和函数的区别


MySQL数据库:

1.char和vachar的区别:            

  • char类型是【定长】的类型,当定义char(10),输入的时"123",他们占用的空间依然是10个字符。当输入的字符如果超出指定的范围,char会截取超出的字符。而且,当存储char,MySQL会自动删除输入字符串末尾的空格。  

  • char适合存储很短的,一般固定长度的字符串。例如,char非常适合存储密码MD5值,因为它是一个定长的值。对于端的列,char比varchar在存储空间上效率更高。

  • varchar(n)类型用来存储可变长度,长度最大为n个字符的可变长度的字符串数据。比如varchar(10),然后存储"abc",实际就是存储了3个字符。

  • char类型每次修改的数据长度相同,效率更高。varchar,每次修改的数据长度如果不同,效率更低。

 2.varchar和text区别: 

  • text不能设置默认值,varchar可以设置默认值。

  • text类型,由于单表的最大行宽的限制,支持溢出存储,只会存放768字节在数据页中,剩余的数据存储在溢出段中。

  • 一般我们都是用varchar。

3.SQL注入:BUG

        通过字符串的拼接,可以得到一个恒等的sql语句,可以跳过某些判断

4. 事务的四大特征ACID

        1.原子性:A

                一个事务,要么全部完成,要么全部不完成

        2.一致性:C

                在事务开始之前和事务结束之后,数据库的完整性没有被破坏

        3.隔离性:Isolation

                数据库允许多个事务同时对数据进行处理,每个事务之间是相互隔离

        4.持久性:D

                事务结束之后,对数据的增删改是永久性的

5.术语:提交事务,回滚事务(事务回滚)

        1.事务一旦提交,就不可能回滚

        2.当一个连接对象被创建是,默认情况下自动提交事务

        3.关闭连接是,数据会自动提交事务

6.什么是索引?

索引是一种数据结构,可以帮助我们快速的进行数据的查找,更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。

7.为什么使用索引?

1.通过创建唯一性索引,可以保证数据库表中每一个行数据的唯一性

2.可以大大加快数据的检索速度,这也是创建索引的最主要的原因

3.帮助服务器避免排序和临时表

4.将随机IO变成顺序IO

5.可以加速表和表之间的连接,特别是在实现的参考完整性方面特别有意义

8.MySQL的锁

当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制类保证访问的次序。

9.什么是死锁?

是指两个或者两个以上的进程在执行时候,因为争夺资源造成相互等待的现象,进程一直处于等待中国,无法得到释放,这种状态就叫死锁

10.如何处理死锁?

发出死锁检测,发现死锁之后,主动回滚死锁中的事务,不需要其他事务继续

11.SQL的执行顺序

SELECT DISTINCT
    < select_list >
FROM
    < left_table > < join_type >
JOIN < right_table > ON < join_condition >
WHERE
    < where_condition >
GROUP BY
    < group_by_list >
HAVING
    < having_condition >
ORDER BY
    < order_by_condition >
LIMIT < limit_number >

12.字段为什么要定义为NOT NULL ?

null值会占用更多的字节,且会在程序中造成很多与预期不符的情况

13.说一说Drop,Delete与Truncate的共同点和区别?

Drop                                直接删除表
Delete删除表中数据,可以加where语句
Truncate删除表中数据,在插入时自增长id又从1开始

14.数据库中的主键,超键,外键,候选键是什么?

主键:用户选作元组标识的一个候选键程序主键

超键:在关系中能唯一标识元组的属性集成为关系模式的超键

外键:如果关系模式S中属性Q是其他模式的主键,那么Q在模式S中称为外键

候选键:不含多余属性的超键称为候选键

15.三个范式

在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有足够的理由

第一范式:每个列都不可以再拆分

第二范式:非主键列完全依赖主键,而不能是依赖于主键的一部分

第三范式:非主键列只依赖于主键,不依赖于其他非主键

16.什么是SQL注入?

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

17.SQL约束有哪几种?

1.NOT NULL:用于控制字段的内容一定不能为空(NULL)

2.UNIQUE:控件字段内容不能重复,一个表允许有多个Unique约束

3.PRIMARY KEY:也是用于控件字段内容不能重复,但它在一个表只允许出现一个

4.FOREING KEY:用于预防破坏表之间连接的动作,也能防止非法数据插入外键列,因为它必须是她指向的那个表中的值之一

5.CHECK:用于控制字段的值范围

小知识:控件字段:表示与对象关联的成员 

18.什么是子查询?

条件:一条SQL语句的查询结果作为另一条查询语句的条件或查询结果

嵌套:多条SQL语句的嵌套使用,内部的S查询语句称为子查询

19.数据库为什么优化?

1.系统的吞吐量平静往往出现在数据库的访问速度上

2.随着应用程序的运行,数据库中的数据惠越来越多,处理时间会相应的变慢

3.数据是存放在磁盘上的,读写速度无法和内存相比

优化原则:减少系统瓶颈,减少资源占用,增加系统的反应速度

 20.什么是存储过程?

存储过程是一个预编译的SQL语句,优化是允许模块化的设计,就是说只需要创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯的SQL语句执行要快。

21.存储过程和函数的区别

返回值的区别:函数有一个返回值,而存储过程是通过参数返回的,可以有多个或者没有

调用的区别:函数可以在查询语句中直接调用,而存储过程必须单独调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值