最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中常用函數(shù)之分組,連接查詢功能實(shí)現(xiàn)

 更新時(shí)間:2024年10月18日 09:31:01   作者:ihav2carryon  
在MySQL中,函數(shù)可以進(jìn)行各種數(shù)據(jù)操作,如字符處理、數(shù)學(xué)計(jì)算和日期格式化等,單行函數(shù)處理單條數(shù)據(jù)記錄,而分組函數(shù)則處理多條數(shù)據(jù)記錄,本文給大家介紹Mysql中常用函數(shù)之分組,連接查詢功能實(shí)現(xiàn),感興趣的朋友一起看看吧

函數(shù)

在Mysql中函數(shù)是一組預(yù)定義的指令,用于執(zhí)行特定的操作并返回結(jié)果,可類比Java中的方法.在SQL中函數(shù)根據(jù)其作用范圍和返回結(jié)果方法分為兩大類:單行函數(shù),分組函數(shù)

單行函數(shù)

單行函數(shù)的特點(diǎn)為對(duì)一行數(shù)據(jù)進(jìn)行操作,并只返回一種結(jié)果.單行函數(shù)通常用于處理單個(gè)記錄數(shù)據(jù)

  • 單行函數(shù)又可分為:字符函數(shù),數(shù)學(xué)函數(shù),其他函數(shù),流程控制函數(shù)

字符函數(shù)

  • CHAR_LENGTH(S),LENGTH(S):返回字符串的長度

eg:查詢員工姓名,姓名字?jǐn)?shù)。

SELECT emplyee_name,CHARACTER_LENGTH(emplyee_name) FROM emplyees;
  • CONCAT(S1,S2,…Sn):將兩個(gè)以上的字符串連接

eg:將字符串'aaa','bbb','ccc'進(jìn)行拼接。

SELECT CONCAT('aaa','bbb','ccc');
  • UPPER(),LOWER():對(duì)字符進(jìn)行大小寫轉(zhuǎn)化

eg::查詢員工郵箱,并轉(zhuǎn)為大寫顯示

SELECT UPPER(email) FROM emplyees;
  • substr,substring(S, start, length):提取字符串S從start位置開始,長度為length的字字符串

eg:提取hello world中的hello

