乐趣区

关于mysql:面试必问10-道经典-MySQL-面试题

1.drop,delete 与 truncate 的区别

相同点:

truncate 和不带 where 子句的 delete, 以及 drop 都会删除表内的数据

不同点:
  • truncate 会革除表数据并重置 id 从 1 开始,delete 就只删除记录,drop 能够用来删除表或数据库并且将表所占用的空间全副开释
  • truncate 和 delete 只删除数据不删除表的构造。drop 语句将删除表的构造被依赖的约(constrain), 触发器(trigger), 依赖于该表的存储过程 / 函数将保留, 然而变为 invalid 状态。
  • 速度上一般来说: drop> truncate > delete
  • 应用上, 想删除局部数据行用 delete,想删除表用 drop, 想保留表而将所有数据删除,如果和事务无关,用 truncate 即可。如果和事务无关, 或者想触发 trigger, 还是用 delete。
  • delete 是 DML 语句, 不会主动提交。drop/truncate 都是 DDL 语句, 执行后会主动提交。

2.mysql 里记录货币用什么字段类型好

NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型,这在 SQL92 规范容许。他们被用于保留值,该值的精确精度是极其重要的值,例如与金钱无关的数据。

DECIMAL 和 NUMERIC 值作为字符串存储,而不是作为二进制浮点数,以便保留那些值的小数精度。

3.MySQL 中 myisam 与 innodb 的区别

  • InnoDB 反对事务,而 MyISAM 不反对事务
  • InnoDB 反对行级锁,而 MyISAM 反对表级锁
  • InnoDB 反对 MVCC, 而 MyISAM 不反对
  • InnoDB 反对外键,而 MyISAM 不反对
  • InnoDB 不反对全文索引,而 MyISAM 反对。
  • InnoDB 不能通过间接拷贝表文件的办法拷贝表到另外一台机器,myisam 反对
  • InnoDB 表反对多种行格局,myisam 不反对
  • InnoDB 是索引组织表,myisam 是堆表

4. 事务的四个个性及含意

数据库事务 transanction 正确执行的四个基本要素:ACID, 原子性(Atomicity)、一致性(Correspondence)、隔离性(Isolation)、持久性(Durability)。

原子性: 整个事务中的所有操作,要么全副实现,要么全副不实现,不可能停滞在两头某个环节。事务在执行过程中产生谬误,会被回滚(Rollback)到事务开始前的状态,就像这个事务素来没有执行过一样。

一致性: 在事务开始之前和事务完结当前,数据库的完整性束缚没有被毁坏。

隔离性: 隔离状态执行事务,使它们如同是零碎在给定工夫内执行的惟一操作。如果有两个事务,运行在雷同的工夫内,执行 雷同的性能,事务的隔离性将确保每一事务在零碎中认为只有该事务在应用零碎。这种属性有时称为串行化,为了避免事务操作间的混同,必须串行化或序列化请 求,使得在同一时间仅有一个申请用于同一数据。

持久性: 在事务实现当前,该事务所对数据库所作的更改便长久的保留在数据库之中,并不会被回滚。

5.MYSQL 相比于其余数据库有哪些特点?

MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司,当初曾经被 Sun 公司收买,反对 FreeBSD、Linux、MAC、Windows 等多种操作系统与其余的大型数据库例如 Oracle、DB2、SQL Server 等相比性能稍弱一些。其特点有:

  • 能够解决领有上千万条记录的大型数据;
  • 反对常见的 SQL 语句标准;
  • 可移植行高,安装简单玲珑;
  • 良好的运行效率,有丰盛信息的网络反对;
  • 调试、治理,优化简略(绝对其余大型数据库)。

6. 视图的作用,视图能够更改么?

视图是虚构的表,与蕴含数据的表不一样,视图只蕴含应用时动静检索数据的查问; 不蕴含任何列或数据。应用视图能够简化简单的 sql 操作,暗藏具体的细节,爱护数据; 视图创立后,能够应用与表雷同的形式利用它们。

视图不能被索引,也不能有关联的触发器或默认值,如果视图自身内有 order by 则对视图再次 order by 将被笼罩。

7. 存储过程与触发器的区别

触发器与存储过程十分类似,触发器也是 SQL 语句集,两者惟一的区别是触发器不能用 EXECUTE 语句调用,而是在用户执行 Transact-SQL 语句时主动触发 (激活) 执行。

触发器是在一个批改了指定表中的数据时执行的存储过程。通常通过创立触发器来强制实现不同表中的逻辑相干数据的援用完整性和一致性。因为用户不能绕过触发器,所以能够用它来强制施行简单的业务规定,以确保数据的完整性。

触发器不同于存储过程,触发器次要是通过事件执行触发而被执行的,而存储过程能够通过存储过程名称名字而间接调用。当对某一表进行诸如 UPDATE、INSERT、DELETE 这些操作时,SQLSERVER 就会主动执行触发器所定义的 SQL 语句,从而确保对数据的解决必须合乎这些 SQL 语句所定义的规定。

8. 索引的作用?和它的长处毛病是什么?

索引就是一种非凡的查问表,数据库的搜索引擎能够利用它减速对数据的检索。它很相似与现实生活中书的目录,不须要查问整本书内容就能够找到想要的数据。

索引能够是惟一的,创立索引容许指定单个列或者是多个列。毛病是它减慢了数据录入的速度,同时也减少了数据库的尺寸大小。

9.union 与 union all 的区别

union 在进行表连贯后会筛选掉反复的记录,所以在表连贯后会对所产生的后果集进行排序运算,删除反复的记录再返回后果。union all 则会显示反复后果, 只是简略的两个后果合并并返回. 所以效率比 union 高, 在保障没有反复数据的状况下用 union all.

10. SQL 语言包含哪几局部?每局部都有哪些操作关键字?

SQL 语言包含数据定义 (DDL)、数据操纵(DML), 数据管制(DCL) 和数据查问(DQL)四个局部。

  • 数据定义:Create Table,Alter Table,Drop Table, Craete/Drop Index 等
  • 数据操纵:Select ,insert,update,delete,
  • 数据管制:grant,revoke
  • 数据查问:select

起源:blog.csdn.net/Black1499/article/details/84945702

退出移动版