1. 程式人生 > >sql語句的幾個常用函式總結

sql語句的幾個常用函式總結

結構化查詢語言(Structured Query Language,簡稱SQL語句)從單個函式的使用上來看,較為簡單,但是當表與表巢狀、幾個函式組合使用,即可實現強大的資料查詢功能,能從資料庫中快速便捷地獲取需要的資訊。
本文總結了sql語句中常用的5個函式,主要包含join連線函式、limit函式(MySQL)、group by分組函式、取餘取整函式和like模糊匹配函式。

1.join連線

表連線分為內連線(INNER JOIN)、外連線(LEFT JOIN、RIGHT JOIN),在sql中如果直接使用join連線表,預設為inner join.

連線方式 解釋
INNER JOIN 兩邊表同時有對應的資料,即任何一邊缺失資料就不顯示。
LEFT JOIN 讀取左邊資料表的全部資料,即便右邊表無對應資料。
RIGHT JOIN 讀取右邊資料表的全部資料,即便左邊表無對應資料。

示例:有員工部門表dept_emp(emp_no,dept_no),員工資訊表employees,兩張表都具有to_date屬性表示當前日期。另外還有一張部門資訊表departments(dept_no,dept_name)
(1)查詢所有員工的姓名和部門編號,暫未劃分到部門的不顯示部門。對employees表進行left join操作。還可再次利用left join查詢到部門名稱。
select e.last_name,e.first_name,d.dept_no,dp.dept_name from employees e left join dept_emp d on e.emp_no = d.emp_noleft join departments dp on dp.dept_no = d.dept_no;


(2)加入限制條件–當前日期to_date=’2018-3-25’,所有員工的姓名和部門編號。注意連線表時,**需要對連線的表dept_emp,employees表分別進行當前日期的限制**dept_emp.to_date=2018-3-25’ and employees.to_date=2018-3-25’.
select e.last_name,e.first_name,d.dept_no from employees e left join dept_emp d on e.emp_no = d.emp_no and d.to_date=2018-3-25' and e.to_date=2018-3-25'.;

2.limit函式

limit函式是MySQL資料庫提供的用來限制讀取記錄的條數的函式,常用語句為select .. from ..where …limit n,m
limit n,m 查詢的是從n+1條開始的m條資料
limit 0,1 讀取第一條資料
SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,2;讀取按hire_date倒序排序後的第3,4條資料
若使用Oracle資料庫,想獲取特定條數的資料記錄需要在原有sql語句上進行改進,通過行號row_number來實現特定條數的記錄的查詢。
SELECT * FROM
(SELECT A.*,rownum rn
FROM (SELECT * FROM employees ORDER BY hire_date DESC) A
WHERE rownum > 2)
WHERE rn < 5

附加一點日期排序的知識,對日期型資料,倒序排序結果為2018-4-8,2018-3-8,…
max(hire_date) 可表示最晚的一天2018-4-8

3.group by 分組函式

group by 是按表物件中的某一屬性或者屬性構成的表示式進行分組。通常的查詢語句為
select…from…where…group by A having…
具體的應用示例如下:
titles表(emp_no,title,from_date,to_date)
(1)查詢表titles中數量不小於2的title、title出現個數
select title,count(title) as t from titles group by title having count(title)>=2
(2)升級版,加入限制,要求查詢表titles中數量不小於2的title、title出現個數時忽略重複的emp_no.
利用distinct關鍵字對重複的emp_no欄位進行篩選後求取按title欄位分組後title對應的數目。
值得注意的是,having的操作物件是group by+屬性之後的查詢得到的title,count(distinct(emp_no))構成的表。
select title,count(distinct(emp_no)) as t from titles group by title having t>=2
(3)group by A,B表示相同欄位A,B的分為一組
group by from_date,to_date 表示具有相同from_date,to_date取值的記錄分為一組。

4.取餘、取整函式

(1) %取餘、mod函式取餘
牛客網中sql3.7.9的取餘表達為%,A%B取餘,表示求A除以B後的餘數。SQK SERVER資料庫中採用的是%.
Oracle中有mod取餘函式,mod(A,B)求取A除以B的餘數
(2)取整函式
floor(x):取小於等於x的最大整數,地板取整函式
ceiling(x):取大於等於x的最小整數,天花板取整函式

5.like函式

like函式後接萬用字元,進行模糊匹配,常用語句為:select .. from .. where A like 萬用字元
值得注意的是,sql語句通常不區分大小寫,但萬用字元中的字元區分大小寫
以下萬用字元經常單獨或組合使用:

萬用字元 含義 用法示例
% 百分號表示替代一個或多個字元 ‘Ne%’查詢屬性A的取值以Ne開頭的記錄,’%Ne%’查詢屬性A的取值包含’Ne’的記錄
_ 下劃線表示僅替代一個字元 ‘_ne’查詢A的屬性值第一個字元後是ne的記錄,’z_z_h’查詢A屬性取值第一、三、五個字元為z,z,h,第二、四個字元任意取值的記錄
[charlist] 字元列中的任何單一字元 [charlist]常與%組合使用,’[zh]%’表示匹配屬性A取值以z、h開頭的記錄
[!charlist] 不在字元列中的任何單一字元 ‘[!zh]%’表示匹配屬性A取值以z、h開頭的記錄

相關推薦

sql語句常用函式總結