SELECT substr('hello world',1,5);`
  • replace(S, old, new): 在字符串S中將所有的old替換為new

eg:查詢員工電話號(hào)碼,要求去除中間的橫線 ’-’

SELECT REPLACE(phone_number, '-', '') FROM emplyees;

數(shù)學(xué)函數(shù)

ROUND(X):對(duì)浮點(diǎn)數(shù)X進(jìn)行四舍五入

eg:查詢員工工資,和其四舍五入的整數(shù)值

SELECT salary,ROUND(salary) FROM employees;

CEIL(X):對(duì)浮點(diǎn)數(shù)X向上取整,即返回≥X的最小整數(shù)

eg:查詢員工工資,并且向上取整

SELECT salary,CEIL(salary) FROM employees;

FLOOR(X):對(duì)浮點(diǎn)數(shù)X向下取整,即返回≤X的最大整數(shù)

eg:查詢員工工資,并且向下取整

SELECT salary,FLOOR(salary) FROM employees;

TRUNCATE(X,length):對(duì)浮點(diǎn)數(shù)的小數(shù)部分進(jìn)行截取→常用于進(jìn)行保留小數(shù)操作

SELECT TRUNCATE(1.9999,2);->1.99
  • MOD(X,Y):對(duì)兩個(gè)數(shù)進(jìn)行區(qū)域操作即X%Y

日期函數(shù)

  • NOW(),SYSDATE():返回當(dāng)前系統(tǒng)日期+時(shí)間
  • CURDATE():返回當(dāng)前系統(tǒng)日期,不包括時(shí)間
  • CURTIME():返回當(dāng)前系統(tǒng)時(shí)間,不包括日期
  • DATE_FORMAT(date,format): 用于格式化日期,date是要格式化的數(shù)據(jù),format是格式化的模式,格式化的通配符號(hào)如下表:
格式符功能
%Y4位年份
%y2位年份
%m月份(01,02,…,11,12)
%c月份(1,2,…,11,12)
%d日(01,02,…)
%H小時(shí)(24小時(shí)制)
%h小時(shí)(12小時(shí)制)
%i分鐘(00,01,…,58,59)
%s秒(00,01,…,58,59)

eg:查詢員工姓名、入職時(shí)間,入職時(shí)間按照xxxx年xx月xx日輸出

SELECT DATE_FORMAT(hiredate,'%Y年%m月%d日') FROM employees;

流程控制函數(shù)

流程控制函數(shù)在SQL中根據(jù)條件選擇性地返回不同的結(jié)果,其允許在查詢過程中實(shí)現(xiàn)條件邏輯

  • IF(expr,true_val,false_val): 若表達(dá)式expr為真,則返回結(jié)果true_val,否則返回false_val的結(jié)果

eg: 如果查詢的年紀(jì)大于18則返回adult,否則返回minor

SELECT age,IF(age>=18,'adult','minor');
  • CASE語法結(jié)構(gòu):類似于switch…case結(jié)構(gòu),用于實(shí)現(xiàn)多支路條件選擇
SELECT exper1,exper2...,
CASE exper1
		 WHEN value1 THEN result1
		 WHEN value2 THEN result2
		 WHEN value3 THEN result3
		 ...
		 ELSE result
END
FROM table_name;

eg:根據(jù)查詢的部門號(hào)返回部門名稱

SELECT department_id
CASE department_id
		 WHEN 1 THEN '經(jīng)理辦公室'
		 WHEN 2 THEN '財(cái)務(wù)部'
		 WHEN 3 THEN '后勤部'
		 ELSE 'unkown'
END AS department_name
FROM departments;
  • 搜索CASE:語法結(jié)構(gòu)與樸素CASE類似,但搜索CASE可根據(jù)多種不同的表達(dá)式條件返回不同值
SELECT exper1,exper2...,
CASE 
		 WHEN condition 1 THEN result1
		 WHEN condition 2 THEN result2
		 ...
		 ELSE result
END 
FROM table_name;

eg:查詢員工姓名以及工資,工資按照一定規(guī)則發(fā)放,入職時(shí)間在2015-01-01之前的員工工資*2,入職時(shí)間在2018-01-01之前的員工工資*1.5,其他不變

SELECT 
employee_name,hiredate,salary 原工資,
CASE
    WHEN hiredate<'2015-01-01' THEN salary*2
		WHEN hiredate<'2018-01-01' THEN salary*1.3
		ELSE salary
END AS 新工資
FROM employees;

分組函數(shù)

分組函數(shù)也稱為聚合函數(shù),用于對(duì)一組值進(jìn)行操作,并返回單個(gè)結(jié)構(gòu)

  • COUNT(*):計(jì)算指定列中非NULL值的數(shù)量,SUM(column):計(jì)算指定列之和,AVG(column):計(jì)算指定列平均數(shù),MAX(colum):取出指定列最大值,MIN(colum):取出指定列最小值

eg:查詢所有員工工資總和、平均值、最大值、最小值、員工個(gè)數(shù);

SELECT SUM(salary),AVG(salary),MAX(salary),MIN(salary),COUNT(*) FROM employees;

分組查詢

分組查詢可根據(jù)某個(gè)或某些列對(duì)數(shù)據(jù)進(jìn)行分組

按單個(gè)字段分組

  • 通過GROUP BY關(guān)鍵字:按指定列進(jìn)行分組
SELECT 列表
FROM 表
[WHERE 篩選條件]
GROUP BY 分組
[ORDER BY 排序]

eg:查詢每個(gè)部門的最高工資

SELECT MAX(salary) 
FROM employees 
GROUP BY department_id;

在分組前進(jìn)行條件篩選

在GROUP BY語句之間使用 WHERE語句對(duì)查詢結(jié)果降序篩選

eg:查詢每個(gè)部門入職時(shí)間在2010-01-01之后,并且工資最高的員工信息

SELECT *
FROM employees
WHERE hiredate >'2010-01-01'
GROUP BY department_id;

在分組之后進(jìn)行條件篩選

通過HAVING語句可以在GRUOP BY語句之后進(jìn)行條件篩選

eg:查詢員工人數(shù)大于120的部門

SELECT *
FROM employees
GROUP BY department_id
HAVING COUNT(*)>120;

按多字段分組

  • 在GRUOP BY語句后可接多個(gè)字段實(shí)現(xiàn)多字段分組

eg:查詢每個(gè)部門,男女員工的平均工資

SELECT department_id,sex,AVG(salary) AS 平均工資
FROM employees
GROUP BY department_id,sex;

連接查詢

連接查詢是SQL中十分重要的知識(shí)點(diǎn),就有”連接不會(huì),通宵也白搭”,連接查詢也稱為多表查詢,用于將兩個(gè)以上的表的數(shù)據(jù)基于某些相關(guān)條件組合在一起,通過連接查詢,可以從表中提取數(shù)據(jù),生成一個(gè)新的結(jié)果集

  • 笛卡爾積現(xiàn)象:假設(shè)有兩個(gè)表,表1有n行數(shù)據(jù),表2有m行數(shù)據(jù),在使用連接查詢時(shí)會(huì)產(chǎn)生n*m條數(shù)據(jù),因此在條件查詢時(shí)需要假設(shè)連接的條件

內(nèi)連接(INNER JOIN)

內(nèi)連接用于返回兩個(gè)表中所有滿足連接條件的所有行數(shù)據(jù),內(nèi)連接可分為:等值連接,非等值連接,自連接

等值連接

等值連接是一種常見的連接方式,其基于兩表中某一列的相等條件進(jìn)行連接

其語法結(jié)構(gòu)如下:

SELECT colum1,colum2,....,
FROM table1 
INNER JOIN table2
ON table1.colum = table.colum;

eg:查詢員工姓名以及所在的部門名稱

SELECT employee_name AS 員工名,department_name AS 部門名
FROM employees e	
INNER JOIN departments d ON 
e.department_id=d.department_id;

非等值連接

非等值連接基于兩表中某一列的不等條件進(jìn)行連接.如大于,小于,不等于等等

語法結(jié)構(gòu):

SELECT colum1,colum2,....,
FROM table1 
INNER JOIN
ON table1.colum <operator> table2.colum;

其中operator可以是>,<,≥,≤,≠,BETWEEN…AND等等;

eg:查詢員工工資及工資等級(jí)

SELECT e.salary,j.grade_level
FROM employees e
INNER JOIN job_grades j
ON e.salary BETWEEN j.lowest_sal AND j.higest_sal;

自連接

自連接是指同一個(gè)表的連接.這種連接通常用于處理表中有層次結(jié)構(gòu)或函數(shù)遞歸關(guān)系的數(shù)據(jù)

eg:查詢員工姓名以及對(duì)應(yīng)的直系領(lǐng)導(dǎo)

SELECT t1.employee_name AS 員工,t2.employee_name AS 領(lǐng)導(dǎo)
FROM employees t1
INNER JOIN employees t2
ON t1.manager_id=t2.employee_id;

外連接

外連接用于返回主表中滿足連接條件的行,同時(shí)保留另一個(gè)表中沒有匹配的行

左/右外連接

  • 左(右)連接顧名思義即根據(jù)表位置區(qū)分主表,即在左連接即左表,右連接即右側(cè)

語法結(jié)構(gòu):

SELECT colum1,colum2...,
FROM table1 [LEFT|RIGHT]
JOIN ON [連接條件];

eg:查詢員工姓名以及所在的部門名稱,沒有部門信息的員工也要查詢出來

SELECT employee_name AS 員工姓名,department_name AS 部門名稱
FROM employees e LEFT
JOIN departments d
ON e.department_id=d.department_id;

到此這篇關(guān)于Mysql中常用函數(shù) 分組,連接查詢 的文章就介紹到這了,更多相關(guān)Mysql分組,連接查詢 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql數(shù)據(jù)庫備份及恢復(fù)命令 mysqldump,source的用法

    mysql數(shù)據(jù)庫備份及恢復(fù)命令 mysqldump,source的用法

    mysql數(shù)據(jù)庫備份及恢復(fù)命令 mysqldump,source的用法,需要的朋友可以參考下。
    2011-02-02
  • windows 環(huán)境下 MySQL 8.0.13 免安裝版配置教程

    windows 環(huán)境下 MySQL 8.0.13 免安裝版配置教程

    這篇文章主要介紹了windows 環(huán)境下 MySQL 8.0.13 免安裝版配置教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-12-12
  • MYSQL初學(xué)者命令行使用指南

    MYSQL初學(xué)者命令行使用指南

    其實(shí)MYSQL的對(duì)數(shù)據(jù)庫的操作與其它的SQL類數(shù)據(jù)庫大同小異,您最好找本將SQL的書看看。我在這里只介紹一些基本的,其實(shí)我也就只懂這些了,呵呵。最好的MYSQL教程還是“晏子“譯的“MYSQL中文參考手冊(cè)“不僅免費(fèi)每個(gè)相關(guān)網(wǎng)站都有下載,而且它是最權(quán)威的。
    2008-06-06
  • MySQL8?密碼強(qiáng)度評(píng)估與配置詳解

    MySQL8?密碼強(qiáng)度評(píng)估與配置詳解

    MySQL8默認(rèn)啟用密碼強(qiáng)度插件,實(shí)施MEDIUM策略(長度8、含數(shù)字/字母/特殊字符),支持動(dòng)態(tài)調(diào)整與配置文件設(shè)置,推薦使用STRONG策略并定期更新密碼以提升安全性,本文給大家介紹MySQL8密碼強(qiáng)度評(píng)估與配置,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • mysql多條數(shù)據(jù)合并成一條的3種常見方法

    mysql多條數(shù)據(jù)合并成一條的3種常見方法

    在實(shí)際的應(yīng)用開發(fā)中,有時(shí)我們需要將多條數(shù)據(jù)合并成一條數(shù)據(jù),以便更好地進(jìn)行數(shù)據(jù)分析和處理,本文就來介紹一下mysql多條數(shù)據(jù)合并成一條的方法,具有一定的參考價(jià)值
    2023-10-10
  • MySQL 5.7升級(jí)8.0報(bào)異常:ONLY_FULL_GROUP_BY的問題解決

    MySQL 5.7升級(jí)8.0報(bào)異常:ONLY_FULL_GROUP_BY的問題解決

    本文主要介紹了MySQL 5.7升級(jí)8.0報(bào)異常的問題解決,主要是ONLY_FULL_GROUP_BY,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • 深入解析MySQL?事務(wù)

    深入解析MySQL?事務(wù)

    這篇文章主要給大家分享的是mysql事務(wù)解析,事務(wù)(transaction)是業(yè)務(wù)邏輯的一個(gè)基本的單元組成,下面文章圍繞mysql事務(wù)的相關(guān)資料展開詳細(xì)內(nèi)容,需要的朋友可以參考一下希望對(duì)大家有所幫助
    2022-01-01
  • Mysql和Oracle創(chuàng)建日期和修改日期設(shè)置為自動(dòng)生成方式

    Mysql和Oracle創(chuàng)建日期和修改日期設(shè)置為自動(dòng)生成方式

    這篇文章主要介紹了Mysql和Oracle創(chuàng)建日期和修改日期設(shè)置為自動(dòng)生成方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • MySql 8.0.11 安裝過程及 Navicat 鏈接時(shí)遇到的問題小結(jié)

    MySql 8.0.11 安裝過程及 Navicat 鏈接時(shí)遇到的問題小結(jié)

    這篇文章主要介紹了MySql 8.0.11 安裝過程及 Navicat 鏈接時(shí)遇到的問題,需要的朋友可以參考下
    2018-06-06
  • MySQL索引優(yōu)化的實(shí)際案例分析

    MySQL索引優(yōu)化的實(shí)際案例分析

    這篇文章主要介紹了MySQL索引優(yōu)化的一些實(shí)際案例,主要是用到Order by desc/asc limit M的方法,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

扶余县| 高密市| 大关县| 承德县| 青龙| 临城县| 年辖:市辖区| 秦皇岛市| 长子县| 崇阳县| 镇沅| 临湘市| 甘谷县| 襄垣县| 繁昌县| 武穴市| 富蕴县| 奉贤区| 固镇县| 沾化县| 嘉峪关市| 印江| 台中市| 麻栗坡县| 临洮县| 武胜县| 大荔县| 吴忠市| 汉沽区| 额济纳旗| 台湾省| 邯郸县| 黎平县| 黄冈市| 依安县| 灵武市| 兴业县| 邹平县| 偏关县| 广宁县| 双城市|