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的更多相关文章

  1. [面试] mysql 面试题

    最近在准备面试,mysql 实在是不熟悉,就先摘录一些网上的面试题来看一下. 1. MyISAM 和 InnoDB 区别? InnoDB 支持事务处理,支持更大的并发update 和 insert 操 ...

  2. 面试mysql表设计要注意啥

    面试官:讲讲mysql表设计要注意啥? 引言 大家应该知道烟哥最近要(tiao 咳咳咳),嗯,不可描述! 随手讲其中一部分知识,都是一些烟哥自己平时工作的总结以及经验.大家看完,其实能避开很多坑.而且 ...

  3. PHP面试 MySQL创建高性能索引考点

    MySQL索引 MySQL索引的基础和类型 索引的基础:索引类似于书籍的目录,要想找到一本书的某个特定篇章,需要查找书的目录,定位对应的页码 存储引擎使用类似的方式进行数据查询,先去索引当中找到对应的 ...

  4. 关于面试mysql优化的几点纪要

    1.减少查询次数 ,如何减少 ?  2. 表结构优化,如何优化 ? 3. 列选取原则  ? 4.建索引原则   ? 5.mysql语句优化 ?   6.增加mysql处理性能 ? 通过这几点, 再来说 ...

  5. Java面试MySQL的一些问题

    MySQL InnoDB存储的文件结构 索引树是如何维护的? 数据库自增主键可能的问题

  6. 面试-MySQL总结

    三范式 三范式定义(范式和反范式) 1NF:每个数据项都是最小单元,不可分割,确定行列之后只能对应一个数据. 2NF:每一个非主属性完全依赖于候选码(属性组的值能唯一的标识一个元组,但是其子集不可以) ...

  7. PHP面试 MySQL的高可扩展和高可用

    MySQL的高可扩展和高可用 面试题一 MySQL分表和分区的工作原理,分表和分区的使用场景和优缺点. 分区表的原理 对用户而言,分区表时一个独立的逻辑表,但是底层MySQL将其分成了多个物理子表,这 ...

  8. PHP面试 MySQL查询优化

    MySQL查询优化 面试题一 请简述项目中优化SQL语句执行效率的方法,从那些方面,SQL语句性能如何分析? 优化查询过程中的数据访问.优化长难的查询语句.优化特定类型的查询语句 分析SQL语句方法 ...

  9. PHP面试 MySQL的SQL语句编写

    MySQL的SQL语句编写 面试题一 有A表(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50 ...

随机推荐

  1. boost::tuple 深入学习解说

    #include<iostream> #include<string> #include<boost/tuple/tuple.hpp> #include<bo ...

  2. TeamTalk Android代码分析(业务流程篇)

    TeamTalk Android代码分析(业务流程篇) 1.1 总体结构 1.总体结构有点类似MVC的感觉,模块结构从上向下大体是: UI层:Activity和Fragment构成,期间包括常用的一些 ...

  3. jsp 传值jsp 数据库 乱码解决的攻略 全套

    jsp传值给jsp中文乱码 传值给数据库乱码的解决方法 所有的用到编码的所有统一utf-8 1.装mysql的时候有选择编码的界面的那个地方选utf-8编码 2 建数据库的时候选择 字符集 排序规则所 ...

  4. .net mvc Model 验证总结

    ASP.NET MVC4中的Model是自验证的,这是通过.NET4的System.ComponentModel.DataAnnotations命名空间完毕的. 我们要做的仅仅是给Model类的各属性 ...

  5. cocos2dx --- 在游戏中显示HTML页面

    前文介绍了简单的富文本组件RichText,如今我们来了解下由freeType库做出来的第三方组件.可以直接显示html页面,而且可以实现超链接.和触摸事情. 步骤: 1.在github中  下载  ...

  6. 插入排序和冒泡排序(Swift版本)

    插入排序(只记录代码不作详细分析) 插入排序将输入的元素一个个插入到已排序的队列里,对比是由后往前 代码: func insertSort<Elem: Comparable>(_ arr: ...

  7. ROS-动态参数

    前言:在节点外部改变参数的方式有:参数服务器.服务.主题以及动态参数. 1.新建cfg文件 在chapter2_tutorials包下新建cfg文件夹,在cfg文件夹下新建chapter2.cfg文件 ...

  8. Python—使用xml.sax解析xml文件

    什么是sax? SAX是一种基于事件驱动的API. 利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器. 解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件; 而事件处 ...

  9. mac下安装postgreSql

    在 mac 下,可以利用 homebrew 直接安装 PostgreSQL: 1 brew install postgresql -v 稍等片刻,PostgreSQL 就安装完成.接下来就是初始数据库 ...

  10. 依赖注入Unity框架

    依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同.依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源:而控制反转是 ...