Apr
1

HAVING语句

那我们如何对函数产生的值来设定条件呢?举例来说,我们可能只需要知道哪些店的营业额有超过 $1,500。在这个情况下,我们不能使用 WHERE 的指令。那要怎么办呢?很幸运地,SQL 有提供一个 HAVING 的指令,而我们就可以用这个指令来达到这个目标。 HAVING 子句通常是在一个 SQL 句子的最后。一个含有 HAVING 子句的 SQL 并不一定要包含 GROUP BY 子句。HAVING 的语法如下:SELECT "栏位1", SUM("栏位2")
FROM "表格名"
GROUP BY "栏位1"
HAVING (函数条件)

0 Comments
Apr
1

last_insert_id对于AUTO_INCREMENT是可靠的

由于last_insert_id 对应php的mysql_insert_id,但mysql_insert_id对于int自增才可靠,对于bigint却不可信.
由此对于自增ID的字段可以单独执行一次mysql_query("select last_insert_id()");

Mysql的API有个很有意义的函数last_insert_id()。这个函数的作用是,针对auto_increment字段,返回给定的 数据库链接,
上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定数据库链接,则使用上一个打开的连接。

很多人质疑last_insert_id()是否是可靠的,以前我也犹豫过。

事实上的结果是mysql_insert_id决不会取错。首先做个测试,
在mysql_query("insert.....);之后立刻sleep(1100),其间再做些其他的insert.

0 Comments
Mar
31

mysql优化方案

【总体优化建议】
1、 在一般情况下,应该尝试以非冗余方式(查看数据库理论中的第三正则形式)保存数据,但是为了获得更快的速度,可以冗余字段或创建总结表。

2、当MyISAM使用动态表格式时,偶尔使用OPTIMIZE TABLE可以避免碎片。可以写一个脚本程序定时执行优化。

3、在Web服务器中,图象和其它二进制资源应该作为文件存储。也就是仅在数据库中存储的文件的引用地址而不是文件本身。大多数Web服务器在缓存文件方面比数据库内容要好得多,因此使用文件一般要快得多。

4、对经常访问的不重要数据(如session)使用内存表。

5、在MYSQL的主写从读的架构中,一般将主库的表类型使用innoDB类型,而从库则使用myisam的表结构。因为innoDB支持事务,而且它是行锁,对插入、更新、删除的影响比较小,更改数据的性能也更高(很多人测试过)。
注:一定要记得要将innodb的auto_commit的默认值设置成0或f...

0 Comments
Mar
23

timestamp自动完成时间--mysql

mysql有个数据类型为timestamp.其能做到自动完成更新时间,很受用,但有时你又希望此时间值在更新数据时,不更新其值.如: 文章的发布时间,你希望在你记录时,mysql帮你自己完成时间为当前时间,则可使用timestamp.
但这个时你不希望在你更改文章标题等信息时,mysql自动为你修改.如果你不熟知timestamp时,往往头疼了.因为他一般会随着其它同行记录修改而自动修定.

是不是就那么麻烦呢?答案是否定的.我们需要的是认真很看看手册.
好了不扯了,NeiLyi 告诉你:
一. timestamp两种属性:
自动初始化: 此行为只在第一次写入数据时,怎么把时间设为当前时间. (DEFAULT CURRENT_TIMESTAMP)
自动更新: 此行为在修改资料时,会自动帮你把值修改为当前时间. (ON UPDATE CURRENT_TIMESTAMP)

二. 四种状态:
由上面两种属性延...

0 Comments