mysql小技巧记录

1.在mysql场景中,每一行都是用分号(;)作为结束的。

2.在php场景中,最后的分号(;)可以省略掉。

如:

<?
$sql = "select * from tem";
?>

这是因为PHP也是以分号作为一行的结束的,额外的分号有时会让PHP的语法分析器搞不明白,所以还是省略掉的好。

在这种情况下,虽然省略了分号,但是PHP在执行MySQL命令时会自动的帮你加上的。

3.优先采用关联数组取出数据。关联的效率高于索引的。

4.多表联合查询下,给表取用别名。如:

<?php
$sql = "select a.t1,b.t2 from table_a as a,table_b as b";

?>

5.用mysql_unbuffered_query()开发快速的脚本

这个函数能用来替换mysql_query()函数,主要的区别就是mysql_unbuffered_query()执行完查询后马上返回,不需要等待或者对数据库加锁。

但是返回的行数不能用mysql_num_rows()函数来检查,因为输出的结果集大小未知。

6.NOT NULL和空记录

如果用户在没有填任何东西的情况下按了submit按钮,会怎样呢?如果你确实需要一个值,那么可以用客户端脚本或者服务器端脚本来进行数据验证。

但是,在数据库中却是允许一些字段被空出来什么也不填。对此类纪录,MySQL将要为之执行一些事情:插入值NULL,即缺省的操作。

如果你在字段定义中为之声明了NOT NULL(在建立或者修改这个字段的时候),MySQL将把这个字段空出来什么东西也不填。

对于一个ENUM枚举类型的字段,如果你为之声明了NOT NULL,MySQL将把枚举集的第一个值插入到字段中。

也就是说,MySQL把枚举集的第一个值作为这个枚举类型的缺省值。

一个值为NULL的纪录和一个空纪录是有一些区别的。%通配符可以匹配空纪录,但是却不能匹配NULL纪录。

在某些时候,这种区别会造成一些意想不 到的后果。就我的经验而言,任何字段都应该声明为NOT NULL。

这样许多的SELECT查询语句就能够正常运转了。注意在搜索NULL时,必须用“IS”关键字,而LIKE是不会正常工作的。

在最后要提到的 是,如果你在加入或者修改一个新的字段之前,数据库中已经有了一些记录了,

这时新加入的字段在原来的纪录中的值,可能是NULL,也可能为空。这也算是 MySQL的一个Bug吧,所以在这种情况下,使用SELECT查询要特别的小心。

原文地址:https://www.cnblogs.com/wuheng1991/p/5242231.html