mysql的一些操作

607阅读 0评论2010-02-25 wcw
分类:Mysql/postgreSQL

一些比较有用的操作,记录下来:

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 -uUser -p mydb > out.sql
或者把压缩出的内容压缩 mysqldump -uUser -p mydb | gzip > out.sql.gz
恢复: mysql -uUser -p mydb < out.sql

5,为已创建的表添加注释

alter table mytable comment '这里填注释';

上一篇:过滤输入框非数字字符
下一篇:mysql创建root用户