1.任何SQL在开始写时,先写最终要实现的结果,比如说,最终是要更新数据,则开始就要写好update语句以及外层的where条件,然后再根据需要,进行层层深入;
2.在写复杂的SQL时,可以先用固定的数值来代替查询子句等实现基本的功能,然后将子句分割实现需要的功能后,直接用已经写好的子句替换掉刚开始时相对应的数值;
3.复杂的SQL语句编写时,一定要层层实现调试后再组合在一起进行最终调试,否则很难调试.
以下示例主要涉及到简单的SELECT查询,DISTINCT关键字,GROUP
----查询2012年,type为月的不重复的部门,使用关键字:distinct
select distinct DepartmentName from
其中,WHERE子句中同一个字段如果有一个或者多个值但不需要同时满足时,使用OR连接。
----查询2012年,type为月的不重复的部门,使用关键字:GROUP BY
select DepartmentName from DepartmentForm where (time = '2012-01-01' OR time = '2012-02-01' OR time = '2012-03-01' OR time = '2012-04-01' OR time = '2012-05-01' OR time = '2012-06-01' OR time = '2012-07-01' OR time = '2012-08-01' OR time = '2012-09-01' OR time = '2012-10-01' OR time = '2012-11-01' OR time = '2012-12-01') AND type = '月' Group BY DepartmentName;
----查询2012年,type为月的不重复的部门,使用关键字:GROUP BY;并且使用GROUP BY 时,所要检索的字段名必须在GROUP BY之后出现,否则只能已聚集函数的形式出现,不然则出错。
select DepartmentName, Expense, sum(CommunicationExpense) from DepartmentForm where (time = '2012-01-01' OR time = '2012-02-01' OR time = '2012-03-01' OR time = '2012-04-01' OR time = '2012-05-01' OR time = '2012-06-01' OR time = '2012-07-01' OR time = '2012-08-01' OR time = '2012-09-01' OR time = '2012-10-01' OR time = '2012-11-01' OR time = '2012-12-01') AND type = '月' Group BY DepartmentName, Expense;
----添加数据时,直接通过SELECT语句来查询出要添加的数据形成虚拟表,再将SELECT语句直接写在表字段的后面。需要注意的是,此处的SELECT语句中,如果要检索的字段是特殊的数据类型,如date型等,在书写时应在数据前面加上相应的字段类型.
insert into PersonForm(Time, Name, DepartmentName) select Date '2012-01-01' as Time, '王五' as Name, DepartmentName FROM DepartmentForm;