mysql基础语句

/*
由于目前mysql工具多而且方便,例如 SQLyog,所以其实建数据库建表(甚至增删改查)只需在这类工具中操作即可,这样还可以把错误降到最低。
只有遇到较为棘手或者编程中才会用到以下语句不然就尽量采用mysql工具来操作防止出错。

*/

#建立数据库aaa,aaa有个xg_role表,设计表xg_role如下:

 


#mysql在windows中字段名称不区分大小写
#mysql在linux,unix中字段名称要区分的大小写
#mysql中"#"是的单行注释,而"/* 注释内容 */"是多行注释。

/*
*/ INSERT INTO xg_role (NAME,remark) VALUES('赵六','赵云之弟'); INSERT INTO xg_role SET NAME="王五",remark="超人甲" INSERT INTO xg_role VALUES('李四11',"路人"); #该写法除非表中只有两个字段否则是会报错滴 /* 删 delete from 表 [where] [group] [order] [limit] */ DELETE FROM xg_role WHERE id = 11; /* 改 Update 表 set 字段=值 , 字段=值 [where] [group] [order] [limit] */ UPDATE xg_role SET NAME = "jewave" WHERE id = 8 /**/ SELECT * FROM xg_role; SELECT COUNT(*) FROM xg_role; SELECT AVG(id) FROM xg_role; SELECT * FROM xg_role WHERE NAME LIKE '%r' SELECT * FROM xg_role WHERE NAME NOT LIKE'r%' SELECT * FROM xg_role ORDER BY id DESC; #(正序)asc 由于默认就是正序一般省略 SELECT * FROM xg_role GROUP BY NAME; /*查询不重复项*/ SELECT * FROM xg_role WHERE id>=3 AND id<>5 #取出id大于等于3且id不等于5的所有行 SELECT * FROM xg_role WHERE NAME LIKE '%r' LIMIT 0,2 /*从查询结果截取前两条类似数学中的(0,2]*/ /* 截取 xg_role表中:id小于9且name不重复且按id倒序的前5条数据。 */ SELECT * FROM xg_role WHERE id<9 GROUP BY NAME ORDER BY id DESC LIMIT 5;

php+mysql的开发中,经常看到在写sql语句时,有时在字段和表的名称上加上反单引号(`),有时不加也没问题。那么它到底有什么用处?

其实如果按照规则给表命名或者字段命名,加不加反单引号意义不大,可是如果表名或者字段名称用的是保留字符,那就必须要加上反单引号,
不然会出现语法错误
 
这里特别提醒的是,尤其在php框架开发中要注意这一点,要进行相关的程序处理,因为框架开发之后使用的人很多,很有可能别人使用时,数据库或者表名使用了保留字
 
php中数据库接口的开发代码如何更加健康
  1. insert和update语句中,字段和表名必须有反单引号(`)
  2. 字段值必须进行转义处理  (mysql_real_escape_string)
格式化sql操作参数,字段添加标识符反单引号,值进行转义处理
实例:写一个函数,函数的参数是数组,数组的键后期最为sql语句中的字段,数组的值做为后期字段的值
public function formatField($vars){
    $data = array();       //格式化的数据
    foreach($vars as $k=>$v){
        $data['fields'][]="`".$k."`";    //字段添加标识符,存储到新的数组
        $v = mysql_real_escape_string($v,$link);  //值转义处理,当然很多程序在这里也使用了addslashes
        $data['values'][] = is_numeric($v)?$v:"\"$v\"";      //is_numeric()判断是否为数字
    }
    
    return $data;
}
posted @ 2016-07-08 17:50  web全端小屋  阅读(191)  评论(0编辑  收藏  举报