随笔分类 - mysql 基础篇系列
摘要: 一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql。 sql model 常用来解决下面几类问题: (1) 通过设置sql mode, 可以完成不同严格程度的数据
阅读全文
posted @ 2018-07-16 18:06 花阴偷移 阅读(429) | 评论 (0) 编辑
摘要: 1. 隐含的执行unlock tables 如果在锁表期间,用start transaction命令来开始一个新事务,会造成一个隐含的unlock tables 被执行,如下所示: 会话1 会话2 SELECT * FROM country WHERE country='德国'; 记录为空 SELE
阅读全文
posted @ 2018-07-16 11:01 花阴偷移 阅读(112) | 评论 (0) 编辑
摘要: 一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性。这样就需要使用事务控制和锁定语句来完成。 特点 myisam innodb memory merge ndb 事
阅读全文
posted @ 2018-07-12 16:22 花阴偷移 阅读(135) | 评论 (0) 编辑
摘要: 触发器是与表有关的数据库对象,触发器只能是针对创建的永久表,而不能是临时表。 1.1 创建触发器 trigger_time:是触发器的触发时间,可以是 before或after, before是检查约束前触发,而after是检查约束后触发。 trigger_event:是触发器的触发事件,可以是 i
阅读全文
posted @ 2018-07-12 09:50 花阴偷移 阅读(91) | 评论 (0) 编辑
摘要: 1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close。 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重要, 重点在于如何使用光标: 2. 流程控制 包括 if ,case, loop, leave, i
阅读全文
posted @ 2018-07-11 13:59 花阴偷移 阅读(109) | 评论 (0) 编辑
摘要: 一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的。存储过程和函数的区别在于函数必须有返回值,存储过程的参数可以使用in,out ,inout类型,而函数参数只能是in类型。
阅读全文
posted @ 2018-07-10 16:40 花阴偷移 阅读(110) | 评论 (0) 编辑
摘要: 一. 什么是视图 视图是一种虚拟存在的表,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件。 安全:使用视图的用户只能访问他们被允许查询的结果集。 数据独立: 源表增加列对视图没有影响,源表修改
阅读全文
posted @ 2018-07-09 17:16 花阴偷移 阅读(107) | 评论 (0) 编辑
摘要: 一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法。 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字节。 myisam和innodb引擎的表默认是btree索引,支持前缀索引,前缀索引长度跟存储引擎相
阅读全文
posted @ 2018-07-09 14:25 花阴偷移 阅读(156) | 评论 (0) 编辑
摘要: 字符集是一套文字符号及其编码,比较规则的集合。第一个字符集是ascll(american standard code for information interchange)。 1. 选择合适的字符集 对于数据库来说,字符集很重要,因为数据库存储的数据大部分是各种文字,字符集对数据库的存储,处理性能
阅读全文
posted @ 2018-07-06 15:52 花阴偷移 阅读(132) | 评论 (0) 编辑
摘要: 一. BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha1,crc23() 来生成散列值, 数值型散列值可以提高存储效率 。下面演示下 上面展示了合成索引的用
阅读全文
posted @ 2018-07-06 11:07 花阴偷移 阅读(95) | 评论 (0) 编辑
摘要: 一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到。在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格。由于char是固定长度,所以字的处理速度比varchar快,但也浪费存储空间,随着mysql 的不断升级,varchar数据类型的性能也在
阅读全文
posted @ 2018-07-05 16:50 花阴偷移 阅读(100) | 评论 (0) 编辑
摘要: 一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm. 该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引,但服务关闭,表中的数据就会丢失掉。 总结:服务器需要足够的内存来维护所有在同一时间使用的memory表,
阅读全文
posted @ 2018-07-04 17:31 花阴偷移 阅读(148) | 评论 (0) 编辑
摘要: 一. 概述: InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。它的特点有如下: 1. 自动增长列特点 (AUTO_INCREMENT) InnoDB表的自动增长列可以手工插入,但
阅读全文
posted @ 2018-07-04 10:07 花阴偷移 阅读(142) | 评论 (0) 编辑
摘要: MyISAM是mysql 默认存储引擎,它不支持事务,外键。但访问速度快,对事务完整性没有要求或者以select,insert 为主的应用基本上都可以使用这个引擎。每个MyISAM在磁盘上存储成3个文件,文件名都和表名相同,扩展分别是:.frm(存储表定义).MYD(MYdata 存储数据).MYI
阅读全文
posted @ 2018-07-02 16:31 花阴偷移 阅读(133) | 评论 (0) 编辑
摘要: 一. 表的存储引擎 1. 概述 插件式存储引擎是mysql数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等。在mysql 5.0里支持的引擎包括: MyISAM,InnoDB,BDB,Memory,Merge,Example,NDB Cluster, Archi
阅读全文
posted @ 2018-07-02 13:54 花阴偷移 阅读(136) | 评论 (0) 编辑
摘要: 一.流程函数 1. if(value,t,f) 超过2000的用high,否则用low 2. ifnull(value1,value2) 下面语句是把null值替换0 3.case when ... 用来实现中高低薪的问题 二. 其它常用函数 2. PASSWORD 返回加密后的字符,一般用来设置系
阅读全文
posted @ 2018-06-30 15:34 花阴偷移 阅读(118) | 评论 (0) 编辑
摘要: 一. 数值函数 1. abs(x) 返回x的绝对值 2.ceil(x) 返回大于x的最大整数 3.floor(x) 返回小于x的最大整数 4.mod(x,y) 返回x/y的模 5. rand() 返回0到1内的随机值 还可是指定范围的随机数,如0~100的值 6.round(x,y) 返回参数x的四
阅读全文
posted @ 2018-06-30 12:36 花阴偷移 阅读(118) | 评论 (0) 编辑
摘要: 字符串函数 1. concat (s1,s2,...sn) 连接里面的参数成一个字符串(注意上面写错了函数名称) 2. insert(str,x,y,instr) 将字符串str 从x位置开始,y个长度替换成instr 3. lower(str)和upper(str) 将字符串转成小写和大写 4.
阅读全文
posted @ 2018-06-29 16:24 花阴偷移 阅读(114) | 评论 (0) 编辑
摘要: 1. 算术运算符 2.比较运算符 3.逻辑运算符又叫布尔运算符。用来确认表达式的真和假。 not 或! 表示逻辑非。 返回和操作数相反的结果,当操作数为0(假) 返回1。 如下 AND 或 && 。当所有操作数均为非零值并且不为NULL 时,计算所得结果为1 or 或 || 条件只要一个为真就行 x
阅读全文
posted @ 2018-06-29 14:16 花阴偷移 阅读(125) | 评论 (0) 编辑
摘要: 字符串类型 1.1 CHAR 和VARCHAR 类型 CHAR 列的长度固定为创建表时声明的长度,VARCHAR 列中的值为可变长字符串。在检索的时候,CHAR 列删除了尾部的空格,而VARCHAR 则保留这些空格。(在sqlserver里都是长度2) 1.2 BINARY 和VARBINARY 类
阅读全文
posted @ 2018-06-27 17:44 花阴偷移 阅读(158) | 评论 (0) 编辑
摘要: 日期类型 如果要用来表示年月日,通常用DATE 来表示。 如果要用来表示年月日时分秒,通常用DATETIME 表示。 如果只用来表示时分秒,通常用TIME 来表示。 TIMESTAMP表示格式 :YYYY-MM-DD HH:MM:SS。 如果只是表示年份,可以用YEAR 来表示。DATE,DATET
阅读全文
posted @ 2018-06-26 11:54 花阴偷移 阅读(185) | 评论 (0) 编辑
摘要: Mysql 的数据类型 1. 对整数类型, Mysql 还支持类型名称后面的小括号内指定的显示宽度,例如int(5) 表示宽度小于5位时填满宽度,如果不显示指定宽度默认是int(11),一般配合zerofill使用下面来描述下 2. 整数类型还有一个属性 auto_increment。产生唯一标识,
阅读全文
posted @ 2018-06-26 09:48 花阴偷移 阅读(214) | 评论 (0) 编辑
摘要: 在安装完数据库后,不管是windows 还是linux平台, mysql的sql命令都大同小异,相关命令都是相同的,每个命令结束后 都以 ; 结尾, 注意在windows平台中表名是不区分大小写的,在linux中是区分的。 例如tl1 与TL1在linux中是区分的。 为了一致所有的数据库名,表名,
阅读全文
posted @ 2018-06-25 18:11 花阴偷移 阅读(423) | 评论 (0) 编辑