一些比较有用的操作,记录下来:
1,mysql> select LAST_INSERT_ID();
LAST_INSERT_ID(): Value of the AUTOINCREMENT column for the last INSERT,是最后一次insert操作的,网上查到有人说update也行,经试验证明是不行的。
这里有2点要注意:
1)insert的操作表中要有AUTOINCREMEN的列;
2)LAST_INSERT_ID()是跟会话相关的,也就是说不同会话的insert操作是不会互相影响的
2,超时——MySQL server has gone away
今天在php中查询数据,结果数据量太大,导致出现了上面的错误。
搜了下,大概有2种解决方法:
1),在程序中设置(以php为例):
$sql = "set interactive_timeout=24*3600";
mysql_query($sql, $myConn);
2),在my.cnf中设置:
wait_timeout=2880000
interactive_timeout = 2880000
3),设置编码
在终端查询时经常遇到出现乱码的问题,一般都可以用以下方法解决:
set names utf8
这句话告诉mysql数据以utf8的编码传过来。
更深入的可以看这里:
3,with rollup
今天发现还有with rollup这个用法:表示在对分类聚合(group by)之后对结果在进行汇总。比如:
mysql> select map_name, sum(value) from t_xx group by map_name with rollup;
+--------------+---------------+
| map_name | sum(value) |
+--------------+---------------+
| finance | 3009008831 |
| pca_hqing_zs | 29710266 |
| pca_stock_hk | 25418445 |
| pca_stock_ps | 14032369 |
| pca_stock_ss | 253001473 |
| pca_stock_us | 1948446 |
| NULL | 3333119830 | +--------------+---------------+
注意最下面一行就是用了with rollup才有的
4,mysqldump备份与恢复
备份: mysqldump -u
User -p
mydb > out.sql
或者把压缩出的内容压缩 mysqldump -u
User -p
mydb | gzip > out.sql.gz
恢复: mysql -u
User -p
mydb < out.sql
5,为已创建的表添加注释
alter table mytable comment '这里填注释';
阅读(589) | 评论(0) | 转发(0) |