Chinaunix首页 | 论坛 | 博客
  • 博客访问: 538397
  • 博文数量: 83
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1169
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-29 22:34
文章分类

全部博文(83)

文章存档

2011年(3)

2010年(29)

2009年(30)

2008年(21)

我的朋友

分类: Mysql/postgreSQL

2010-02-25 15:56:52

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

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 '这里填注释';

阅读(523) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~