面试-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 ...
随机推荐
- python3连接Mairadb数据库
<span style="font-size:18px;">#本代码演示的是python3.3.5下连接Mairadb数据库</span> <span ...
- 回车登录(支持IE 和 火狐等浏览器)
$("body").keydown(function(e){ var curKey = e.which; if(curKey == 13){ $("#Btn_login& ...
- Linux网络驱动程序
Linux 的网络系统主要是基于 BSD UNIX 的套接字机制. 在系统与驱动程序之间定义了数据结构 sk_buff 进行传输数据.系统支持对发送数据和接收数据缓存,提供流控机制并提供对多协议的支持 ...
- iOS 常见面试图总结2
1.请简述storyboard和xib的差别? 一个project中.能够有多个xib文件,一个xib文件相应着一个视图类控制器,和多个视图. 然而.使用 storyboard时,一个project仅 ...
- MongodDB用GridFS方式存取文件
在实现GridFS方式前我先讲讲它的原理,为什么可以存大文件.驱动首先会在当前数据库创建两个集合:"fs.files"和"fs.chunks"集合,前者记录了文 ...
- gdbserver 远程调试问题:设置文件和so搜索路径
编写一个必定crash 的程序 #include <stdio.h> void crash(){ char *a=0; *a=0; } int main() { printf(" ...
- Linux下安装intellij idea
1.下载 http://www.jetbrains.com/idea/download/#section=linux 我下载的是不带jdk的版本 2.放入opt目录中 3.解压到usr下面的intel ...
- Vmware VM共享
打开虚拟机,设置,选项点击共享文件夹 点击启用,将电脑windows的目录添加过来 进入终端即可以进入
- 36.QT地图
widget.h #ifndef MAPWIDGET_H #define MAPWIDGET_H #include <QGraphicsView> #include <QLabel& ...
- c# TextBox
1. text内容全选事件 textBox1.selectAll(); 2.失去与获取焦点事件 textox1.LostFocus += new EventHandler(txt_LostFocus) ...