AS
将列名从 count(*) 修改为 total
select count(*) as total from users where status=0
将列名 username 改为 uname, password 改为 upwd
select username as uname, password as upwd from users
BETWEEN AND
说明:BETWEEN 筛选的是 >=value1且 <=value2的数据
NOT BETWEEN筛选的是 <value1或 >value2的数据
SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2
CASE WHEN
case when语句能在SQL语句中放入判断逻辑,类似Java中学习的if else语句。
(1)简单函数:如果字段等于预期值,则返回结果1,否则返回结果2,end代表语句结束。
case 字段 when 预期值 then 结果1 else 结果2 end
例如在表中sex为男改为女,为女改为男,代码展示:
select name,(case sex when '男' then '女' else '男' end)sex from student;
(2)条件表达式:当条件判断为真是返回result1,否则返回result2,如果没有else则返回null。case 和 end之间可以有多个when ....... then ......else 语句,end表示case语句结束。语法结构:
case
when 条件判断 than result1 else result2
end
例如员工薪水等级,代码展示:
select tb_emp.name,(casewhen salary between 0 and 3000 then 1when salary between 3001 and 5000 then 2when salary between 5001 and 8000 then 3when salary between 8001 and 10000 then 4when salary between 10001 and 15000 then 5when salary between 15001 and 20000 then 6when salary between 20001 and 25000 then 7when salary between 25001 and 30000 then 8end
)grade from tb_emp;
(3)综合使用:case when 和聚合函数使用,能实现更加复杂的统计功能
例如:统计有多少个男生和女生以及男女生青年人数的有几个
select
sum(case when stu_sex='男' then 1 else 0 end) as '男生人数',
sum(case when stu_sex='女' then 1 else 0 end) as '女生人数',
sum(case when stu_age<20 and stu_sex='男' then 1 else 0 end) as '男生青年人数',
sum(case when stu_age<20 and stu_sex='女' then 1 else 0 end) as '女生青年人数'
from student1;
COUNT
1)count(*)所有行进行统计,包含值为null的行和重复项。
2)count(column)会对指定列具有的行数进行统计,除去值为NULL的行。
3)count(1)与count(*) 的效果是一样的。
4) count(DISTINCT column)会去除重复项。
CURRENT_DATE()
#获取当前日期
SELECT CURRENT_DATE() AS newDate; #2019-05-20
#当前日期加1天(其他天数方法一样)
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) AS newDate; #2019-05-21
#当前日期减1天
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY) AS newDate; #2019-05-19
#当前日期加1个月
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH) AS newDate; #2019-06-20
#当前日期减1个月
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 MONTH) AS newDate; #2019-04-20
#当前日期加1年
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL 1 YEAR) AS newDate; #2020-05-20
#当前日期减1年
SELECT DATE_ADD(CURRENT_DATE(), INTERVAL -1 YEAR) AS newDate; #2018-05-20
#指定日期加1天(可将DAY换为MONTH,YEAR来实现加1个月,1年)
SELECT DATE_ADD('2019-05-02', INTERVAL 1 DAY) AS newDate; #2019-05-03
#指定日期减1天(可将DAY换为MONTH,YEAR来实现减1个月,1年)
SELECT DATE_ADD('2019-05-02', INTERVAL -1 DAY) AS newDate; #2019-05-01
#当前时间添加1小时10分钟10秒钟
SELECT DATE_ADD(NOW(), INTERVAL '1:10:10' HOUR_SECOND) AS newTime; #2019-05-20 15:59:32
#指定时间添加1小时10分钟10秒钟
SELECT DATE_ADD('2019-04-17 2:00:00', INTERVAL '1:10:10' HOUR_SECOND) AS newTime; #2019-04-17 03:10:10
DATE_FORMAT
语法:DATE_FORMAT(date,format)
date 参数是合法的日期。format 规定日期/时间的输出格式。
可以使用的格式有:
# 1:星期一 2:星期二 3:星期三 4:星期四 5:星期五 6:星期六 0:星期日
SELECT DATE_FORMAT('2019-05-20','%w') AS weekDay FROM DUAL; #1
# 2:星期一 3:星期二 4:星期三 5:星期四 6:星期五 7:星期六 1:星期日
SELECT DAYOFWEEK('2019-05-20') AS weekDay; #2
# 0:星期一 1:星期二 2:星期三 3:星期四 4:星期五 5:星期六 6:星期日
SELECT WEEKDAY('2019-05-20') AS weekDay; #0
#可将具体日期换为CURRENT_DATE()函数取当前日期,如下:
SELECT DATE_FORMAT(CURRENT_DATE(),'%w') AS weekDay FROM DUAL;SELECT DAYOFWEEK(CURRENT_DATE()) AS weekDay;SELECT WEEKDAY(CURRENT_DATE()) AS weekDay;
DELETE
从指定的表中 根据WHERE条件删除对应的数据行
DELETE FROM 表名称 WHERE 列名称 = 值