1.SQL中的子句
作为限定条件的where
和like关键字类似的starting with
select A from table where A like ('Ca%')
select A from table where A starting with ('Ca')
按顺序排列:ORDER BY 后跟排序字段
默认为ASC升序,降序为DESC。联合使用时第一字段为优先排序。
GROUP BY的使用(跟在WHERE后面)
如表:ID 雇员 花费 备注
查询雇员的总花费及用途数
select ID, SUM(花费),COUNT(雇员) from table group by 雇员
当要求分组结果返回多个数值时不能再在SELECT子句中使用除分组列以外的列,将会出错。
HAVING子句(一般写在末尾和GROUP BY同时使用)
汇总函数AVG()不能使用在WHERE中
select TEAM,AVG(SALARY) FROM table GROUP BY TEAM HAVING AVG(SALARY) <38000;返回平均工资少于38000的组
HAVING子句可多个条件,也可以对select中没出现过的字段汇总,IN操作符也可以在HAVING中使用
WHERE和HAVING一般不同时使用,因为WHERE已经先过滤掉了数据。
2.表的联合
等值联合
不使用WHERE的联合是笛卡尔联合,对每一行进行交叉联合,所以需要找到相同的标识符进行联合,如:
select T1.A,T2.B from T1,T2 where T1.ID=T2.ID;
如果是多个表的联合。就需要多个表间相同标识的联合,通常根据给定的条件返回行数最少的表作为驱动表,也就是基表,如上面的T1。
不等值联合
如sekct T1.A,T2.B from T1,T2 where T1.ID>T2.ID; 这种联合不常用
内部联合和外部联合
内部联合:没有用where,而是from 表1 JOIN 表2 ON 表2.B=54
外部右联合:from 表1 RIGHT OUTER JOIN 表2 ON 表2.B=54 ,返回右边表集里的全部记录,如果表2.B<>54,则左边补空值。
外部左联合:如果基表数小于联合表,结果和内部联合一样。
也可以使用+表示外部联合,如from T1,T2 where T1.ID=T2.ID(+) 则T2行将全部显示
表的自我联合
用于检查数据是否一致或者重复,如编号不能重复,若重复,检查:
select T1.编号,T1.描述,T2.编号,T2.描述 from T T1,T T2 where T1.编号=T2.编号 and T1.描述<>T2.描述。