mysql常用数据类型 数据类型转换 数据加解密 数据高级操作 内存表和临时表

2015-08-14 22:46:00
admin
原创 2266
摘要:mysql常用数据类型 数据类型转换 数据加解密 数据高级操作 内存表和临时表

一、mysql整数类型

1、实际中所有的数据类型都可以指定显示长度,比如int(10);

2、可以指定无符号属性unsigned,比如int unsigned;

3、可以指定属性zerofill,int(4) zerofill,比如5会返回0005;

4、截断取决于数据类型范围,tinyint(-128,127),当值小于-128时值按-128存储,当值大于127时值按127存储;

5、数据类型长度:TINYINT=1字节、SMALLINT=2字节、MEDIUMINT=3字节、INT,INTEGER=4字节、BIGINT=8字节;


二、mysql浮点数类型

近似浮点数:

1、近似浮点数:float=4字节、double=8字节;

2、指定范围type(M,D),M是数据digit的总个数,D是小数digit的总个数,精度决定数据存储范围;


精确浮点数:

1、精确浮点数常用于金钱,包括DECIMAL和NUMERIC,并且他们等价;

2、指定范围type(M,D),M是数据digit的总个数,D是小数digit的总个数,精度决定数据存储范围;


三、mysql字符串类型

1、char(max count),最大长度是255,char(16)存储大小是16字节

2、varchar(max count),最大长度是65535,varchar(16)存储大小是字符串长度加一个固定值;

3、binary和varbinary类似char和varchar,binary存储字节,char存储字符,超过字段申明长度的字符串会被截断

4、text用于存储大量文本,TINYTEXT<=256字节、TEXT<=64K、MEDIUMTEXT<=16M、LONGTEXT<=4G;

5、char类型存储时自动删除尾部空格,varchar类型比较时忽略尾部空格,binary或like不会忽略尾部空格;

6、字符串使用单引号或双引号都可以,转义字符使用反斜杠,单引号中可以用''表示单引号,双引号中可以用""表示双引号

7、连续的字符串会连接成一个字符串,不同字符串之间允许空白,或者使用concat进行字符串连接;

8、0x开头的十六进制数据是字符串类型,语句里面包含保留字需要使用反引号;


四、mysql时间类型

1、date,'YYYY-MM-DD',取值范围'1000-01-01' to '9999-12-31'

2、datetime,'YYYY-MM-DD HH:MM:SS',取值范围'1000-01-01 00:00:00' to '9999-12-31 23:59:59'

3、timestamp,'YYYY-MM-DD HH:MM:SS',取值范围'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC

4、timestamp取值范围较小,存储时会转换为UTC时间,支持自动更新,所以不建议使用;

5、curdate函数返回日期,curtime函数返回时间,now函数返回日期和时间;

6、timestampdiff以指定单位计算时间差,忽略结果的小数部分;

7、datediff以天为单位计算时间差,只比较日期,不比较时间;


五、mysql数据类型转换

1、操作符或函数参数不兼容,隐式类型转换发生,参数自动转换成需要类型;

2、显示类型转换函数有binary、cast、convert;

3、数字转换成字符串:cast(8.8 as char)、convert(8.8,char)、concat(8.8);

4、比较操作符2个参数都是整数则按整数比较,2个参数都是字符串则按字符串比较;

5、比较操作符1个参数是整数,1个参数是字符串,则按整数比较;

6、比较操作符只要有1个参数是NULL,结果就是NULL;

7、类型转换说明:http://www.3scard.com/data/download/mysql55/functions.html#type-conversion

8、类型转换函数:http://www.3scard.com/data/download/mysql55/functions.html#function_cast


六、mysql数据加解密

1、HEX(str)、HEX(N),字符串或整数转十六进制字符串;

2、UNHEX(str),十六进制字符串转原始二进制字符串;

3、MD5(str),哈希算法返回32个十六进制字符;

4、SHA(str)、SHA1(str),哈希算法返回40个十六进制字符;

5、AES_ENCRYPT(str,keystr),128比特密钥加密数据,keystr=UNHEX('keyhex') or MD5('passphrase');

6、DES_ENCRYPT(str[,{keynum|keystr}]),128或192比特密钥加密数据,密钥参数是keystr则参照上面AES;

7、BENCHMARK(count,expr),重复执行表达式,用于评估表达式性能;


七、mysql数据高级操作

1、case、if、ifnull、nullif函数在sql语句中用于流程控制,根据不同条件执行不同sql语句;

2、预编译的存储过程可以提高执行效率,申明语法是create procedure或create function;

3、procedure一般调用sql语句,function一般不调用sql语句,且两者调用方式不大一样;

4、UDF自定义函数的申明语法是create function,自定义函数使用动态链接库,因此效率非常高;

5、触发器用于在SQL执行前或执行后进行一些操作,触发器的调用基于数据行,因此非常消耗资源;


八、mysql存储过程

1、mysql5.0版本开始支持存储过程,存储过程存储在具体的数据库,同数据库关联;

2、delimiter临时替换分隔符为//,防止语句被mysql客户端执行;

3、存储过程参数默认IN,可以显示指定[ IN | OUT | INOUT ] name type;

4、show procedure status\G,查看所有数据库的存储过程;
5、show create procedure getCnt\G,查看指定的存储过程定义


drop procedure if exists getCnt;
delimiter //
create procedure getCnt(OUT cnt int)
begin
select count(*) INTO cnt from test;
end
//
delimiter ;
call getCnt(@cnt);
select @cnt;


九、mysql内存表

内存表特性:表结构存放在磁盘,数据存放在内存,重启数据库后数据丢失。


内存表设置

1、set global max_heap_table_size=16384,会话变量拷贝该全局变量;

2、set max_heap_table_size=16384,单个内存表最大字节数,重启数据库后恢复默认,内存表重新加载该值;
3、show variables like '%heap%'


创建内存表:

drop table if exists temp;

create table temp(id int, name varchar(32), age int)
engine = memory;


十、mysql临时表

临时表特性:会话结束后表结构和数据都丢失,临时表一般是内存表。


临时表设置:

1、set tmp_table_size=16384;
2、show variables like 'tmp_table_size',此变量mysql目前还没有实现;

3、show variables like 'max_tmp_tables',此变量mysql目前还没有实现;


创建临时表:

drop table if exists temp;
create temporary table temp(id int, name varchar(32), age int)
engine = memory;

发表评论
评论通过审核之后才会显示。