简单查询语句的分析

来源:互联网 发布:java自学书籍 编辑:程序博客网 时间:2024/04/30 05:05

查询语句格式:

SELECT [DISTINCT] {column1,column2,…}
FROM tablename WHERE {conditions}
GROUP BY {conditions}
ORDER BY {expressions} [ASC/DESC];

注:distinct 会触发排序

 

SELECT 是用来选择字段,一般不推荐使用"*"来表示全部字段,而是逐一列出字段,特别是在其他开发应用中,如果程序中的查询语句用"*"号表示,则这个表的结构改变或字段的顺序发生改变等都会对程序产生很大的影响。

FROM 是表的来源

WHERE 子句用来选择符合条件的记录。
between ... and ... 表示结果在这之间,between and 是一个闭区间;
!=,<>,^=  这三个都可以表示不等于;
in (va1,val2,...) 判断结果是否在这个集合中存在; in  等价于:=any
注意顺序会影响执行效率,查询时是所有符合的字段逐个和下where中的条件进行对比,对比完后将所有符合的和下一个where条件进行对比,where中的字段按前后顺序是被放在堆栈里面的,因此放在最前面的会被放在栈底,也就是最后一个过滤,所以,一次性能排除的不符合的数据量越大,则放在越后面。
like '...' 表示字符串通配查询,'%'表示0 或多个字符, '_' 表示一个字符;
注意字符大小写敏感知道转义的用法:like ‘S/_%’ escape ‘/’
... and ... 表示只有两个条件同时满足;
... or ... 表示条件只要满足其中之一就可以;
all ... 是要求都满足条件;
not ..... 可以与以上的条件产生相反的效果; not
in  等价于: <>all
注意空值的影响,空值与任何值比较结果都为空!
... is null 用来判断值是否为空。
ORDER BY 子句
ORDER BY 子句使得SQL 在显示查询结果时将各返回行按顺序排列,返回行的
排列顺序由ORDER BY 子句指定的表达式的值确定。
ASC(默认,升序)
DESC(降序)
order by 目标列名(别名) 排序顺序(不写则默认为升序)