MySql的回顧二:排序/常用函數詳細介紹

来源:https://www.cnblogs.com/jxearlier/archive/2020/07/12/13290116.html
-Advertisement-
Play Games

愉快的時光總是過得很快,月亮悠哉游哉爬上了半空遙望著太陽。上一篇中剩餘排序還沒回顧,本篇就暫時先來回顧一下排序吧! 特點: 1.ASC 代表升序,DESC代表降序 2.如果不寫預設就是升序 3.ORDER BY 後面支持單個欄位,多個欄位,表達式,函數,別名 4.ORDER BY 子句一般是放在查詢 ...


愉快的時光總是過得很快,月亮悠哉游哉爬上了半空遙望著太陽。上一篇中剩餘排序還沒回顧,本篇就暫時先來回顧一下排序吧!

特點:
1.ASC 代表升序,DESC代表降序
2.如果不寫預設就是升序
3.ORDER BY 後面支持單個欄位,多個欄位,表達式,函數,別名
4.ORDER BY 子句一般是放在查詢語句的最後面,但LIMIT除外。

#案例1:查詢員工信息,要求工資從高到低排序
SELECT *
FROM employees
ORDER BY salary ASC;

#案例2.查詢部門編號>=90的員工信息,按入職時間的先後排序。【添加篩選條件】

  SELECT *

  FROM employees

  WHERE department_id >= 90

  ORDER BY hiredate ASC;

#案例3.按年薪的高低顯示員工的信息。【按表達式排序】
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
=========================================
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM employees
ORDER BY 年薪 DESC;

#案例4.按姓名的長度顯示員工的姓名和工作。【按函數排序】
SELECT LENGTH('john');
====================================== SELECT LENGTH(last_name) AS 位元組長度,last_name,salary FROM employees ORDER BY 位元組長度 DESC;
======================================= SELECT LENGTH(CONCAT(last_name,first_name)) AS 位元組長度, CONCAT(last_name,first_name) AS 姓名, salary AS 工資 FROM employees ORDER BY 位元組長度 ASC;

#案例5.查詢員工信息,要求先按工資排序,再按員工編號排序。
#【ORDER BY 按多個欄位排序】
SELECT *
FROM employees
ORDER BY salary ASC,employee_id DESC;

在日常的學習中,我們在Mysql資料庫中的查詢會用到一些函數,函數千千萬,今天就來看一看。

#進階4.常見的函數
功能:類似於Java中的方法,
概念:是指將我們實現某個功能的這一組邏輯語句封裝到了方法中,對外暴露了一個公開的名字。
然後回頭再用這些邏輯語句,只需要調用方法名就行了。
好處:
1.隱藏了實現細節。
2.提高代碼的復用性。

調用: SELECT 函數名(實參列表) 【FROM 表】;
特點:
①叫什麼(函數名)
②乾什麼(函數功能)

分類:
1.單行函數
如: CONCAT,LENGTH,IFNULL等
2.分組函數
   功能:做統計使用,又稱為統計函數,聚合函數,簡稱組函數。

接下來會學習到:字元函數,數學函數,日期函數,其他函數,流程式控制制函數(下一篇在介紹)
#一.字元函數
#①length 獲取參數數值的位元組個數
SELECT LENGTH('john'); 

SELECT LENGTH('張三豐haha')

SHOW VARIABLES LIKE '%char%';

#②CONCAT 拼接字元串
SELECT CONCAT(last_name,'_',first_name)
FROM employees;
#③UPPER  轉大寫
#④LOWER  轉小寫
SELECT UPPER('john');
SELECT LOWER('JOHN');

#示例:將姓變大寫,名變小寫,然後拼接。【結論:函數可以嵌套,一個函數的返回值可以做為另一個函數的參數】
SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) AS 姓名
FROM employees;

