zoukankan      html  css  js  c++  java
  • MySQL问答整理

    1.Mysql中有哪些不同的表格?

    • MyISAM: 基于IASM代码、可以被压缩,支持全文搜索,事务不安全,而且也不支持外键。如果事务回滚将会造成不完全回滚,从而不具备原子性。所以假如忽略事务以及访问并发性的话,并且需要执行大量的SELECT检索语句的话,MyISAM将是最好的选择
    • Heap:是MySQL中存取数据最快的表。这是因为他们使用存储在动态内存中的一个散列索引,不过如果MySQL或服务器崩溃,这些内存数据将会丢失
    • Merge:实际上是又一个MyISAM表的集合,合并而成的一个表,主要是为了效率的考虑,不仅仅可以提高速度、搜索效率、修复效率而且还节省了磁盘空间。
    • InnoDB:事务安全、支持外键。如果需要一个事务安全的存储引擎,建议使用它。如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,同样应该使用InnoDB表。对于支持事务的InnoDB类型的表来说,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN开始事务,导致每插入一条都自动提交,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能
    • ISAM:简称为索引顺序访问方法,由IBM开发的,用于在磁带等辅助存储系统上存储和检索数据

    2.自增ID

    一张ID主键自增的表,当insert了10条记录之后,删除了第8、9、10条记录,再把Mysql重启,再insert一条记录,这条记录的ID是11还是8 

    如表类型是MyISAM:11。因其把自增主键ID记录到文件中,重启ID不会丢失。

    如表类型是InnoDB:8。。因其把自增主键ID记录到内存中,重启会导致丢失。

    3.Heap特点

    • 不允许**BLOB或**TEXT字段
    • 只允许使用=和<=>操作符来搜索记录(不允许<、>、<=或>=)
    • HEAP表不支持AUTO_INCREMENT
    • 索引不可为NULL

    4.如何控制Heap的最大值

    设置max_heap_table_size

    5.MyISAM Static和MyISAM Dynamic区别

    在MyISAM Static上的所有字段有固定宽度。动态MyISAM表将具有像TEXT,BLOB等字段,以适应不同长度的数据类型。
    MyISAM Static在受损情况下更容易恢复。

    6.BLOB和TEXT区别

    BLOB是一个二进制对象,可以容纳可变数量的数据。有四种类型的BLOB:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB

    它们只能在所能容纳价值的最大长度上有所不同。
    TEXT是一个不区分大小写的BLOB。四种TEXT类型:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

    它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。
    BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

    7.Mysql中有哪几种锁

    • 表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
    • 行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高

    MyISAM支持表锁,InnoDB支持表锁和行锁,默认为行锁

    8.NOW()和CURRENT_DATE()有什么区别?

    9.Mysql查询是否区分大小写?

    不区分

    10. 在Mysql中ENUM的用法?

    CREATE TABLE test4 (  
         id BIGINT UNSIGNED  PRIMARY KEY AUTO_INCREMENT,  
         brand VARCHAR(255) NOT NULL,  
         color ENUM('RED','GREEN','BLUE')
      ) ENGINE = InnoDB; 

    11.MySQL优势?

    • Mysql是开源软件,随时可用,无需付费。
    • Mysql是便携式的
    • 带有命令提示符的GUI。
    • 使用Mysql查询浏览器支持管理

    12.如何区分FLOAT和DOUBLE

    • 浮点数以8位精度存储在FLOAT中,并且有四个字节。
    • 浮点数存储在DOUBLE中,精度为18位,有八个字节。

    13.区分CHAR_LENGTH和LENGTH?

    CHAR_LENGTH是字符数,而LENGTH是字节数。Latin字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。

    14.InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别

    • read uncommited :读到未提交数据
    • read committed:脏读,不可重复读
    • repeatable read:可重读(默认)
    • serializable :串行事物

    脏读 :一个事务读取到另一事务未提交的更新数据 不可重复读 : 在同一事务中,多次读取同一数据返回的结果有所不同, 换句话说, 后续读取可以读到另一事务已提交的更新数据. 相反, “可重复读”在同一事务中多次读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据。

    幻读 :一个事务读到另一个事务已提交的insert数据 

    15.列的字符串类型

    • SET
    • BLOB
    • ENUM
    • CHAR
    • TEXT
    • VARCHAR

    16.federated表是什么?

    允许访问位于其他服务器数据库上的表。

    17.如果一个表有一列定义为TIMESTAMP,将发生什么?

    每当行被更改时,时间戳字段将获取当前时间戳。

    18.列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

    停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

    19.怎样才能找出最后一次插入时分配了哪个自动增量?

    LAST_INSERT_ID()将返回由Auto_increment分配的最后一个值,并且不需要指定表名称

    20.怎么看到为表格定义的所有索引?

    SHOW INDEX FROM <tablename>;

    21.如何在Unix和Mysql时间戳之间进行转换

    • UNIX_TIMESTAMP是从Mysql时间戳转换为Unix时间戳的命令
    • FROM_UNIXTIME是从Unix时间戳转换为Mysql时间戳的命令

    举例:

    select UNIX_TIMESTAMP('2018-09-22 17:43:16') /* 1537609396 */
    select FROM_UNIXTIME(1537609396)             /*2018-09-22 17:43:16 */

    22.如何在mysql中运行批处理模式

    把你想要运行的命令放在一个文件中,然后告诉mysql从文件读取它的输入

    shell> mysql < batch-file

    23.Mysql表中允许有多少个TRIGGERS?

    在Mysql表中允许有六个触发器,如下:

    • BEFORE INSERT
    • AFTER INSERT
    • BEFORE UPDATE
    • AFTER UPDATE
    • BEFORE DELETE
    • AFTER DELETE

    24.MYSQL支持事务吗?

    • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
    • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
    • 事务用来管理 insert,update,delete 语句

    25.MYSQL数据表在什么情况下容易损坏

    服务器突然断电导致数据文件损坏。
    强制关机,没有先关闭mysql 服务等。

    26.mysql有关权限的表都有哪几个

    Mysql服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库里,由mysql_install_db脚本初始化。这些权限表分别user,db,table_priv,columns_priv和host。

    参考

    https://zhuanlan.zhihu.com/p/44627083

  • 相关阅读:
    初级知识点四——设计模式六大原则
    初级知识点三——面向对象的三大特性
    初级知识点二——C#值传递
    初级知识点一——C#中的值类型与引用类型
    Unity资源引用问题
    Git在windows上的设置详解
    Unity中接收服务器消息并广播事件的实现
    Sphinx 自动化文档
    MAC Pro 同时安装 Python2 和 Python3
    数据中心网络架构演进 — 云网融合
  • 原文地址:https://www.cnblogs.com/kaituorensheng/p/9690298.html
Copyright © 2011-2022 走看看