參照網頁:http://c.biancheng.net/mysql/mod.html
一、mysql可以進行跨庫查詢
SELECT * FROM mysql.db;
二、[1]MySQL 數值型函數
1 -- [1]MySQL 數值型函數 2 -- 在 MySQL 中絕對值函數 ABS(x) 返回 x 的絕對值。正數的絕對值是其本身,負數的絕對值為其相反數,0 的絕對值是 0。 3 SELECT ABS(-119); 4 -- 在 MySQL 中平方根函數 SQRT(x) 返回非負數 x 的二次方根。負數沒有平方根,返回結果為 NULL 5 SELECT SQRT(4); 6 -- 在 MySQL 中求余函數 MOD(x,y) 返回 x 被 y 除后的余數,MOD() 對於帶有小數部分的數值也起作用,它返回除法運算后的余數。 7 SELECT MOD(15,5),MOD(120,7),MOD(10.5,2); 8 -- 在 MySQL 中取整函數 CEIL(x) 和 CEILING(x) 的意義相同,返回不小於 x 的最小整數值,返回值轉化為一個 BIGINT。 9 SELECT CEIL(2.5),CEIL(-2.5),CEILING(2.5); 10 -- MySQL FLOOR(x) 函數返回小於 x 的最大整數值。 11 SELECT FLOOR(5),FLOOR(5.66),FLOOR(-4),FLOOR(-4.66); 12 -- MySQL RAND() 函數被調用時,可以產生一個在 0 和 1 之間的隨機數。 13 SELECT RAND(),RAND(),RAND(); 14 -- 在 MySQL 中符號函數 SIGN(x) 返回參數的符號,x 的值為負、零和正時返回結果依次為 -1、0 和 1。 15 SELECT SIGN(-90),SIGN(0),SIGN(22); 16 -- MySQL POW(x,y) 函數和 POWER(x,y) 函數用於計算 x 的 y 次方。 17 SELECT POW(2,3),POW(4,-2),POW(100,0),POW(6,-3),POWER(1,2); 18 -- MySQL 中正弦函數 SIN(x) 返回 x 的正弦值,其中 x 為弧度值。 19 SELECT SIN(1),SIN(0.5*PI()); 20 -- MySQL 中反正弦函數 ASIN(x) 返回 x 的反正弦值,若 x 不在 -1 到 1 的范圍之內,則返回 NULL。 21 SELECT ASIN(1),ASIN(0.8414709848078965),ASIN(2); 22 -- MySQL 中余弦函數 COS(x) 返回 x 的余弦值,x 為弧度值。 23 SELECT COS(1),COS(0),COS(PI()); 24 -- MySQL 中反余弦函數 ACOS(x) 。x 值的范圍必須在 -1 和 1 之間,否則返回 NULL 25 SELECT ACOS(2),ACOS(1),ACOS(-1); 26 -- MySQL 中正切函數 TAN(x) 返回 x 的正切值,x 為給定的弧度值。 27 SELECT TAN(1),TAN(0); 28 -- MySQL 中反正切 ATAN(x) 返回 x 的反正切值,正切為 x 的值。 29 SELECT ATAN(1.5574077246549023),ATAN(0); 30 -- MySQL 余切函數 COT(x) 返回 x 的余切值,x 是給定的弧度值。 31 SELECT COT(1);
三、[2]MySQL 字符串函數
1 -- [2]MySQL 字符串函數 2 -- MySQL LENGTH(str) 函數的返回值為字符串的字節長度,使用 uft8(UNICODE 的一種變長字符編碼,又稱萬國碼)編碼字符集時,一個漢字是 3 個字節,一個數字或字母是一個字節。 3 SELECT length('name'),length('數據庫'); 4 -- MySQL 中的 CONCAT(sl,s2,...) 函數返回結果為連接參數產生的字符串,或許有一個或多個參數。 5 -- 若有任何一個參數為 NULL,則返回值為 NULL。若所有參數均為非二進制字符串,則結果為非二進制字符串。若自變量中含有任一二進制字符串,則結果為一個二進制字符串。 6 SELECT CONCAT('mysql','8.0'),CONCAT('mysql',NULL); 7 -- MySQL 中替換字符串函數 INSERT(s1,x,len,s2) 返回字符串 s1,子字符串起始於 x 位置,並且用 len 個字符長的字符串代替 s2。 8 -- 若 x 超過字符串長度,則返回值為原始字符串。假如 len 的長度大於其他字符串的長度,則從位置 x 開始替換。若任何一個參數為 NULL,則返回值為 NULL。 9 SELECT INSERT('Football',2,4,'Play') AS col1,INSERT('Football',-1,4,'Play') AS col2,INSERT('Football',3,20,'Play') AS col3,INSERT('Football',2,5,'Play') col4,INSERT('Football',2,3,'Play') AS col5; 10 -- MySQL 中字母小寫轉換函數 LOWER(str) 可以將字符串 str 中的字母字符全部轉換成小寫。 11 SELECT LOWER('BLUE'),LOWER('Blue'); 12 -- MySQL 中字母大寫轉換函數 UPPER(str) 可以將字符串 str 中的字母字符全部轉換成大寫。 13 SELECT UPPER('green'),UPPER('Green'); 14 -- MySQL 中的 LEFT(s,n) 函數返回字符串 s 最左邊的 n 個字符。 15 SELECT LEFT('MySQL',2); 16 -- MySQL 中的 RIGHT(s,n) 函數返回字符串 s 最右邊的 n 個字符。 17 SELECT RIGHT('MySQL',3); 18 -- MySQL 中刪除空格函數 TRIM(s) 刪除字符串 s 兩側的空格。 19 SELECT '( mobile )',CONCAT('[',TRIM(' mobile '),']'); 20 -- MySQL 中替換函數 REPLACE(s,s1,s2) 使用字符串 s2 替換字符串 s 中所有的字符串 s1。 21 SELECT REPLACE('aaa.mysql.com','a','w'),REPLACE('aaa.mysql.com','a','wan'); 22 -- MySQL 中獲取子串函數 SUBSTRING(s,n,len) 帶有 len 參數的格式,從字符串 s 返回一個長度同 len 字符相同的子字符串,起始於位置 n。 23 -- 也可能對 n 使用一個負值。假若這樣,則子字符串的位置起始於字符串結尾的第 n 個字符,即倒數第 n 個字符,而不是字符串的開頭位置 24 SELECT SUBSTRING('computer',3) AS col1,SUBSTRING('computer',3,4) AS col2,SUBSTRING('computer',-3) AS col3,SUBSTRING('computer',-5,3) AS col4; 25 -- MySQL 中字符串逆序函數 REVERSE(s) 可以將字符串 s 反轉,返回的字符串的順序和 s 字符串的順序相反。 26 SELECT REVERSE('hello');
四、[4]MySQL 日期和時間函數
1 -- [3]MySQL 日期和時間函數 2 -- MySQL 中 CURDATE() 和 CURRENT_DATE() 函數的作用相同,將當前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回,具體格式根據函數用在字符串或數字語境中而定。 3 SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE()+0; 4 -- MySQL 中 CURTIME() 和 CURRENT_TIME() 函數的作用相同,將當前時間以“HH:MM:SS”或“HHMMSS”格式返回,具體格式根據函數用在字符串或數字語境中而定。 5 SELECT CURTIME(),CURRENT_TIME(),CURRENT_TIME()+0; 6 -- MySQL中 NOW() 和 SYSDATE() 函數的作用相同,都是返回當前日期和時間值,格式為“YYYY-MM-DD HH:MM:SS”或“YYYYMMDDHHMMSS”,具體格式根據函數用在字符串或數字語境中而定。 7 SELECT NOW(),SYSDATE(); 8 -- MySQL UNIX_TIMESTAMP(date) 若無參數調用,返回一個無符號整數類型的 UNIX 時間戳('1970-01-01 00:00:00'GMT之后的秒數) 9 -- 若用 date 來調用 UNIX_TIMESTAMP(),它會將參數值以'1970-01-01 00:00:00'GMT后的秒數的形式返回 10 SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),NOW(); 11 -- MySQL FROM_UNIXTIME(date) 函數把 UNIX 時間戳轉換為普通格式的日期時間值,與 UNIX_TIMESTAMP () 函數互為反函數。 12 SELECT FROM_UNIXTIME(1574000367); 13 -- MySQL 中 MONTH(date) 函數返回指定 date 對應的月份,范圍為 1~12。 14 SELECT MONTH(NOW()); 15 -- MySQL 中 MONTHNAME(date) 函數返回日期 date 對應月份的英文全名。 16 SELECT MONTHNAME(NOW()); 17 -- MySQL DAYNAME(date) 函數返回 date 對應的工作日英文名稱,例如 Sunday、Monday 等。 18 SELECT DAYNAME(NOW()); 19 SELECT DAY(NOW()); 20 -- MySQL 中 DAYOFWEEK(d) 函數返回 d 對應的一周中的索引(位置)。1 表示周日,2 表示周一,……,7 表示周六。這些索引值對應於ODBC標准。 21 SELECT DAYOFWEEK(NOW()); 22 -- MySQL WEEK() 函數計算日期 date 是一年中的第幾周。WEEK(date,mode) 函數允許指定星期是否起始於周日或周一,以及返回值的范圍是否為 0~52 或 1~53 23 -- WEEK函數接受兩個參數:date是要獲取周數的日期。mode是一個可選參數,用於確定周數計算的邏輯。 24 -- 如果忽略 mode 參數,默認情況下 WEEK 函數將使用 default_week_format 系統變量的值。要獲取 default_week_format 變量的當前值,請使用 SHOW VARIABLES 25 SHOW VARIABLES LIKE 'default_week_format'; 26 -- 使用 WEEK(date) 函數查詢指定日期是一年中的第幾周。 27 SELECT WEEK('2018-10-25',1),WEEK(NOW()); 28 -- MySQL 中 DAYOFYEAR(d) 函數返回 d 是一年中的第幾天,范圍為 1~366。 29 SELECT DAYOFYEAR(NOW()),DAYOFYEAR('2019-11-17'); 30 -- MySQL 中 DAYOFMONTH(d) 函數返回 d 是一個月中的第幾天,范圍為 1~31。 31 SELECT DAYOFMONTH(NOW()),DAYOFMONTH('2019-11-17'); 32 -- MySQL YEAR() 函數可以從指定日期值中來獲取年份值。 33 -- YEAR() 函數需要接受 date 參數,並返回日期的年份。語法格式如下:YEAR(date); 34 -- YEAR() 函數返回的年份值范圍為 1000 到 9999,如果日期為零,YEAR() 函數返回 0 35 SELECT YEAR(NOW()),YEAR('2019-11'),YEAR('2019-11-10'); 36 -- MySQL TIME_TO_SEC(time) 函數返回將參數 time 轉換為秒數的時間值,轉換公式為“小時 ×3600+ 分鍾 ×60+ 秒”。 37 SELECT TIME_TO_SEC('22:31:10'),TIME_TO_SEC(NOW()); 38 -- MySQL SEC_TO_TIME(seconds) 函數返回將參數 seconds 轉換為小時、分鍾和秒數的時間值。 39 SELECT SEC_TO_TIME(81088); 40 -- MySQL ADDTIME(time,expr) 函數用於執行時間的加法運算。添加 expr 到 time 並返回結果 41 -- 其中:time 是一個時間或日期時間表達式,expr 是一個時間表達式。 42 SELECT ADDTIME('2019-10-31 23:59:59','0:1:1'),ADDTIME('10:30:59','5:10:37'); 43 -- MySQL SUBTIME(time,expr) 函數用於執行時間的減法運算。 44 -- 其中:函數返回 time。expr 表示的值和格式 time 相同。time 是一個時間或日期時間表達式, expr 是一個時間。 45 SELECT SUBTIME('2019-10-31 23:59:59','0:1:1'),SUBTIME('10:30:59','5:12:37'); 46 -- MySQL 中 DATEDIFF(date1,date2) 返回起始時間 date1 和結束時間 date2 之間的天數。date1 和 date2 為日期或 date-and-time 表達式。計算時只用到這些值的日期部分。 47 SELECT DATEDIFF('2019-11-30','2019-11-29') AS col1,DATEDIFF('2019-11-30','2017-11-29') AS col2; 48 -- MySQL 中 WEEKDAY(d) 返回 d 對應的工作日索引。0 表示周一,1 表示周二,……,6 表示周日。 49 SELECT WEEKDAY(NOW()); 50 -- MySQL DATE_ADD(date,INTERVAL expr type) 和 ADDDATE(date,INTERVAL expr type) 兩個函數的作用相同,都是用於執行日期的加運算。 51 -- DATE_ADD() 和 ADDDATE() 函數有兩個參數:date 是 DATE 或 DATETIME 的起始值\INTERVAL expr type是要添加到起始日期值的間隔值 52 SELECT DATE_ADD('2019-10-31 23:59:59',INTERVAL 1 SECOND) AS c1,DATE_ADD('2018-10-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND) as c2; 53 SELECT ADDDATE('2019-10-31 23:59:59',INTERVAL 1 SECOND) AS c1,ADDDATE('2018-10-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND) as c2; 54 -- MySQL DATE_SUB(date,INTERVAL expr type) 和 SUBDATE(date,INTERVAL expr type) 兩個函數作用相同,都是執行日期的減法運算。 55 -- DATE_SUB() 和 SUBDATE() 函數接受兩個參數:date 是 DATE 或 DATETIME 的起始值。\expr 是一個字符串,用於確定從起始日期減去的間隔值。type 是 expr 可解析的間隔單位,例如 DAY,HOUR 等 56 SELECT DATE_SUB('2019-11-01 00:00:00',INTERVAL 1 SECOND) AS c1,DATE_SUB('2019-11-01 00:00:00',INTERVAL '1:1' MINUTE_SECOND) as c2,DATE_SUB('2019-01-02 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND) AS c3; 57 SELECT SUBDATE('2019-11-01 00:00:00',INTERVAL 1 SECOND) AS c1,SUBDATE('2019-11-01 00:00:00',INTERVAL '1:1' MINUTE_SECOND) as c2; 58 -- MySQL 中 DATE_FORMAT(date,format) 函數是根據 format 指定的格式顯示 date 值。 59 -- DATE_FORMAT() 函數接受兩個參數:date:是要格式化的有效日期值\format:是由預定義的說明符組成的格式字符串,每個說明符前面都有一個百分比字符(%)。 60 SELECT DATE_FORMAT(now(),'%m-%c');
五、[4]MySQL 流程控制函數
1 -- MySQL IF 語句允許您根據表達式的某個條件或值結果來執行一組 SQL 語句。 2 -- 要在 MySQL 中形成一個表達式,可以結合文字,變量,運算符,甚至函數來組合。表達式可以返回 TRUE,FALSE 或 NULL,這三個值之一。 3 -- 結構:IF(expr,v1,v2) 4 -- 其中:表達式 expr 得到不同的結果,當 expr 為真是返回 v1 的值,否則返回 v2. 5 SELECT IF(1<2,1,0) c1,IF(1>5,'√','×') c2,IF(STRCMP('abc','ab'),'yes','no') c3; 6 -- MySQL IFNULL 函數是 MySQL 控制流函數之一,它接受兩個參數,如果不是 NULL,則返回第一個參數。 否則,IFNULL 函數返回第二個參數。兩個參數可以是文字值或表達式。 7 -- 結構:IFNULL(v1,v2); 8 -- 其中:如果 v1 不為 NULL,則 IFNULL 函數返回 v1; 否則返回 v2 的結果。 9 SELECT IFNULL(5,8),IFNULL(null,'ok'),IFNULL(sqrt(-8),'FALSE'),SQRT(-8); 10 -- 除了 IF 函數,MySQL 還提供了一個替代的條件語句 CASE。 MySQL CASE 語句使代碼更加可讀和高效。 11 -- CASE 語句有兩種形式:簡單的和可搜索 CASE 語句。 12 -- 簡單的 CASE 語句就是指使用簡單 CASE 語句來檢查表達式的值與一組唯一值的匹配。 13 -- CASE <表達式> 14 -- WHEN <值1> THEN <操作> 15 -- WHEN <值2> THEN <操作> 16 -- ... 17 -- ELSE <操作> 18 -- END CASE; 19 SELECT CASE WEEKDAY(now()) 20 WHEN 0 THEN '星期一' 21 WHEN 1 THEN '星期二' 22 WHEN 2 THEN '星期三' 23 WHEN 3 THEN '星期四' 24 WHEN 4 THEN '星期五' 25 WHEN 5 THEN '星期六' 26 ELSE '星期天' 27 END column1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW()); 28 -- 可搜索的 CASE 語句 29 -- 簡單 CASE 語句僅允許將表達式的值與一組不同的值進行匹配。 為了執行更復雜的匹配,如范圍,則可以使用可搜索 CASE 語句。 可搜索 CASE 語句等同於 IF 語句,但是它的構造更加可讀 30 -- CASE 31 -- WHEN <條件1> THEN <命令> 32 -- WHEN <條件2> THEN <命令> 33 -- ... 34 -- ELSE commands 35 -- END CASE; 36 SELECT CASE 37 WHEN WEEKDAY(now())=0 THEN '星期一' 38 WHEN WEEKDAY(now())=1 THEN '星期二' 39 WHEN WEEKDAY(now())=2 THEN '星期三' 40 WHEN WEEKDAY(now())=3 THEN '星期四' 41 WHEN WEEKDAY(now())=4 THEN '星期五' 42 WHEN WEEKDAY(now())=5 THEN '星期六' 43 WHEN WEEKDAY(now())=6 THEN '星期天' 44 END AS column1,NOW(),WEEKDAY(NOW()),DAYNAME(NOW());