数值类型与处理函数
BIT(M):位字段类型。M表示每个值的位数,范围为从1到64。M默认为1。
TinyINT(M): 带符号的范围是-32768到32767。
无符号的范围是0到65535。1字节。
SmallINT(M): 带符号的范围是-32768到32767。
无符号的范围是0到65535。2字节。
MediumINT(M): 带符号的范围是-8388608到8388607。
无符号的范围是0到16777215。3字节。
INT(M): 带符号的范围是-2147483648到2147483647。
无符号的范围是0到4294967295。4字节。
BigINT(n): 带符号的范围是-9223372036854775808到9223372036854775807。
无符号的范围是0到18446744073709551615。8字节。
Decimal(m,n): M是总位数,D是小数点(标度)后面的位数。实际上是VARCHAR存储。
算数符运算:SELECT expr;
数学函数:ABS(x),x的绝对值。
CEIL(x),返回不小于X 的最小整数值。
FLOOR(x),返回不大于X的最大整数值
CRC32(x),计算循环冗余码校验值。
RAND(),返回0~1直接随机浮点数。
SIGN(x),返回x的符号
TRUNCATE(X,D),返回X被舍去至小数点后D位的数字。
字符类型与处理函数
Char(M): 长度固定为创建表时声明的长度M。长度可以为从0到255的任何值。
当保存CHAR值时,在它的右边填充空格以达到指定的长度。
当检索到CHAR值时,尾部的空格被删除。
在存储或检索过程中不进行大小写转换。
占用空间(M*每字符字节长度),UTF8为3字节。
VarChar(M): 列中的值为可变长字符串。长度可以指定为0到65,535之间的值。
VARCHAR的最大有效长度由最大行大小和使用的字符集确定。
整体最大长度是65,532字节。
VARCHAR值保存时不进行填充。
当值保存和检索时尾部的空格仍保留,符合标准SQL。
占用空间(M*每字符字节长度+长度记录位)。
CHAR_LENGTH(str):返回值为字符串str的长度,长度的单位为字符。
LENGTH(str):返回值为字符串str 的长度,单位为字节。
CONCAT(str1,str2,...):返回结果为连接参数产生的字符串。
CONCAT_WS(separator,str1,str2,...):第一个参数是其它参数的分隔符。
分隔符的位置放在要连接的两个字符串之间。
LEFT(str,len):返回从字符串str开始的len最左字符。
RIGHT(str,len);从字符串str 开始,返回最右len 字符。
SUBSTRING(str,pos,len):从字符串str返回一个长度同len字符相同的子字符串,
起始于位置 pos。
LOWER(str):返回字符串 str 变为小写字母的字符。
UPPER(str):返回字符串str转化为大写字母的字符。
日期类型与处理函数
TIMESTAMP:以'YYYY-MM-DD HH:MM:SS'格式检索和显示TIMESTAMP值。
支持的范围为‘1970-01-01 00:00:00’到2037年。
占用4字节
DATETIME:以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。
支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
占用8字节。
DATE:用'YYYY-MM-DD'格式检索和显示DATE值。
支持的范围是'1000-01-01'到 '9999-12-31'。
占用4字节。
DATE_SUB/DATE_ADD:对时间进行加减。
CURDATE():将当前日期按照‘YYYY-MM-DD’ 或YYYYMMDD 格式的值返回。
NOW():返回当前日期和时间值,
其格式为 ‘YYYY-MM-DD HH:MM:SS’ 或YYYYMMDDHHMMSS。
组合使用:mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
-> '1998-02-02'
类型处理小技巧
IP存储:INET_ATON(expr),将IP转换为整数。
INET_NTOA(expr),将整数转换为IP。
mysql> SELECT INET_ATON('209.207.224.40');
-> 3520061480
mysql> SELECT INET_NTOA(3520061480);
-> '209.207.224.40‘
判断IP段:INET_ATON('209.207.224.1') <= IP AND IP <= INET_ATON('209.207.224.255');
VARCHAR存储:(3*4+3)+1=16位,UTF8字符集15*3+1=46字节
INT存储:4字节