常用sql操作函数
DISTINCT
检索每个唯一的输出记录
SELECT DISTINCT (需要进行的字段) FROM table_name;
TIMESTAMPDIFF 参数是要表示结果的单位,以及两个日期之间的差值。以下查询为每只宠物显示出生日期,当前日期和年龄(以岁为单位)。一个 别名(age
)是用来制造最终输出列标签更有意义
SELECT name, birth, CURDATE(),
TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
FROM pet
#YEAR 以年为单位
#birth 所需计算的表字段
#COURDATE 当前时间
表字段 IS NOT NULL
使用表字段IS NOT NULL而不是,表字段 <> NULL因为它 NULL是一个特殊值,无法使用常规比较运算符进行比较
SELECT name, birth, YEAR(birth) as year FROM pet
# year 得到哪一年
SELECT name, birth, MONTH(birth) as monthFROM pet
# MONTH 得到几月
SELECT name, birth, DAYOFMONTH(birth) as time from pet
# time 得到几号
#使您可以将时间间隔添加到给定的日期。如果您将的值加上一个月CURDATE(),则使用提取月份部分MONTH(),结果将生成要寻找生日的月份
SELECT name, birth FROM pet
WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
#完成相同任务的另一种方法是1在使用模函数(MOD)将月份值包装0为当前值之后,将其添加 到当前月份之后的下个月12:
SELECT name, birth FROM pet
WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
#MONTH()返回介于1和之间的数字12。并 MOD(something,12)返回介于0和之间的数字11。因此加法必须在之后 MOD(),否则我们将从11月(11)到1月(1)
#你不能使用算术比较操作符,如 =, <或 <>以测试NULL。为了自己演示这一点,请尝试以下查询:
mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
#由于与的任何算术比较结果 NULL也为NULL,因此您无法从此类比较中获得任何有意义的结果。
#在MySQL中,0或NULL 表示false,其他表示true。布尔运算的默认真值是1。
#特殊处理NULL是为什么在上面,有必要使用death IS NOT NULL来代替确定哪些动物不再存活death <>NULL。
#在中,两个NULL值被视为相等 GROUP BY。
#执行时ORDER BY,如果执行, NULL则首先显示值,如果执行 ORDER BY ... ASC,则最后显示 ORDER BY ... DESC。
#使用时的一个常见错误NULL是假定无法在定义为的列中插入零或空字符串NOT NULL,但事实并非如此。这些实际上是值,而 NULL意味着“ 没有值。”您可以使用这个测试很轻松地 IS [NOT] NULL,
mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;
+-----------+---------------+------------+----------------+
| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |
+-----------+---------------+------------+----------------+
| 0 | 1 | 0 | 1 |
MAX 列的最大值
SELECT MAX(表字段) AS 别名 FROM table_name;