結構化查詢語言(Structured Query Language,簡稱SQL語句)從單個函式的使用上來看,較為簡單,但是當表與表巢狀、幾個函式組合使用,即可實現強大的資料查詢功能,能從資料庫中快速便捷地獲取需要的資訊。 本文總結了sql語句中常用的5個函式,

SQL Server 常用函式的使用

這幾個函式其實網上資料很多,但是為了方便自己的記憶,我還是決定還是寫一下,都說好記性不如爛筆頭,所以還是多寫一下。cast()函式作用主要是:把一種型別轉化成另外一種型別如把字串型別轉換成時間型別:SELECT CAST( '2011-10-2' AS datetime),再或者把數值型轉換成字串型別:SEL

sql常用函式

  Oracle:(百度百科查詢整理) 1,ROUND()函式為四捨五入函式    Round(number,[decimals]    number 待做四捨五入處理的數值    decimals 指明需保留小數點後面的位數

Java中常用總結

一. System: 1.     首先是System類,因為從一開始從接觸java起,我們就無時無刻都在接觸它,經常用它來向螢幕,向控制檯列印輸出一些資訊,System.out.println(“hello world”);這個只是在控制檯輸出一條資訊“hello wor

XPATH的常用函式

1.contains (): //div[contains(@id,'in')] ,表示選擇id中包含有’in’的div節點 2.text():由於一個節點的文字值不屬於屬性,比如“<a clas

TensorFlow中用於評估模型在訓練集和測試集上的準確度的常用函式說明

1. tf.argmax() | tf.argmin() tf.argmax(input=tensor,dimention=axis) 找到給定的張量tensor中在指定軸axis上的最大值/最小值的位置。 a=tf.get_variable(nam

總結常用sql例子

1, 利用case  when  then    end 進行資料分類統計。      用法1:select  case when type=1  then '數學'  when type=2 the

python通過一個語句分析常用函數和概念

完全 1.4 優點 難解 實現 word 開篇 iter 執行 前言 過年也沒完全閑著,每天用一點點時間學點東西,本文為大家介紹幾個python操作的細節,包含all、any、for in等操作,以及介紹我解決問題的思路。 一、開篇 先從我看到的一個簡單的語句開始。 tex

PHP常用函式總結(180多)

PHP常用函式總結 數學函式 1.abs(): 求絕對值 $abs = abs(-4.2); //4.2 數字絕對值數字 2.ceil(): 進一法取整 echo ceil(9.999); // 10 浮點數進一取整 3.floor(): 捨去法取整     e

CENTOS: Docker常用語句

這裡記載幾個我用得最多的命令。 一)docker ps 看看有多少個正著執行的容器。沒成功的不再裡面。如果要看不成功的,就要在ps後加上-a docker ps -a 二)刪除一個容器。 docker rm 容器別稱 -f後面那個-f是強制的意思。測試的時候,我是不是

sql server儲存過程 以及常用案例

Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。 Ø 儲存過程的概念     儲存過程Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資

AS400 DB2 SQL常用函式總結

說明,本文所述,全部是針對使用SQL語句操作DB2,而不是在AS400的綠屏下使用AS400的命令操作Library、object、menber 一、AS400 DB2 SQL語法基礎特別說明 1、AS400 DB2 SQL庫、表、欄位名都不區分大小寫

maven學習總結常用的maven外掛

我們使用maven做一些日常的工作開發的時候,無非是想利用這個工具帶來的一些便利。比如它帶來的依賴管理,方便我們打包和部署執行。這裡幾個常見的外掛就是和這些工程中常用的步驟相關。 maven-compile-plugin     這個外掛就如同名字所顯示的這樣,用來編譯原始碼的。最開始碰到這個外掛是在於有

SQL簡單的函式:LEFT JOIN;COUNT遇上GROUP BY

概要:函式LEFT JOIN與COUNT/GROUP BY的使用,以及為AND篩選限制條件的合適位置 SQL: SELECT DISTINCT att.attributes_templates_id,att.attributes_templates_name,COUN

防止sql注入的簡單函式應用

幾個簡單的函式有:  trim ( string $str [, string $charlist = " \t\n\r\0\x0B" ] ) 去除字串首尾處的空白字元(或者其他字元) 此函式返回字

Oracle 常用通用函式

1、NVL() 格式:NVL(value,string1) 如果value為null,則把該值替換為string1,如果不為空,還是該值本身; 用法:select nvl(123,9) from dual;--結果為:123            select nvl(nu

常用的C查詢分割字串函式

搜尋字串函式 strstr原型: extern char *strstr (char *__haystack, const char *__needle)  所在標頭檔案:#include <s

PHP執行系統命令的有常用的函數

exe 自動 文件操作 nal 外部命令 中間 ring 打開 lcm PHP執行系統命令的有幾個常用的函數,如有:system函數、exec函數、popen函數,passthru,shell_exec函數他們都可以執行系統命令,不過前提時必須系統給了權限了哦。 syste

miniui常用知識點匯總

簡單 去除 spa 自帶 超過 表格 繪制 val wro 1.在表格中去除系統自帶的序列號,請看代碼: function allAndBrief(id) { if(id==1){ grid.set({

hadoop的常用命令

hadoop官方文檔:http://hadoop.apache.org/docs/r1.2.1/file_system_shell.html1、登錄主節點,切換到hdfs用戶[[email protected]/* */~]#su - hdfs2、列出當前目錄有哪些子目錄,有哪些文件[[email