mysql常用函數及sql

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='測試表' ;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章