MySQL基础面试题总结

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 ?

MySQL基础面试题总结_第1张图片

2、与Oracle相比,Mysql有什么优势?

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

3、如何区分FLOAT和DOUBLE?

  以下是FLOAT和DOUBLE的区别:
      浮点数以8位精度存储在FLOAT中,并且有四个字节。
      浮点数存储在DOUBLE中,精度为18位,有八个字节。

4、区分CHAR_LENGTH和LENGTH?

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

5、请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

 SQL标准定义的四个隔离级别为:
   read uncommited :读到未提交数据
   read committed:脏读,不可重复读
   repeatable read:可重读
   serializable :串行事物

MySQL基础面试题总结_第2张图片

MySQL基础面试题总结_第3张图片

6、在Mysql中ENUM的用法是什么?

ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。

  Create table size(name ENUM('Smail,'Medium','Large');

7、CHAR和VARCHAR的区别?

以下是CHAR和VARCHAR的区别:
   CHAR和VARCHAR类型在存储和检索方面有所不同
   CHAR列长度固定为创建表时声明的长度,长度值范围是1到255
   当CHAR值被存储时,它们被用空格填充到特定长度,检索CHAR值时需删除尾随空格。

8、列的字符串类型可以是什么?

 字符串类型是:
  SET
  BLOB
  ENUM
  CHAR
  TEXT
  VARCHAR

9、Mysql中使用什么存储引擎?

存储引擎称为表类型,数据使用各种技术存储在文件中。
  技术涉及:
  Storage mechanism
  Locking levels
  Indexing
  Capabilities and functions.

10、Mysql驱动程序是什么?

以下是Mysql中可用的驱动程序:
   PHP驱动程序
   JDBC驱动程序
   ODBC驱动程序
   CWRAPPER
   PYTHON驱动程序
   PERL驱动程序
   RUBY驱动程序
   CAP11PHP驱动程序
   Ado.net5.mxj

11、TIMESTAMP在UPDATE CURRENT_TIMESTAMP数据类型上做什么?

  创建表时TIMESTAMP列用Zero更新。只要表中的其他字段发生更改,UPDATE CURRENT_TIMESTAMP修饰符就将时间戳字段更新为当前时间。

12、主键和候选键有什么区别?

表格的每一行都由主键唯一标识,一个表只有一个主键。

主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

13、 myisamchk是用来做什么的?

 它用来压缩MyISAM表,这减少了磁盘或内存使用。

14、MYSQL数据库服务器性能分析的方法命令有哪些?

 MySQL基础面试题总结_第4张图片

15、如何控制HEAP表的最大尺寸?

Heal表的大小可通过称为max_heap_table_size的Mysql配置变量来控制。

16、MyISAM Static和MyISAM Dynamic有什么区别?

在MyISAM Static上的所有字段有固定宽度。动态MyISAM表将具有像TEXT,BLOB等字段,以适应不同长度的数据类型。点击这里有一套最全阿里面试题总结。

MyISAM Static在受损情况下更容易恢复。

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

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

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

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

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

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

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

索引是通过以下方式为表格定义的:

SHOW INDEX FROM ;

21、LIKE声明中的%和_是什么意思?

%对应于0个或更多字符,_只是LIKE语句中的一个字符。

22、如何在Unix和Mysql时间戳之间进行转换?

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

23、我们如何得到受查询影响的行数?

行数可以通过以下代码获得:

SELECT COUNT(user_id)FROM users;

24、Mysql查询是否区分大小写?

不区分

SELECT VERSION(), CURRENT_DATE;

SeLect version(), current_date;

seleCt vErSiOn(), current_DATE;

所有这些例子都是一样的,Mysql不区分大小写。

25、LIKE和REGEXP操作有什么区别?

LIKE和REGEXP运算符用于表示^和%。
  1.SELECT * FROM employee WHERE emp_name REGEXP "^b";
  2.SELECT * FROM employee WHERE emp_name LIKE "%b";

26、BLOB和TEXT有什么区别?

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

      TINYBLOB

      BLOB

      MEDIUMBLOB和

      LONGBLOB

它们只能在所能容纳价值的最大长度上有所不同。

TEXT是一个不区分大小写的BLOB。四种TEXT类型

    TINYTEXT

    TEXT

    MEDIUMTEXT和

    LONGTEXT

它们对应于四种BLOB类型,并具有相同的最大长度和存储要求。

BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

27、mysql_fetch_array和mysql_fetch_object的区别是什么?

以下是mysql_fetch_array和mysql_fetch_object的区别:

mysql_fetch_array() - 将结果行作为关联数组或来自数据库的常规数组返回。

mysql_fetch_object - 从数据库返回结果行作为对象。

28、我们如何在mysql中运行批处理模式?

以下命令用于在批处理模式下运行:

mysql;

mysql mysql.out

29、MyISAM表格将在哪里存储,并且还提供其存储格式?

每个MyISAM表格以三种格式存储在磁盘上:

·“.frm”文件存储表定义

·数据文件具有“.MYD”(MYData)扩展名

索引文件具有“.MYI”(MYIndex)扩展名

30、Mysql中有哪些不同的表格?

共有5种类型的表格:

   MyISAM

   Heap

   Merge

   INNODB

   ISAM

MyISAM是Mysql的默认存储引擎。

31、ISAM是什么?

ISAM简称为索引顺序访问方法。它是由IBM开发的,用于在磁带等辅助存储系统上存储和检索数据。

32、Mysql如何优化DISTINCT?

DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;

33、如何显示前50行?

在Mysql中,使用以下代码查询显示前50行:

SELECT*FROM

LIMIT 0,50;

34、可以使用多少列创建索引?

任何标准表最多可以创建16个索引列。

35、NOW()和CURRENT_DATE()有什么区别?

NOW()  命令用于显示当前年份,月份,日期,小时,分钟和秒。

CURRENT_DATE()  仅显示当前年份,月份和日期。

36、什么样的对象可以使用CREATE语句创建?

以下对象是使用CREATE语句创建的:

   DATABASE

   EVENT

   FUNCTION

   INDEX

   PROCEDURE

   TABLE

   TRIGGER

   USER

   VIEW

37、Mysql表中允许有多少个TRIGGERS?

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

   BEFORE INSERT

   AFTER INSERT

   BEFORE UPDATE

   AFTER UPDATE

   BEFORE DELETE

   AFTER DELETE

38、什么是非标准字符串类型?

以下是非标准字符串类型:

   TINYTEXT

   TEXT

   MEDIUMTEXT

   LONGTEXT

39、什么是通用SQL函数?

   CONCAT(A, B) - 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。

   FORMAT(X, D)- 格式化数字X到D有效数字。

   CURRDATE(), CURRTIME()- 返回当前日期或时间。

   NOW() - 将当前日期和时间作为一个值返回。

   MONTH(),DAY(),YEAR(),WEEK(),WEEKDAY() - 从日期值中提取给定数据。

   HOUR(),MINUTE(),SECOND() - 从时间值中提取给定数据。

   DATEDIFF(A,B) - 确定两个日期之间的差异,通常用于计算年龄

   SUBTIMES(A,B) - 确定两次之间的差异。

   FROMDAYS(INT) - 将整数天数转换为日期值。

40、MYSQL支持事务吗?

在缺省模式下,MYSQL是autocommit模式的,所有的数据库更新操作都会即时提交,所以在缺省情况下,mysql是不支持事务的。

但是如果你的MYSQL表类型是使用InnoDB Tables 或 BDB tables的话,你的MYSQL就可以使用事务处理,使用SET AUTOCOMMIT=0就可以使MYSQL允许在非autocommit模式,在非autocommit模式下,你必须使用COMMIT来提交你的更改,或者用ROLLBACK来回滚你的更改。

示例如下:

START TRANSACTION;

SELECT @A:=SUM(salary) FROM table1 WHERE type=1;

UPDATE table2 SET summmary=@A WHERE type=1;

COMMIT;

41、MYSQL数据表在什么情况下容易损坏?

服务器突然断电导致数据文件损坏。

强制关机,没有先关闭mysql 服务等。

42、Mysql中有哪几种锁?

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

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

   行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高

你可能感兴趣的:(数据库)