#⑤SUBSTR     字元串截取兩個通用,重載有四種
#SUBSTRING
#SQL語言中索引從1開始
SUBSTR(‘字元串’,開始位) ,一個參數截取後面全部
SELECT SUBSTR('仁愛為接物之本信義為立業之本',11) AS out_put;

#SUBSTR('字元串',開始位,截取數),從指定索引數,指定字元長度的字元
SELECT SUBSTR('仁愛為接物之本信義為立業之本',1,2) AS out_put;

#案例:姓名中首字母大寫,其他字元小寫,然後用_拼接,顯示出來。
SELECT CONCAT(
SUBSTR(UPPER(last_name),1,1),
'_',
SUBSTR(LOWER(CONCAT(last_name,first_name)),2)
)
FROM employees;

#一.字元函數
#⑥INTSTR  查起始索引,返回子串第一次出現的索引,如果找不到就返回0
#INSTR(字元串,substr)
SELECT INSTR('仁愛為接物之本信義為立業之本','仁愛') AS out_put;

SELECT INSTR('為接物之本信義為立業之本,堯立孝慈仁愛','仁愛') AS out_put;

SELECT INSTR('仁愛為接物之本信義為立業之本','親愛精誠') AS out_put;

#⑦TRIM 去除空格
#去除指定的前後字元
SELECT LENGTH('  親愛精誠  ') AS out_put;
SELECT LENGTH(TRIM('  親愛精誠  ')) AS out_put;

SELECT TRIM('a' FROM 'aaaaa親aaa愛aaaa精誠aaaaaaaaa') AS out_put;
===============================================================
SELECT TRIM('aa' FROM 'aaaaa親aaa愛aaaa精誠aaaaaaaaa') AS out_put;

#⑧LAPD用指定的字元實現左填充指定的長度
SELECT LPAD('親愛精誠','10','a') AS out_put;
SELECT LPAD('親愛精誠','2','a') AS out_put;

#⑨RAPD用指定的字元實現右填充指定的長度
SELECT RPAD('親愛精誠',6,'c') AS tou_pus;
SELECT RPAD('親愛精誠',2,'c') AS tou_pus;

#⑩replaca 替換
SELECT REPLACE('太陽當空照,花兒對我笑','花兒','白雲') AS out_put;

#二.數學函數
#①ROUND 四捨五入,保留小數
SELECT ROUND(1.45);
SELECT ROUND(1.65);
SELECT ROUND(1.578,2)

#②CAIL向上取整,返回大於等於該參數的最小整數
SELECT CEIL(1.003);
SELECT CEIL(1.000);
SELECT CEIL(-1.003);

#③FLOOR向下取整,返回<=該參數的最大整數
SELECT FLOOR(9.99);
SELECT FLOOR(9.23);
ELECT FLOOR(-9.99);
SSELECT FLOOR(-9.23);

#④TRUNCATE 截斷 (小數,位數)
SELECT TRUNCATE(1.65,1);
SELECT TRUNCATE(1.759,1);

#⑤MOD 取餘
被除數如果是正,則結果為正,被除數如果為負,那結果為負
SELECT MOD(10,3);
SELECT MOD(-10,3);
SELECT MOD(7,-3);
SELECT 10%3;

#三.日期函數
#NOW 返回當前系統日期+時間
SELECT NOW();

#CURDATE 返回當前系統日期,不包含時間
SELECT CURDATE();

#CURTIME  返回當前的時間,不包含日期
SELECT CURTIME();

#可以獲取指定的部分,年,月,日,小時,分鐘,秒
YEAR()
SELECT YEAR(NOW()) AS 年;
SELECT YEAR('1998-1-1') AS 年;
SELECT YEAR(hiredate) 年 FROM employees;

SELECT MONTH(NOW()) 月;
SELECT MONTHNAME(NOW()) 月英文;

STR_TO_DATE 將日期格式的字元轉換成指定格式的日期
DATE_FORMAT  將日期轉換成字元
SELECT STR_TO_DATE('07-12-2020','%m-%d-%Y');
SELECT DATE_FORMAT('2020/07/12','%Y年%m月%d日');

