MySQL面试题(四)

时间:2022-10-08 15:21:23

38、  Myql 中的事务回滚机制概述

事务是用户定义的一个数据库操作序列, 这些操作 要么全做要么全不做, 是一个不可分割的工作单位, 事务回滚是指将该事务已经完成的对数据库的更新 操作撤销。

要同时修改数据库中两个不同表时, 如果 它们不是一个事务的话,  当第一个表修 改完, 可能第二个表修改过程中出现了异常而没能修改, 此时就只有第二个表依 旧是未修改之前的状态, 而第一个表已经被修改完毕。 而当你把它们设定为一个事务的时候,  当第一个表修改完, 第二表修改出现异常而没能修改, 第一个表和 第二个表都要回到未修改的状态, 这就是所谓的事务回滚

39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?

SQL 语言 包括数据定义(DDL)、数据 操纵 (DML),数据 控制 (DCL)和数 据查 询 (DQL)  四个 部分。

数据定义: Create Table,Alter Table,Drop Table, Craete/Drop Index 等

数据操纵:  Select ,insert,update,delete,

数据控制: grant,revoke

数据查询:  select

40、完整性约束包括哪些?

数据完整性(Data Integrity)是指 数据 的精 确 (Accuracy)和可 靠性 (Reliability)。

分为以下四类:

1、实 体完 整性 :  规 定表 的每一行在表中是惟一的实体。

2 、域完 整性 :  是指表中的列必须满足某种特定的数据类型约束, 其中约束又包括 取值范围 、精度等规定。

3 、参照 完整 性 :  是指两个表的主关键字和外关键字的数据应一致, 保证了表之间 的数据的一致性,  防止了数据丢失或无意义的数据在数据库中扩散。

4 、用 户 定 义 的 完 整 性 :  不 同 的 关 系 数 据 库 系 统 根 据 其 应 用 环 境 的 不 同 ,  往 往 还 需 要 一些特殊的约束条件。 用户定义的完整性即是针对某个特定关系数据库的约束  条 件,  它反映某一具体应用必须满足的语义要求。

与表有关的约束:包括列约束(NOT NULL  (非 空 约 束 )  )和 表 约 束 (PRIMARY KEY、 foreign key 、  check 、   UNIQUE)  。

41、什么是锁?

数据库是一个多用户使用的共享资源。  当多个用户并发地存取数据时, 在数 据 库中就会产生多个事务同时存取同一数据的情况。 若对并发操作不加控制就可 能 会读取和存储不正确的数据, 破坏数据库的一致性。

加锁 是实现数据库并发控制的一个非常重要的技术。  当事务在对某个数据对象进 行 操作前, 先向系统发出请求, 对其加锁。 加锁后事务就对该数据对象有了一定 的控制, 在该事务释放锁之前, 其他的事务不能对此数据对象进行更新操作。

基本锁类型: 锁包括行级锁和表级锁

42、什么叫视图?游标是什么?

视图是一种虚拟的表, 具有和物理表相同的功能。 可以对视图进行增, 改, 查 , 操作, 视图通常是有一个表或者多个表的行或列的子集。 对视图的修改不影 响 基本表。  它使得我们获取数据更容易, 相比多表查询。

游标 : 是对查询出来的结果集作为一个单元来有效的处理。 游标可以定在该单元 中的 特定行, 从结果集的当前行检索一行或多行。 可以对结果集当前行做修改。 一般不使用游标, 但是需要逐条处理数据的时候, 游标显得十分重要。

43、什么是存储过程?用什么来调用?

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

44、如何通俗地理解三个范式?

第一范式:1NF 是对 属性 的原 子性 约束 ,  要求 属性 具有 原子 性 ,  不可 再分 解 ;

第二范式:2NF 是对 记录 的惟 一性 约束 ,  要求 记录 有惟 一标 识 ,  即实 体的 惟一 性 ;

第三范式:3NF 是对 字段冗余性的约束,  即任何字段不能由其他字段派生出来, 它要求字段没有冗余。  。

范式化设计优缺点:

优点:

可以尽量得减少数据冗余, 使得更新快,  体积小

缺点:对于 查询需要多个表进行关联, 减少写得效率增加读得效率, 更难进行索引优化

反范 化:

优点:可以 减少表得关联,可以更好得进行索引优化

缺点:数据冗余以及数据异常, 数据得修改需要更多的成本

45、什么是基本表?什么是视图?

基本表是本身独立存在的表,在 SQL  中一个关系就对应一个表。    视图是从 一个或几个基本表导出的表。视图本身不独立存储在数 据库中, 是一个虚表

46、试述视图的优点?

(1)  视图 能够 简化 用户 的操 作

(2)  视图 使用 户能 以多 种角 度看 待同 一数 据 ;

(3)  视图 为数 据库 提供了一定程度的逻辑独立性;

(4)  视图 能够 对机 密数 据提 供 安全保护。

47、 NULL 是什么意思

NULL 这个值表示UNKNOWN(未知 ):它不 表示  “” (空字 符串 )。对 NULL 这 个值 的任何比较都会生产一个NULL 值。 您不能把任何值与一个 NULL 值进行比 较, 并在逻辑上希望获得一个答案。

使用IS NULL 来进行NULL 判断

48、主键、外键和索引的区别?

定义:

主键– 唯一 标识 一条 记录 , 不能有重复的, 不允许为空

外键– 表的外键是另一表的主键,  外键 可以 有重 复的 ,  可以 是空 值

索引– 该字 段没 有重 复值 ,  但 可以 有一 个空 值

作用:

主键– 用来 保证 数据 完整性

外键– 用来 和其 他表 建立 联系用的

索引– 是提 高查询排序的速度

个数:

主键– 主键只能有一个

外键– 一个 表可 以有 多个外键

索引– 一个表可以有多个唯一索引

49、你可以用什么来确保表格里的字段只接受特定范围里的值?

Check 限制,  它在数据库表格里被定义, 用来限制输入该列的值。

触发器也可以被用来限制数据库表格里的字段能够接受 的值, 但是这种办法要求触发器在表格 里被定义, 这可能会在某些情况下影响到性能。

50、说说对 SQL 语句优化有哪些方法?

1 、  Where 子句中: where 表 之 间 的 连 接 必 须 写 在 其 他 Where 条 件 之 前 ,  那 些 可 以过 滤掉最大数量记录的条件必须写在Where 子 句 的 末 尾 . HAVING 最 后 。

2、 用EXISTS 替代IN、 用NOT EXISTS 替代NOT IN。

3 、     避 免 在 索 引 列 上 使 用 计 算

4、  避免在索引列上使用IS NULL 和IS NOT NULL

5、对 查 询进行优化,应尽量避免全表扫描,首先应考虑在 where  及  order by  涉 及 的列上建立索引。

6、  应 尽量避免在 where  子 句 中 对 字 段 进 行  null  值 判 断 ,  否 则 将 导 致 引 擎 放 弃 使 用索引而进行全表扫描

7 、  应尽量避免在 where  子 句 中 对 字 段 进 行 表 达 式 操 作 ,  这 将 导 致 引 擎 放 弃 使 用 索 引而进行全表扫描