对查询分组后,使用聚集函数COUNT(*),以统计每个分组的行数目。星号表示对分组的所有列计数。
当需要过滤结果集中的数据group by语句在where语句之后运行,所以用having过滤条件。
AVG()返回集合中的平均值;SUM()返回集合中的所有值的和;COUNT()返回集合中的个数;MIN()返回集合中的最小值;MAX()返回集合中的最大值。
当使用not in或<>运算符比较时,必须确保值集中不包含null值,(使用WHERE``` IS NOT NULL)否则将返回空集。
对于隐式分组,当SELECT语句中只包含聚集函数时,无需指定group by语句。当不只有聚集函数时,应指定group by语句。、
EXISTS语句用于简单查询子查询能否返回至少一行,而子查询一般只需用select 1或select *语句输入。
合理运用select语句和集合语句可以建立一个临时结果集。再将其运用到复合查询中。
date_add()函数将括号中的数字加上日期。
例:date_add('2009-01-01', INTERVAL (ones.num +```) DAY)
SET AUTOCOMMIT = 0(Mysql关闭自动提交单个语句模式),一旦离开了自动提交模式,所有的SQL命令都会发生在同一个事务的范围,并且必须显示地对事务进行提交或者回滚。(每次登陆时关闭自动提交模式,并养成在事务内运行SQL语句的习惯)MYSQL使用start transaction启动事务commit结束事务,rollback回滚事务。
对于mysql和sql server,数据库的修改,无论是增加一个新表或新索引还是删除某表中的一列,都不能被回滚。
创建事务保存点,SAVEPOINT name,并且回滚ROLLBACK TO SAVEPOINT name;COMMIT;