#查詢入職日期為1992-4-3的員工信息。上面理想輸入,下麵為實際輸入。
SELECT *
FROM employees
WHERE hiredate = '1992-4-3';
================================================== SELECT
* FROM employees WHERE hiredate = STR_TO_DATE('4-3 1992','%c-%d %Y');

#案例:查詢有獎金的員工名和入職日期(XX月/XX日 XX年)
SELECT last_name,DATE_FORMAT(hiredate,'%m月/%d日 %Y年')
FROM employees
WHERE commission_pct IS NOT NULL;

#四.其他函數
SELECT VERSION();   #查看版本號
SELECT DATABASE();  #查看當前的資料庫
SELECT USER();      #查看當前的用戶

         日常學習中的函數就暫時介紹到這裡,各位看官可能有疑問你的流程式控制制函數能?

這emmmm.........!!!精彩回顧且聽下篇慢慢到來。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 頭文件添加方法:工程 屬性 配置屬性 c/c++ 常規 附加包含目錄(Additional Include Directories):加上頭文件存放目錄。註意:(1)路徑必須指向頭文件所在的子文件夾,而不能直到父文件夾就結束(2)每個路徑不需要加上雙引號,輸入了之後,vs會自動加上雙引號,如果自己加 ...
  • 動態引入技術的設計,對我們來說非常重要。 同時也說明動態語言的使用對我們來說也是非常重要。 沒有動態語言的支撐,有些想法可能不容易實現,或者有替代方案,可能會花更大的代價。 前端開發框架我們規劃設計了 apis文件夾 這個文件夾是用來存放所有的api定義的 規範要求 所有的api定義都是名動詞 同時 ...
  • 最近GRPC很火,感覺整RPC不用GRPC都快跟不上時髦了。 gRPC設計 gRPC是一種與語言無關的高性能遠程過程調用 (RPC) 框架。剛好需要使用一個的RPC應用系統,自然而然就盯上了它,但是它真能夠解決所有問題嗎?不見得,先看看他的優點: gRPC的主要優點: 現代高性能輕量級 RPC 框架 ...
  • 瞭解到了OrchardCore主要由兩個中間件(ModularTenantContainerMiddleware和ModularTenantRouterMiddleware)構成,下麵開始瞭解ModularTenantContainerMiddleware中間件第一行代碼。 瞭解asp.net co ...
  • 什麼是設計模式 ​ 要瞭解設計模式,首先得清楚什麼是模式。什麼是模式?模式即解決一類問題的方法論,簡單得來說,就是將解決某類問題的方法歸納總結到理論高度,就形成了模式。 ​ 設計模式就是將代碼設計經驗歸納總結到理論高度而形成的。其目的就在於:1)可重用代碼,2)讓代碼更容易為他人理解,3)保證代碼的 ...
  • [ 導讀] 本文通過閱讀內核代碼,來梳理一下I2C子系統的整體視圖。在開發I2C設備驅動程式時,往往缺乏對於系統整體的認識,導致沒有一個清晰的思路。所以從高層級來分析一下I2C系統的設計思路,將有助於設計調試具體的驅動程式。 I2C/SMBUS基礎 I2C是一種晶元間通訊匯流排技術,最早由Philip ...
  • 容器是一種清理級、可移植、自包含的軟體打包技術,使應用程式可以在幾乎任何地方以相同的方式運行。 ...
  • 目前CSDN,博客園,簡書同步發表中,更多精彩歡迎訪問我的gitee pages Hadoop簡介和安裝及偽分散式 大數據概念 大數據概論 大數據(Big Data): 指無法在一定時間範圍內用常規軟體工具進行捕捉,管理和處理的數據集合,是需要新處理模式才能具有更強的決策力,洞察發現力和流程優化能力 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...