MYSQL复习整理(一)

1.NULL

在创建表时,表设计人员可以指定其中的列是否可以不包含值。在一个列不包含值时,称其为包含空值NULL。

 

ex.     SELECT   cust_id   FROM  customers   WHERE  cust_email  IS   NULL;

 2.正则表达式

LIKE 与  REGEXP

 

 3.日期和时间处理函数

常用日期和时间处理函数:

 

 4. COUNT()函数

  •    使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL) 还是非空值。
  •   使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

5.GROUT BY

  •    GROUT BY子句可以包含任意数目的列。这使得能对分组进行嵌套,为数据分组提供更细致的控制。
  • 如果在GROUP BY 子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都一起计算(所以不能从个别的列取回数据)。
  • GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式,不能使用别名。
  • 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。‘
  • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
  • GROUP BY 子句必须出现在WHERE子句之后,ORDER BY子句之前。

 

6.WHERE 和HAVING 的差别

WHERE 在数据分组前进行过滤,HAVING在数据分组后进行过滤。这是一个重要的区别,WHERE排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。

ex.     SELECT vend_id, COUNT(*) AS num_prods FROM products WHERE       prod_price>=10 GROUP BY vend_id HAVING COUNT(*) >=2;

7.分组和排序

虽然GROUP BY 和ORDER BY 经常完成相同的工作,但它们是非常不同的。如下表所示:

 

 

留下评论