提到MySQL你能想到什么_MySql面试题

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

这个要看Mysql表的类型 我现在知道的有两种,一种是MyISAM,另一种是InnoDB

MYSQL默认的就是InnoDB

InnoDB是把表的主键最大值放到内存里面,所以MYSQL重启之后就会丢失(在WINDOW下,这是MYSQL默认的)

MyISAM是把表的主键最大值放到文件里面,所以MYSQL重启之后不会丢失

所有列都有缺省值

2、mysql的技术特点是什么?

它使用的核心线程是完全多线程,支持多处理器。

它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞

MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API

3、Heap表是什么?

内存表,就是放在内存中的表

内存表的特性

内存表的表定义是存放在磁盘上的,扩展名为.frm, 所以重启不会丢失。

内存表的数据是存放在内存中的,所以重启会丢失数据。

内存表使用一个固定的记录长度格式。

内存表不支持BLOB或TEXT列,比如varchar与text字段就不会被支持。

内存表支持AUTO_INCREMENT列和对可包含NULL值的列的索引(网上大多说不支持,这是错误的)。内存表支持大于(>) 小于( 

mysql重启后,主键、自增、索引仍然存在,只是数据丢失。这也是对网上的一些错误文字纠正。

内存表表在所有客户端之间共享(就像其它任何非TEMPORARY表)。

MEMORY存储引擎执行HASH和BTREE索引。你可以通过添加一个如下所示的USING子句为给定的索引指定一个或另一个:

4、mysql服务器默认端口是什么?

3306(Oracle:1521)

5、与Oracle相比,mysql有什么优势?

中小型数据库,市场占有率高

Mysql有主键自增长,Oracle没有

Mysql占有空间小

6、如何区分FLOAT和DOUBLE?

FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0

7、区分CHAR_LENGTH和LENGTH?

一、char_length(str)

1、返回值为字符串str 的长度,长度的单位为字符,一个多字节字符算作一个单字符

2、不管汉字还是数字或者是字母都算是一个字符

3、任何编码下,多字节字符都算是一个字符

二、length(str)

1、utf8编码下,一个汉字是算三个字符,一个数字或字母算一个字符。

2、其他编码下,一个汉字算两个字符, 一个数字或字母算一个字符。

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

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

read uncommited

read committed

repeatable read

serializable

Read Uncommitted(读取未提交内容)

在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。

Read Committed(读取提交内容)

这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果。

Repeatable Read(可重读)

这是MySQL的默认事务隔离级别,它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)。简单的说,幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control 间隙锁)机制解决了该问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就是它这里所谓的并发控制)才解决了幻读问题。

Serializable(可串行化)

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

对于不同的事务,采用不同的隔离级别分别有不同的结果。不同的隔离级别有不同的现象。主要有下面3种现在:

1、脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据。

2、非重复读(nonrepeatable read):在同一个事务中,同一个查询在T1时间读取某一行,在T2时间重新读取这一行时候,这一行的数据已经发生修改,可能被更新了(update),也可能被删除了(delete)。

3、幻像读(phantom read):在同一事务中,同一查询多次进行时候,由于其他插入操作(insert)的事务提交,导致每次返回不同的结果集。

不同的隔离级别有不同的现象,并有不同的锁定/并发机制,隔离级别越高,数据库的并发性就越差,4种事务隔离级别分别表现的现象如下表:

隔离级别

脏读

非重复读

幻像读

read uncommitted

允许

允许

允许

read committed

允许

允许

repeatable read

允许

serializable

9、在mysql中ENUM的用法是什么?

10、如何定义REGEXP?

应用示例,查找用户表中Email格式错误的用户记录:

SELECT *

FROMusersWHERE email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$'

11、CHAR和VARCHAR的区别?

CHAR的长度是固定的,而VARCHAR2的长度是可以变化的

CHAR的效率比VARCHAR2的效率稍高

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

在SQL中,将字符串类型分为了六类:char,varchar,text,blob,enum和set。

13、如何获取当前的mysql版本?

select version()

14、mysql中使用什么存储引擎?

(1):MyISAM存储引擎:不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表

支持3种不同的存储格式,分别是:静态表;动态表;压缩表

静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多(因为存储时会按照列的宽度定义补足空格)ps:在取数据的时候,默认会把字段后面的空格去掉,如果不注意会把数据本身带的空格也会忽略。

动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能

压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支

(2)InnoDB存储引擎*

该存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比MyISAM引擎,写的处理效率会差一些,并且会占用更多的磁盘空间以保留数据和索引。

InnoDB存储引擎的特点:支持自动增长列,支持外键约束

(3):MEMORY存储引擎

Memory存储引擎使用存在于内存中的内容来创建表。每个memory表只实际对应一个磁盘文件,格式是.frm。memory类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失掉。

