面试-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 ...
随机推荐
- 【C语言】编写函数实现字符串旋转
//编写函数实现字符串旋转 #include <stdio.h> #include <assert.h> #include <string.h> void reve ...
- 有关计数问题的DP 划分数
有n个无差别的物品,将它们划分成不超过m组.求出划分方法数模M的余数. 输入: 3 4 10000 输出: 4(1+1+2=1+3=2+2=4) 定义:dp[i][j] = j的i划分的总数 #inc ...
- android开发一些小bug
1.一定要注意findViewId这种方法,尤其是含有多个同样的R.id的名字时,debug时不会当场报错.但随后会报空指针错误 2.List转换为Array能够这样处理: ArrayList< ...
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键消息
Android对屏幕下方经常使用的四个按键消息处理是不一致的: 1.搜索按键的消息在onKeyDown或者onKeyUp中接收: 2.菜单按键的消息在onCreateOptionsMenu.onKey ...
- Python+Django+SAE系列教程16-----cookie&session
本章我们来解说cookie和session ,这两个东西相信大家一定不陌生,概念就不多讲了,我们直接来看其使用方法,首先是cookie,我们在view中加入三个视图,一个是显示cookie的,一个是设 ...
- NEU2016年一月月赛回顾
月赛传送门 http://acm.neu.edu.cn/hustoj/contest.php?cid=1066 月赛已经结束十天了...才把题目补完真是大失误... 茅巨巨四天前就补完了,,,总结写得 ...
- React 父组件触发子组件事件
Parent组件 import React from "react"; import Child from "./component/Child"; class ...
- Python—使用xm.dom解析xml文件
什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...
- [转]SQL Server 批量完整备份
最近我们的服务器需要迁移,服务器上有很多数据库,有很多都不知道干什么的了,但是为了保险起见,我决定都备份下,起初我是右键一个一个备份的,备份三四个还好,可是数据库太多了,而且手动一步一步操作,还得修改 ...
- 【译文】采用chrome的DevTool中TimeLine和profile工具提升Web app性能
->译文,原文在这里<- 本文地址: http://www.cnblogs.com/blackmanba/p/web-perfomance-with-Chrome-DevTools.htm ...