日期类型 如果要用来表示年月日,通常用DATE 来表示. 如果要用来表示年月日时分秒,通常用DATETIME 表示. 如果只用来表示时分秒,通常用TIME 来表示. TIMESTAMP表示格式 :YYYY-MM-DD HH:MM:SS. 如果只是表示年份,可以用YEAR 来表示.DATE,DATETIME,TIME是常用三种. CREATE TABLE t(d DATE,t TIME,dt DATETIME) -- 插入当前日期 INSERT INTO t VALUES(NOW(),NOW(),…
字符串类型 1.1 CHAR 和VARCHAR 类型 CHAR 列的长度固定为创建表时声明的长度,VARCHAR 列中的值为可变长字符串.在检索的时候,CHAR 列删除了尾部的空格,而VARCHAR 则保留这些空格.(在sqlserver里都是长度2) ), c )); INSERT INTO vc VALUES ('ab ', 'ab '); SELECT LENGTH(v),LENGTH(c) FROM vc; 1.2 BINARY 和VARBINARY 类型 BINARY 和VARBINA…
一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定长度,所以字的处理速度比varchar快,但也浪费存储空间,随着mysql 的不断升级,varchar数据类型的性能也在不断改进提高,varchar的字节是L+1字节,1字节是用来记录其长度的字节. char长度可选范围在0-255之间,也就是char最大能存储255个字符,varchar的长度范围为0-65…
Mysql 的数据类型 1. 对整数类型, Mysql 还支持类型名称后面的小括号内指定的显示宽度,例如int(5) 表示宽度小于5位时填满宽度,如果不显示指定宽度默认是int(11),一般配合zerofill使用下面来描述下 -- 创建表t1 有id1和id2字段,指定数值宽度分别为int 和int(5) )); -- 在里面都插入1 ,); -- 查询格式没有异常, 值是 id1=1, id2=1 SELECT * FROM t1; -- 分别修改id1 和id2字段类型, 加入 zerof…
一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha1,crc23() 来生成散列值, 数值型散列值可以提高存储效率 .下面演示下 -- hash_value字段用来存储散列值 ),context BLOB, hash_value )) -- 插入数据 存放MD5散列值 , REPEAT(),MD5(context)); , REPEAT(),MD5…
一. 数值函数 1.  abs(x) 返回x的绝对值 SELECT ABS(-0.8),ABS(0.8); 2.ceil(x) 返回大于x的最大整数 SELECT CEIL(-0.8),CEIL(0.8); 3.floor(x) 返回小于x的最大整数 SELECT FLOOR(-0.8),FLOOR(0.8); 4.mod(x,y) 返回x/y的模 ,),MOD(,),MOD() 5. rand() 返回0到1内的随机值 SELECT RAND(),RAND(); 还可是指定范围的随机数,如0~…
一.概述 与其它数据库不同,mysql 可以运行不同的sql model 下, sql model 定义了mysql应用支持的sql语法,数据校验等,这样更容易在不同的环境中使用mysql. sql model 常用来解决下面几类问题 (1) 通过设置sql mode, 可以完成不同严格程度的数据校验,有效地保障数据准备性. (2) 通过设置sql model 为ansi 模式,来保证大多数sql符合标准的sql语法,这样应用在不同数据库之间进行迁移时,则不需要对业务sql 进行较大的修改. (…
一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的.存储过程和函数的区别在于函数必须有返回值,存储过程的参数可以使用in,out ,inout类型,而函数参数只能是in类型. 创建需要create routine 权限, 修改删除需要alter routine权限,执行需要execute权限. 1.1 创建存储过程,调用,删除 -- 创建 DELIMITER $$ CRE…
一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使用事务控制和锁定语句来完成. 特点 myisam innodb memory merge ndb 事务安全 支持 锁机制 表锁 表锁 行锁(默认) 表锁 表锁 行锁 页锁(默认) 1.  lock table 和nolock table lock table是锁定当前线程的表.如果当前表被锁定,其它…
1. 光标的使用(游标) 在存储过程和函数中可以使用光标对结果集进行循环的处理,光标使用包括光标的声明,open ,fetch,close. 下面在存储过程中使用一个光标, 这个举例中光标里的逻辑不重要, 重点在于如何使用光标: SELECT city_id FROM test.city DELIMITER $$ CREATE PROCEDURE proc_demo_cursor() BEGIN -- 定义变量,获取光标中的数据 ; -- 声明光标 DECLARE cur_city CURSOR…