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

MySQL常见面试题解析相关推荐

  1. 100道MySQL数据库面试题解析

    1. MySQL索引使用有哪些注意事项呢? 可以从三个维度回答这个问题:索引哪些情况会失效,索引不适合哪些场景,索引规则 索引哪些情况会失效 查询条件包含or,可能导致索引失效如何字段类型是字符串,w ...

  2. 专栏丨MySQL 高频面试题解析

    推荐墨天轮专栏<MySQL 高频面试题解析>,共8篇文章,前4篇由墨天轮用户 无为 完成,后4篇由墨天轮用户 马听 完成,文稿互相审核.总结了两位作者在这些年自己或者朋友遇到过的高频面试题 ...

  3. c# 多线程 执行事件 并发_C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础...

    前言: 因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础. 网上已 ...

  4. C#.NET Thread多线程并发编程学习与常见面试题解析-1、Thread使用与控制基础

    前言: 因为平时挺少用到多线程的,写游戏时都在用协程,至于协程那是另一个话题了,除了第一次学习多线程时和以前某个小项目有过就挺少有接触了,最近准备面试又怕被问的深入,所以就赶紧补补多线程基础. 网上已 ...

  5. mysql查找表中员工姓名性别_SQL 常见面试题解析

    内容简介 本文介绍并分析了 100 道常见 SQL 面试题,主要分为三个模块:SQL 初级查询.SQL 高级查询以及数据库设计与开发.文章内容结构如下图所示: 本文主要使用三个示例表:员工表(empl ...

  6. 【搞定Jvm面试】 Java 内存区域揭秘附常见面试题解析

    本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb ([Java学习 面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错 ...

  7. 【搞定Jvm面试】 JVM 垃圾回收揭秘附常见面试题解析

    JVM 垃圾回收 写在前面 本节常见面试题 问题答案在文中都有提到 如何判断对象是否死亡(两种方法). 简单的介绍一下强引用.软引用.弱引用.虚引用(虚引用与软引用和弱引用的区别.使用软引用能带来的好 ...

  8. java线程工作内存在栈中吗_JVM常见面试题解析

    前言 总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新. 1.什么情况下会发生栈内存溢出. 思路: 描述栈定义,再描述为什么会溢出 ...

  9. 浅析HashMap,何时树化?常见面试题解析

    首先来看下HashMap的类描述 /*** Hash table based implementation of the <tt>Map</tt> interface. Thi ...

最新文章

  1. asp.net 按钮单击事件问题(自动弹出新窗口)
  2. 【spring boot】新建项目,实现HelloWorld
  3. IOS笔记 本地化多语言支持
  4. 中缀表达式转后缀表达式两位数_再见,正则表达式!
  5. 硬,软连接,以及在windows中的用法
  6. Configuration Manager 2012 R2系统需求
  7. 内控堡垒机:内网安全威胁的“终结者”
  8. 程序设计流程图、项目管理流程图模板分享
  9. 牛客 赛码网 编程题JavaScript的输入输出
  10. STM8L 库下载地址
  11. 大数据分析“平民化”演进精准营销
  12. 项目中git的运用及命令明细
  13. 空间中直线与直线之间的位置关系
  14. 智禾教育:淘宝店铺的常见类型有哪些,智禾为你分享介绍
  15. 小米android手机怎么刷机,刷机如此简单 小米手机四种刷机方法
  16. 万由u-nas系统用上Let’s Encrypt 免费Https安全证书
  17. Http/Https代理Python实现
  18. 第3集丨通往圣贤之路
  19. Kibana的安装与使用
  20. springboot高校学术交流论坛平台 java校园论坛交流网站

热门文章

  1. HDLBits 系列(34)Serial two's complememter(Mealy and Moore FSM)
  2. Vivado中如何避免信号被优化掉?
  3. 【Indiegogo众筹】$99高性价比RK3399超小型mini主机
  4. mysql解决Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
  5. ADS1.2安装教程
  6. linkin大话面向对象--多态
  7. 纠结的Python2.7编码与os.walk()函数的目录参数
  8. CCNA配置试验之三 EIGRP协议的配置
  9. 英文论文-word summary
  10. 3.5.3 CSMA协议