MySQL的增(insert)删(delete)改(update)查(select)学习小计 代码人生


记录操作://插入数据
INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr|DEFAULT},...),(...),...
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...
INSERT [INTO] tbl_name [(col_name,...)] SELECT...

UPDATE://更新数据
单表更新/UPDATE [LOW_PRIORITY][IGNORE] table_reference SET col_name1={expr1|DEFAULT},[col_name2={expr2|DEFAULT}]...[WHERE where_condition]
多表更新/...

DELETE : //删除数据
单表删除/DELETE FROM tbl_name [WHERE where_condition}
多表删除/...

SELECT: //查询
SELECT select_expr [,select_expr ...]
[
FROM
WHERE
GROUP BY {col_name | position}[ASC|DESC],...
LIMIT {[offset,] row_count|row_count OFFSET offset
]

解决乱码的问题:
1.show variables like "%char%";
类似set character_set_results=utf8;,能改的都改为uft8
2.在要创建的表后加ENGINE=InnoDB DEFAULT CHARSET=utf8;

以utf8为例:
建表时,应当加上CREATE TABLE IF NOT EXISTS $tableName($paramArray) default charset=utf8选项;
插入数据前,应当先设置编码:SET NAMES utf8|gbk|gb2312;
然后插入数据:INSERT $tableName($param2insertArray) VALUES($valueArray);

set names gbk:表示只是设置客户端的显示编码,不会影响数据编码


admin 发布于  2015-7-10 15:52 

mysql ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in 解决办法 代码人生

ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in 如图所示,我在使用MySQL的时候呢,遇到了这种问题,通过度娘找到了答案,在此小计.以便日后查看,大手子绕道,勿喷.

用到两个时间戳相减来做查询条件,由于其两个字段都是unsigned的,并两个的大小是不一样。所以直接相减查询的时候,

07-08-40-49.png

就出现ERROR 1690 (22003): BIGINT UNSIGNED value is out of range in..的错误,因为结果可能会出现负数。。。。

07-08-33-11.png

解决办法呢,就是执行下面这句MySQL语句即可:

mysql>SET sql_mode='NO_UNSIGNED_SUBTRACTION';

07-08-34-06.png

从图中可以看到解决了.原理如下:

类型属性   在介绍数据类型前先来介绍两个属性UNSIGNED和ZEROFILL是否使用这两个属性对选择数据类型有着莫大的关系。  

1. UNSIGNED   UNSIGNED属性就是将数字类型无符号化与C、C++这些程序语言中的unsigned含义相同。例如INT的类型范围是-2 147 483 648  2 147 483 647 INT UNSIGNED的范围类型就是0  4 294 967 295。   看起来这是一个不错的属性选项特别是对于主键是自增长的类型因为一般来说用户都希望主键是非负数。

2.也可以使用 as signed 加在需要执行的MySQL语句解决.



admin 发布于  2015-7-10 07:32