Mysql系列常见面试题

Posted dayandday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql系列常见面试题相关的知识,希望对你有一定的参考价值。

1.如何区分FLOAT和DOUBLE?

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

2.怎么.区分CHAR_LENGTH和LENTH?

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

3.请简介描述mysql和InnoDB支持的四种事物隔离级别名称,以及逐级之间的区别?

SQL标准定义的四个隔离级别为:

read uncommited:读到未提交数据

read commited 脏读,不可重复读

repeatable read:可重复读

serializable :串行事物

4.在Mysql中ENUM的用法是什么?

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

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

5.如何定义REGEXP?

REGEXP是模式匹配,其中匹配模式在搜索值的任何位置。

6.CHAR和VARCHAR的区别?

一下是CHAR和VARCHAR的区别:

CHAR和VARCHAR类型在存储和检索方面有所不同,

CHAR列长度固定为创建表时声明的长度,长度值范围是1-255

当CHAR值被存储时,他们被用空格填充到特定长度,检索char值是需要删除尾随空格。

7.列的字符串类型可以是什么?

字符串类型是:

SET,BLOB,ENUM,CHAR,TEXT,VARCHAR

8.如何获取当前的Mysql版本?

Select VERSION();用于获取当前Mysql的版本。

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.如何使用Unix shell 登陆Mysql?

我们可以通过以下命令登陆:

[mysql dir]/bin/mysql -h hostname -u

14.myisamchk是用来做什么的?

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

15.Mysql数据库服务器性能分析的方法命令有哪些?

:https://www.cnblogs.com/jackchen001/p/6964411.html  (博客详解)

16.如何控制HEAP表的最大尺寸?

:Heap表的大小可以通过称为max_heap_table_size的Msql配置变量来控制。

17.MyISAM Static 和MyISAM Dynamic有什么区别?

在MyISAM Static上的所有字段有固定宽带、动态MyISAM表将具有像TEXT,BLOB等字段,

以适应不同长度的数据类型。MyISAM Static 在受损情况下更容易恢复。 

18.federated表是什么?

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

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

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

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

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

21.怎样才能找出最好一次插入时分配了那字自动递增量?

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

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

:索引是通过以下方式为表定义的:SHOW INDEX FROM

23.LIKE声明中的%和_是什么意思?

:%对应于0个或者多个字符,_值是like语句中的一个字符。

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

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

FROM_UNIXTIME是从unix时间戳转换为Mysql时间戳的命令。

25.;列对比运算符是什么?

:在 SELECT 语句的列比较中使用=<><=<> =><<>><=>ANDOR LIKE
算符。

 

26.我们如何得到受查询影响的行数?
行数可以通过以下代码获得:

select count(user_id)from users;

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

不区分

SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;
所有这些例子都是一样的, Mysql 不区分大小写。
28.LIKE和REGEXP操作有什么区别?
Like和REGEXP操作用于表示^和%。

SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
29.BLOB和TEXT有什么区别?

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

BLOB-TINYBLOB   BLOB MEDIUMBLOB和LONGBLOB

它们总股本部分在所能容纳价值的最大长度上有所不同。

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

TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
它们对应于四种 BLOB 类型,并具有相同的最大长度和存储要求。
BLOB TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写,对 TEXT
值不区分大小写。
30.我们如何在mysql中运行批处理模式?

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

Msql;Msql Mysql.out

31.MyISAM表格将在哪里存储,并且还提高其存储格式?

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

 “.frm”文件存储表定义,数据文件具有“.MYD”(MYData)扩展名,索引文件具有“.MYI”(MYIndex)扩展名

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

共有5种类型的表格:

MyISAM Heap Merge INNODB,ISAM,MyISAM是默认存储引擎。

33.ISAM是什么?

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

34.InnoDB是什么?

InnoDB是一个由Oracle公司开发的Innobase Oy事物安全存储引擎。

35.Mysql如何优化DISTINCT?

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

SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
36.如何输入字符为十六进制数据?

:如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数据和前缀(X),或者只有(Ox)前缀输入十六

进制数字。

如果表达式上下文是字符串,则十六进制数据串将自动转换为字符串。

