zoukankan      html  css  js  c++  java
  • 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查询要特别的小心。

  • 相关阅读:
    mysql 初始密码 设置
    jsp基础知识(基本的语法及原理)
    hdu 2473 Junk-Mail Filter (并查集之点的删除)
    java版本的学生管理系统
    java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
    Java学习之约瑟夫环的两中处理方法
    hdu 3367(Pseudoforest ) (最大生成树)
    hdu 1561 The more, The Better (树上背包)
    Nginx + Lua 搭建网站WAF防火墙
    长连接和短连接
  • 原文地址:https://www.cnblogs.com/wuheng1991/p/5242231.html
Copyright © 2011-2022 走看看