• 学习笔记 MySQL面试题积累(重要) 【实时更新】


    目录

    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的执行顺序

    1. SELECT DISTINCT
    2. < select_list >
    3. FROM
    4. < left_table > < join_type >
    5. JOIN < right_table > ON < join_condition >
    6. WHERE
    7. < where_condition >
    8. GROUP BY
    9. < group_by_list >
    10. HAVING
    11. < having_condition >
    12. ORDER BY
    13. < order_by_condition >
    14. 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.存储过程和函数的区别

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

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

  • 相关阅读:
    工程化专栏目录
    计算机操作系统 (王道考研)笔记(四)I/O系统
    Linux终端、关机、ldd、ldconfig等系统命令
    2023年高教杯数学建模2023B题解析(仅从代码角度出发)
    基于Python深度图生成3D点云
    基于Dockerfile创建镜像
    动态规划---打家劫舍问题
    Serilog日志框架
    运行十几年都没出现BUG的软件都是怎么做的?
    SpringCloud尚硅谷全部
  • 原文地址:https://blog.csdn.net/Dshuai7191/article/details/126430553