37.如何显示前50行?

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

select * from limit 0,50;

38.可以使用多少列创建索引?

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

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

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

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

40.什么样的对象是使用CREATE语句创建的:

DATABASE-(数据库),EVENT-(事物),FUNCTION-(函数),INDEX(索引),

PROCEDURE-(存储过程),TABLE(表) TRIGGER(触发器),

USER(用户),VIEW-(视图)

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

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

BEFORE INSERT
AFTER INSERT
BEFORE UPDATE
AFTER UPDATE
BEFORE DELETE
AFTER DELETE
42.什么是非标标准字符串类型?

TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT

43.什么是通用SQL函数?

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

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

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

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

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

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

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

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

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

44.解释访问控制列表

ACL(访问控制列表) 是与对象关联的权限列表。这个列表是Mysql服务器安全模型的基础,它有助于排除童虎无法连接的问题。

Mysql将ACL(也称授权表)缓存在内存中,当用户尝试认证或运行命令时,Mysql会按照预定的顺序检查ACL的认证信息和权限。

45.Mysql支持事物吗?

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

但是如果你的Mysql表类型是使用InnoDB Tables或 BDB tables的话,你的Mysql就可以使用事物出来,使用SET AUTOCOMMIT=0就可以使用Mysql允许在非autocommit模式,在非自动提交模式下,你必须使用Commit来提交你的更改,或者使用ROLLBACK来回滚你得更改。

实例:START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET [email protected] WHERE type=1;
COMMIT;
46.mysql 里记录货币用什么字段类型好

NUMERIC DECIMAL 类型被 Mysql 实现为同样的类型,这在 SQL92 标准允许。他们被用于
保存值,该值的准确精度是极其重要的值,例如与金钱有关的数据。当声明一个类是这些
类型之一时,精度和规模的能被(并且通常是)指定;点击这里有一套最全阿里面试题总
结。
例如:
salary DECIMAL(9,2)
在这个例子中, 9(precision)代表将被用于存储值的总的小数位数,而 2(scale)代表将被用于
存储小数点后的位数。
因此,在这种情况下,能被存储在 salary 列中的值的范围是从-9999999.99 9999999.99
ANSI/ISO SQL92 中,句法 DECIMAL(p)等价于 DECIMAL(p,0)
同样,句法 DECIMAL 等价于 DECIMAL(p,0),这里实现被允许决定值 pMysql 当前不支持
DECIMAL/NUMERIC 数据类型的这些变种形式的任一种。
这一般说来不是一个严重的问题,因为这些类型的主要益处得自于明显地控制精度和规模
的能力。
DECIMAL NUMERIC 值作为字符串存储,而不是作为二进制浮点数,以便保存那些值的小
数精度。
一个字符用于值的每一位、小数点(如果 scale>0)和“-”符号(对于负值)。如果 scale 0
DECIMAL NUMERIC 值不包含小数点或小数部分。
DECIMAL NUMERIC 值得最大的范围与 DOUBLE 一样,但是对于一个给定的 DECIMAL
NUMERIC 列,实际的范围可由制由给定列的 precision scale 限制。
当这样的列赋给了小数点后面的位超过指定 scale 所允许的位的值,该值根据 scale 四舍五
入。
当一个 DECIMAL NUMERIC 列被赋给了其大小超过指定(或缺省的) precision scale 隐含
的范围的值, Mysql 存储表示那个范围的相应的端点值。
我希望本文可以帮助你提升技术水平。那些,感觉学的好难,甚至会令你沮丧的人,别担
心,我认为,如果你愿意试一试本文介绍的几点,会向前迈进,克服这种感觉。这些要点
也许对你不适用,但你会明确一个重要的道理:接受自己觉得受困这个事实是摆脱这个困
境的第一步。

 

以上是关于Mysql系列常见面试题的主要内容,如果未能解决你的问题,请参考以下文章

面试题Java基础篇-常见面试题总结p3

Dubbo系列-Dubbo常见面试题

MySQL常见面试题

Mysql五连问的常见面试题

mysql常见面试题

mysql常见面试题