一、性能
1、除非确实需要表中的每个列,否则最好别使用*统配符;
检索不需要的列通常会降低检索和应用程序的性能。
二、DESC关键字
DESC关键字只应用到直接位于其前面的列名。如果想在多个列上进行降序排序,必须对每个列指定DESC关键字。
三、BETWEEN关键字
BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。
四、NULL与不匹配、LIKE '%'、AVG()/MAX()/MIN()/SUM()函数、COUNT()
4.1 在通过过滤选择出不具有特定值的行时,可能希望返回具有NULL值的行。未知具有特殊含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。
例如下面的语句,不能匹配到prod_price值为NULL的数据。
select prod_name from products where prod_price != 30;
4.2 WHERE prod_name LIKE '%' 也不能匹配用值NULL作为产品名的行。
4.3 AVG()和MAX()和MIN()和SUM()函数忽略列值为NULL的行。
4.4 COUNT()函数有两种使用方式
使用COUNT(*)对表中行的数目进行计数,不管列中包含的是空值(NULL)还是非空值;
使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
五、OR和AND、IN
SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。当AND和OR同时出现在过滤条件中时,应该使用圆括号明确地分组相应的操作符。
六、MySQL的日期格式
MySQL使用的日期格式。指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd
例如:
SELECT prod_name,prod_price FROM products WHERE (vend_id =1202 OR vend_id = 1003) AND prod_price >=10;
IN操作符完成与OR相同的功能。
IN操作符一般比OR操作符清单执行更快。IN的最大优点是可以包含其他SELECT语句。