1、coalesce:返回參數中的第一個非空表達式(從左向右依次類推);
SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1);
SELECT COALESCE(NULL, NULL, NULL, NULL);
2、ifnull: 函數用於判斷第一個表達式是否爲 NULL,如果爲 NULL 則返回第二個參數的值,如果不爲 NULL 則返回第一個參數的值。
SELECT IFNULL(NULL, "RUNOOB");
3、查詢字符串id的最大值
select max(CAST(id AS SIGNED)) from table_name
4、日期格式化
DATE_FORMAT(date,format):date 參數是合法的日期。format 規定日期/時間的輸出格式。
5、字符串轉日期
STR_TO_DATE(字符串,日期格式)
6、時間轉字符串
DATE_FORMAT(日期,格式字符串)
說明符 | 說明 |
---|---|
%a | 工作日的縮寫名稱(Sun~Sat) |
%b | 月份的縮寫名稱(Jan…Dec) |
%c | 月份,數字形式(0~12) |
%D | 帶有英語後綴的該月日期(0th, 2st, 3nd,…) |
%d | 該月日期,數字形式(00~31) |
%e | 該月日期,數字形式((0~31) |
%f | 微秒(000000 …999999) |
%H | 以 2 位數表示 24 小時(00~23) |
%h, %I | 以 2 位數表示 12 小時(01~12) |
%i | 分鐘,數字形式(00~59) |
%j | —年中的天數(001~366) |
%k | 以 24 小時(0~23)表示 |
%l | 以12小時(1~12)表示 |
%M | 月份名稱(January~December) |
%m | 月份,數字形式(00~12) |
%p | 上午(AM) 或下午(PM) |
%r | 時間,12小時制(小時 (hh): 分鐘 (mm) : 秒數 (ss) 後加 AM 或 PM) |
%S, %s | 以 2 位數形式表示秒(00~59) |
%T | 時間,24 小時制(小時 (hh): 分鐘 (mm): 秒數 (ss)) |
%U | 周(00~53),其中週日爲每週的第一天 |
%u | 周(00~53),其中週一爲每週的第一天 |
%V | 周(01~53),其中週日爲每週的第一天,和%X同時使用 |
%v | 周(01~53),其中週一爲每週的第一天,和%x同時使用 |
%W | 星期標識(週日、週一、週二…週六) |
%w | —週中的每日(0= 週日…6= 週六) |
%X | 該周的年份,其中週日爲每週的第一天,數字形式,4 位數,和%V同時使用 |
%x | 該周的年份,其中週一爲每週的第一天,數字形式,4位數,和%v同時使用 |
%Y | 4 位數形式表示年份 |
%y | 2 位數形式表示年份 |
%% | %一個文字字符 |
7、建立索引10:
ALTER TABLE dm_alarm_info ADD INDEX idx_alarm_time(alarm_time);
8、在指定字段後增加字段並添加默認值
alter table robot_msg add column status char(1) DEFAULT '0' COMMENT '機器人狀態;0:斷開;1:連接' after substation_id
9、查詢重複數大於2條的數據
select
dept
from
test
group
by
dept
having
count
(*) >2;
select acct_no, prod_code,count(acct_no),count(prod_code) from cust_trans_log group by acct_no ,prod_code having count(acct_no)>2 and count(prod_code) >2
10、查詢某一字段相同值的個數
select camera_type,count(camera_type)as count from t_device_visible where del_flg='0' and `status`='1' group by camera_type having (count(camera_type)>0);
11、
floor函數:返回小於等於該值的最大整數.
select floor(1.23),floor(-1.23);
12、字符串截取
mysql字符串截取總結:left()、right()、substring()、substring_index()
left(被截取字符串, 截取長度)
right(被截取字符串, 截取長度)
substring(str, pos),即:substring(被截取字符串, 從第幾位開始截取)
substring(str, pos, length),即:substring(被截取字符串,從第幾位開始截取,截取長度)
13、字符串轉數字,並查詢最大值
select max(CAST(id AS SIGNED)) from luneng_device_info
14、批量更新
UPDATE device_plan.dm_device_monitor d
SET d.monitor_device_name = (
SELECT
t.camera_name
FROM
(
SELECT
t1.camera_name,
t1.id
FROM
visiable.t_device_visible t1
) t
WHERE t.id = d.monitor_device_id and d.monitor_device_type='1'
) where d.monitor_device_type='1'
UPDATE luneng_device_info t
SET lenovo_device_id = (
SELECT
t1.lenovo_device_id
FROM
( SELECT t2.lenovo_device_id, t2.link_id FROM luneng_device_info_bak t2 ) t1
WHERE
t1.link_id = t.link_id
)
WHERE
t.lenovo_device_id IS NULL
15、建表語句
create table test(
id int PRIMARY key AUTO_INCREMENT COMMENT '主鍵',
del_flg char(1) DEFAULT '0' COMMENT '刪除標誌,默認爲零',
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',
modify_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間'
)CHARSET=utf8 COMMENT='測試表' ;