MEMORY存储引擎的表可以选择使用BTREE索引或者HASH索引,两种不同类型的索引有其不同的使用范围

Hash索引优点:

Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。

Hash索引缺点: 那么不精确查找呢,也很明显,因为hash算法是基于等值计算的,所以对于“like”等范围查找hash索引无效,不支持;

Memory类型的存储引擎主要用于哪些内容变化不频繁的代码表,或者作为统计操作的中间结果表,便于高效地对中间结果进行分析并得到最终的统计结果,。对存储引擎为memory的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中,所以一定要对下次重新启动服务后如何获得这些修改后的数据有所考虑。

(4)MERGE存储引擎

Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的。

15、mysql驱动程序是什么?

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

在创建新记录的时候把这个字段设置为0,以后修改时刷新它

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

a.超键:在关系模式中,能唯一标识元组的属性集称为超键。

b.候选键 :如果一个属性集能唯一标识元组,且有不包含多余属性,那么这个属性集称为候选键;也即:候选键是没有多余属性的超键。

那么超键可以看作是带有其他有多余属性的候选键,也即候选键带上任意个其他属性可被视为超键。

c.主键:关系模式中用户正在使用的候选键称主键(primary key)。一般,如不加说明,键是指主键。

18、如何使用Unix shell登录mysql?

19、 myisamchk是用来做什么的?

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

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

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

23、federated表是什么?

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

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

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

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

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

29、如何在Unix和mysql时间戳之间进行转换?

30、列对比运算符是什么?

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

32、mysql查询是否区分大小写?

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

34、BLOB和TEXT有什么区别?

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

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

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

38、mysql中有哪些不同的表格?

39、ISAM是什么?

40、InnoDB是什么?

41、mysql如何优化DISTINCT?

42、如何输入字符为十六进制数字?

43、如何显示前50行?

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

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

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

47、mysql表中允许有多少个TRIGGERS?

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

49、什么是通用SQL函数?

50、解释访问控制列表

51、mysql支持事务吗?

52、mysql里记录货币用什么字段类型好?

53、mysql数据表在什么情况下容易损坏?

54、mysql有关权限的表都有哪几个?

55、mysql中有哪几种锁?

人们在日常生活中经常会遇到这样的情况:超市的经营者希望将经常被同时购买的商品放在一起,以增加销售;保险公司想知道购买保险的客户一般具有哪些特征;医学研究人员希望从已有的成千上万份病历中找出患某种疾病的病人的共同特征,从而为治愈这种疾病提供一些帮助……对于以上问题,现有信息管理系统中的数据分析工具无法给出答案。因为无论是查询、统计还是报表,其处理方式都是对指定的数据进行简单的数字处理,而不能对这些数据所包含的内在信息进行提取。随着信息管理系统的广泛应用和数据量激增,人们希望能够提供更高层次的数据分析功能。为此,数据仓库应运而生。   数据仓库的概念及特点   数据仓库概念始于本世纪80年代中期,首次出现是在号称“数据仓库之父”William H.Inmon的《建立数据仓库》一书中。随着人们对大型数据系统研究、管理、维护等方面的深刻识认和不断完善,在总结、丰富、集中多行企业信息的经验之后,为数据仓库给出了更为精确的定义,即“数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合”。   数据仓库并没有严格的数学理论基础,也没有成熟的基本模式,且更偏向于工程,具有强烈的工程性。因此,在技术上人们习惯于从工作过程等方面来分析,并按其关键技术部份分为数据的抽取、存储与管理以及数据的表现等三个基本方面。   ⑴数据的抽取:数据的抽取是数据进入仓库的入口。由于数据仓库是一个独立的数据环境,它需要通过抽取过程将数据从联机事务处理系统、外部数据源、脱机的数据存储介质中导入到数据仓库。数据抽取在技术上主要涉及互连、复制、增量、转换、调度和监控等方面。数据仓库中的数据并不要求与联机事务处理系统保持实时同步,因此数据抽取可以定时进行,但多个抽取操作执行的时间、相互的顺序、成败对数据仓库中信息的有效性则至关重要。   ⑵存储和管理:数据仓库的真正关键是数据的存储和管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。要决定采用什么产品和技术来建立数据仓库的核心,则需要从数据仓库的技术特点着手分析。   ⑶数据的表现:数据表现实际上相当于数据仓库的门面,其性能主要集中在多维分析、数理统计和数据挖掘方面。而多维分析又是数据仓库的重要表现形式,近几年来由于互联网的发展,使得多维分析领域的工具和产品更加注重提供基于Web前端联机分析界面,而不仅仅是在网上发布数据。   提到数据仓库,人们难免会想到仅有一字之差的数据库,那么,数据仓库和我们经常提到的数据库有哪些区别呢?为什么要使用数据仓库呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值