面试-MySQL
1 事务的特性
事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性也简称ACID性。
(1)原子性:事务是应用中最小的运行单位,就如原子是自然界最小颗粒。具有不可再分的特征一样。事务是应用中不可再分的最小逻辑运行体。
(2)一致性:事务运行的结果。必须使数据库从一个一致性状态。变到还有一个一致性状态。当数据库中仅仅包括事务成功提交的结果时,数据库处于一致性状态。一致性是通过原子性来保证的。
(3)隔离性:各个事务的运行互不干扰,随意一个事务的内部操作对其它并发的事务,都是隔离的。
也就是说:并发运行的事务之间不能看到对方的中间状态。并发运行的事务之间不能相互影响。
(4)持久性:指事务一旦提交,对数据所做的不论什么改变,都要记录到永久存储器中,一般是保存进物理数据库。
2 MySQL存储引擎
|
特点 |
Myisam |
BDB |
Memory |
InnoDB |
Archive |
|
存储限制 |
没有 |
没有 |
有 |
64TB |
没有 |
|
事务安全 |
|
支持 |
|
支持 |
|
|
锁机制 |
表锁 |
页锁 |
表锁 |
行锁 |
行锁 |
|
B树索引 |
支持 |
支持 |
支持 |
支持 |
|
|
哈希索引 |
|
|
支持 |
支持 |
|
|
全文索引 |
支持 |
|
|
|
|
|
集群索引 |
|
|
|
支持 |
|
|
数据缓存 |
|
|
支持 |
支持 |
|
|
索引缓存 |
支持 |
|
支持 |
支持 |
|
|
数据可压缩 |
支持 |
|
|
|
支持 |
|
空间使用 |
低 |
低 |
N/A |
高 |
很低 |
|
内存使用 |
低 |
低 |
中等 |
高 |
低 |
|
批量插入的速度 |
高 |
高 |
高 |
低 |
很高 |
|
支持外键 |
|
|
|
支持 |
|
Myisam:每一个MyISAM在磁盘上存储成三个文件。
文件名称都和表名同样。扩展名各自是.frm(存储表定义)、.MYD(MYData。存储数据)、.MYI(MYIndex。存储索引)。
数据文件和索引文件能够放置在不同的文件夹,平均分布io,获得更快的速度。最常使用的2种存储引擎:
InnoDB:是Mysql的默认存储引擎。
当create创建新表时,未指定新表的存储引擎时,默认使用InnoDB。
存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。可是对照Myisam的存储引擎。InnoDB写的处理效率差一些而且会占用很多其它的磁盘空间以保留数据和索引。
3 选择合适的MySQL存储引擎
选择标准:依据应用特点选择合适的存储引擎,对于复杂的应用系统能够依据实际情况选择多种存储引擎进行组合。
以下是经常使用存储引擎的适用环境:
MyISAM:在Web、数据仓储和其它应用环境下最常使用的存储引擎之中的一个。
InnoDB:默认的MySQL插件式存储引擎,用于事务处理应用程序,具有众多特性,包含ACID事务支持。
Memory:将全部数据保存在RAM中,在须要高速查找引用和其它类似数据的环境下,可提供极快的訪问。
Merge:同意MySQLDBA或开发者将一系列等同的MyISAM表以逻辑方式组合在一起。并作为1个对象引用它们。对于诸如数据仓储等VLDB环境十分适合。
4 MySQL特点
与其它数据库Oracle、DB2、SQL Server等相比功能稍弱一些
1、能够处理拥有上千万条记录的大型数据。
2、支持常见的SQL语句规范 。
3、可移植行高。安装简单小巧 ;
4、良好的执行效率。有丰富信息的网络支持。
5、调试、管理。优化简单(相对其它大型数据库)。
5 MySQL支持的数据类型
数值型:
日期时间类型:
字符串类型:
空间数据类型:
6 MySQL内置函数
数学函数
BIN(x):返回x的二进制(OCT返回八进制,HEX返回十六进制)
FLOOR(x):返回小于x的最大整数值
ROUND(x,y):返回參数x的四舍五入的有y位小数的值
LOG(x,y):返回x的以y为底的对数
MOD(x,y):返回x/y的模(余数)
聚合函数:
COUNT(col):返回指定列中非NULL值的个数
MIN(col):返回指定列的最小值
MAX(col):返回指定列的最大值
SUM(col):返回指定列的全部值之和
字符串函数:
LENGTH(s):返回字符串str中的字符数
CONCAT(s1,s2...,sn):将s1,s2...,sn连接成字符串
TRIM(str):去除字符串首部和尾部的全部空格
LEFT(str,x):返回字符串str中最左边的x个字符
RIGHT(str,x):返回字符串str中最右边的x个字符
日期时间函数:
NOW():返回当前的日期和时间
WEEK(date):返回日期date为一年中第几周(0~53)
YEAR(date):返回日期date的年份(1000~9999)
DAYOFWEEK(date):返回date所代表的一星期中的第几天(1~7)
DAYOFMONTH(date):返回date是一个月的第几天(1~31)
DAYOFYEAR(date):返回date是一年的第几天(1~366)
加密函数:
MD5():计算字符串str的MD5校验和
ENCRYPT(str,salt):使用UNIXcrypt()函数,用关键词salt(一个能够惟一确定口令的字符串,就像钥匙一样)加密字符串str
控制流函数:MySQL有4个函数是用来进行条件操作的。这些函数能够实现SQL的条件逻辑,同意开发人员将一些应用程序业务逻辑转换到数据库后台。
SELECT CASE 'green'
WHEN 'red' THEN 'stop'
WHEN 'green' THEN 'go' END;
格式化函数:
DATE_FORMAT(date,fmt):按照字符串fmt格式化日期date值
TIME_FORMAT(time,fmt):按照字符串fmt格式化时间time值
类型转化函数:
为了进行数据类型转化,MySQL提供了CAST()函数。它能够把一个值转化为指定的数据类型。
类型有:BINARY,CHAR。DATE,TIME。DATETIME,SIGNED。UNSIGNED
演示样例:
SELECT CAST(NOW() AS SIGNED INTEGER), CURDATE()+0;
SELECT 'f'=BINARY 'F', 'f'=CAST('F' AS BINARY);
系统信息函数:
CONNECTION_ID():返回当前客户的连接ID
VERSION():返回MySQLserver的版本号
USER()或SYSTEM_USER():返回当前登陆username
FOUND_ROWS():返回最后一个SELECT查询进行检索的总行数
http://bxbx258.blog.51cto.com/339450/106008
7 MySQL解决乱码问题
在数据库安的时候指定字符集,假设在安完了以后能够更改下面文件:C:\ProgramFiles\MySQL\MySQL Server 5.0\my.ini 里的全部的 default-character-set=gbk C:\Program Files\MySQL\MySQL Server 5.0\data\depot_development\db.optdefault-character-set=gbk default-collation=gbk_chinese_ci
建立数据库时候:指定字符集类型
面试-MySQL的更多相关文章
- [面试] mysql 面试题
最近在准备面试,mysql 实在是不熟悉,就先摘录一些网上的面试题来看一下. 1. MyISAM 和 InnoDB 区别? InnoDB 支持事务处理,支持更大的并发update 和 insert 操 ...
- 面试mysql表设计要注意啥
面试官:讲讲mysql表设计要注意啥? 引言 大家应该知道烟哥最近要(tiao 咳咳咳),嗯,不可描述! 随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且 ...
- PHP面试 MySQL创建高性能索引考点
MySQL索引 MySQL索引的基础和类型 索引的基础:索引类似于书籍的目录,要想找到一本书的某个特定篇章,需要查找书的目录,定位对应的页码 存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的 ...
- 关于面试mysql优化的几点纪要
1.减少查询次数 ,如何减少 ? 2. 表结构优化,如何优化 ? 3. 列选取原则 ? 4.建索引原则 ? 5.mysql语句优化 ? 6.增加mysql处理性能 ? 通过这几点, 再来说 ...
- Java面试MySQL的一些问题
MySQL InnoDB存储的文件结构 索引树是如何维护的? 数据库自增主键可能的问题
- 面试-MySQL总结
三范式 三范式定义(范式和反范式) 1NF:每个数据项都是最小单元,不可分割,确定行列之后只能对应一个数据. 2NF:每一个非主属性完全依赖于候选码(属性组的值能唯一的标识一个元组,但是其子集不可以) ...
- PHP面试 MySQL的高可扩展和高可用
MySQL的高可扩展和高可用 面试题一 MySQL分表和分区的工作原理,分表和分区的使用场景和优缺点. 分区表的原理 对用户而言,分区表时一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这 ...
- PHP面试 MySQL查询优化
MySQL查询优化 面试题一 请简述项目中优化SQL语句执行效率的方法,从那些方面,SQL语句性能如何分析? 优化查询过程中的数据访问.优化长难的查询语句.优化特定类型的查询语句 分析SQL语句方法 ...
- PHP面试 MySQL的SQL语句编写
MySQL的SQL语句编写 面试题一 有A表(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50 ...
随机推荐
- Unity里包裹Debug,且不影响Debug的重定向
Debug.Log, Debug.LogWarning, Debug.LogError在project中常常须要再包裹一层.做些定制.也方便开关Log.但有一个问题时.当用一个类将Debug包裹起来后 ...
- Web前端开发实战2:二级下拉式菜单之JS实现
上一篇博文提到了二级下拉式菜单是用HTML和CSS实现的.我们这一篇来用JavaScript脚本实现下拉菜单的显 示和隐藏. 使用 JavaScript方法实现我们须要用的知识有: 1)JS事件:on ...
- Java集合(二):List列表
在上一节中,介绍了Java集合的总体情况.从这节開始,将介绍详细的类.这里不单单介绍类的使用方法.还会试图从源代码的角度分析类的实现.这一节将介绍List接口及实现类.即列表中的链表LinkedLis ...
- CodeForces--609C --Load Balancing(水题)
Load Balancing Time Limit: 2000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64u Subm ...
- POJ 3233 矩阵快速幂&二分
题意: 给你一个n*n的矩阵 让你求S: 思路: 只知道矩阵快速幂 然后nlogn递推是会TLE的. 所以呢 要把那个n换成log 那这个怎么搞呢 二分! 当k为偶数时: 当k为奇数时: 就按照这么搞 ...
- redis简单的事务
Redis与 mysql事务的对比 占位 Mysql Redis 开启 start transaction muitl 语句 普通sql 普通命令 失败 rollback 回滚 discard 取消 ...
- javascript中DOM基础知识介绍
1.1. 基本概念 1.1.1. DOM DOM Document Object Model 文档对象模型 就是把HTML文档模型化,当作对象来处理 DOM提供的一系列属性和方法可以 ...
- css pointer-event
详见:张鑫旭 CSS3 pointer-events:none应用举例及扩展 pointer-events:none ,可以使事件穿透, 如: 2 覆盖在 1 上面. 给 2 设置 pointer-e ...
- ZBrush破解版下载,ZBrush中文版下载
11月11日这个令人兴奋的日子又来了.没错,“双十一”所有网购达人狂欢的日子.但是ZBrush却让心心念念的小伙伴们失望了一把,本以为双十一期间会有相关活动的,结果,官方并未提及,事实上,ZBrush ...
- MobilNnet
一.参数数量和理论计算量 1.定义 参数数量(params):关系到模型大小,单位通常为M,通常参数用 float32 表示,也就是每个参数占4个字节,所以模型大小是参数数量的 4 倍 理论计算量(F ...