MySQL 导入大SQL文件
使用mysql导入较大的生气了文件时,会发生异常:
Got a packet bigger than‘max_allowed_packet’bytes
// 导入SQL文件大于允许的数据包大小
这时有两种解决办法:
1.临时修改
set global max_allowed_packet=524288000; -- 修改为 512M
2. 修改MySQL配置文件(my.cnf):
在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
max_allowed_packet=512M
查看linux上mysql配置文件路径:http://www.jb51.net/article/96009.htm
流程控制
在SQL中使用 “+” 将字段相加求和,如果其中一个值为 NULL ,其结果也为 NULL 。
这时就需要使用 IFNULL(expr1,expr2) 函数:
IFNULL(comm,0) 等效于
//java if(comm==null) return 0; else return comm; //sql IF(ISNULL(comm),comm,0)
IF(expr1,expr2,expr3) // 类 java ?:
如果 expr1 为 true,则返回 expr2,否则返回 expr3。
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE 'err'
END // 类java switch
decimal
decimal 能表示更准确的精度,因为float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形式保存数值。
decimal从MySQL 5.1引入,列的声明语法是DECIMAL(M,D)。
在MySQL 5.1中,参量的取值范围如下:
- M:是数值的最大长度,包括整数和小数部分(精度 precision)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认值是10。
- D:是小数点右侧数字的数目(标度 scale)。其范围是0~30,但不得超过M。
注意:
整数部分最大长度为 M-D,小数部分最大长度为 D。
例:decimal(5,3)
能表示的最大数值是:99.999。像 1234.5 这样的数值是不能保存的。