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 列名稱 = 值