面试-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 ...
随机推荐
- crm2013使用图片字段
在CRM2013能够加入图片字段(一个实体仅仅能加入一个图片字段) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveV9mMTIz/font/5a6L5L2 ...
- 深刻理解Nginx之基本配置和升级(2)
3 Nginx基本配置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvam9obl9mX2xhdQ==/font/5a6L5L2T/fontsize/400 ...
- 初识cocos2dx——入门第一篇
享受"啪"的按下Enter的快感. (by云风) cocos2dx是不是个toy引擎,不同的人有不同的看法.可是你不得不承认它非常受欢迎.好多非常火的手游使用的就是cocos2dx ...
- javascript系列-class12.事件
1.默认行为 什么是默认行为:默认行为就是浏览器自己触发的事件.比如:a链接的跳转,form提交时的跳转,鼠标右键跳转: oncontexmenu当点击右键菜单的时候: re ...
- SYN-Flood防御方法之一Synproxy
SYN-Flood攻击: 攻击者发送大量的SYN给服务器. 服务器必须针对每一个SYN请求回送一个SYN-ACK 应答包,此时服务器就必须保持一条半开放的连接,直到接收到一个对应的ACK应答包为止. ...
- ROS-VIM
在终端输入:vimtutor,进入学习教程. 常用快捷键: a 编辑模式; 编辑状态下 回车 换行; Ctrl+n 补全命令; x剪切; p复制; u撤销; :q!不保存退出; :wq保存并退出; 以 ...
- POJ 2665 模拟,,
It is confirmed that these sections do not overlap with each other. 一句话 就变成水题了,,, // by SiriusRen #i ...
- Spark任务调度
不多说,直接上干货! Spark任务调度 DAGScheduler 构建Stage—碰到shuffle就split 记录哪个RDD 或者Stage 输出被物化 重新提交shuffle 输出丢失的sta ...
- Rabbit MQ 学习 (二)
接连上一篇 :安装Erlang环境 之后,这篇安装 Rabbit Server 官网下载安装包:http://www.rabbitmq.com/install-windows.html 打开安装一路下 ...
- DIV水平方向居中的几种方法
一.使用margin: 1 #center0 { 2 background: red; 3 margin: 0 auto; 4 } 或者: margin: auto; 这样的前提是父盒子里没有其他盒子 ...