Mysql--select基礎查詢

来源:https://www.cnblogs.com/rootcz/archive/2018/08/19/9499785.html
-Advertisement-
Play Games

基本語法:select 查詢列表 from 表名 查詢列表可以是表中欄位、常量值、表達式、函數;查詢的結果是一個虛擬的表格。 註意: ①sql語言大小寫不敏感 ②關鍵字不能分行或略寫 ③一般書寫方式為換行縮進 一、基礎查詢 1.經典查詢(查詢表中的欄位) ①查詢單個欄位 select 欄位1 fro ...


基本語法:select 查詢列表 from 表名
查詢列表可以是表中欄位、常量值、表達式、函數;查詢的結果是一個虛擬的表格。
註意:
①sql語言大小寫不敏感
②關鍵字不能分行或略寫
③一般書寫方式為換行縮進
一、基礎查詢
1.經典查詢(查詢表中的欄位)
①查詢單個欄位
select 欄位1 from 表1;
②查詢多個欄位
select 欄位1,欄位2, . . .欄位n from表1;
③查詢所有欄位(用“”表示所有欄位或者用枚舉所有的欄位)
Select
from 表1;
Select 欄位1,欄位2,欄位3,...,欄位last from 表1;
2.查詢常量值
select 520;
select ‘chenzui’;
3.查詢表達式
select 100/20;
4.查詢函數
select version();
5.起別名
①方式1用as
Select 100/20 as “結果”;
②方式2 用” ”空格
Select 100/20 結果;
6.去重distinct
SELECT DISTINCT department_id FROM employees;
7.mysql中+的功能(運算符)
①兩個都是數值型,做加法運算。Select 200+100;返回300。
②一個是字元型一個是數值型,將字元型轉換為數值型,若能轉換成功,則繼續運算,轉換失敗,將字元型轉換為0,繼續運算。
Select “120”+120;返回240;select “120aaa”+120;返回240;select “aaa120”+120;返回120。
③一方是null,結果返回null。select null+100;返回null。
二、條件查詢
語法:select 查詢列表 from 表名 where 篩序條件;
1.按條件表達式篩選
簡單條件運算符:>、<、=、 !=、<>、>=、<=
案例1 查詢工資大於1000的員工信息
Select * from employees where salary>1000;
案例2 查詢部門編號等於80,的員工名字和部門id
Select last_name,department_id from employees where department_id = 80;
2.邏輯表達式篩選
邏輯運算符
作用:用於連接條件表達式 && || ! and or not
and 或 && 兩個條件都為true,結果為true,否者返回false
or 或 || 只有一個條件為true,結果為true,否者為false
not 或 ! 連接條件本身為true,結果為false,否者為true
案例 查詢工資在10000-15000的員工名字和工資
Select last_name , salary from employees where salary>10000 and salary<15000;
3.模糊查詢
like、between and 、in、is null
①like 一般和通配符搭配使用
通配符:‘%’任意多個,包括0個,’_’任意單個。
案例1 查詢名字中包含”c”的員工信息
select * from employees where last_name like “%c%”;
案例2 查詢名字以a開頭第4個字母為z的員工信息
select * from employees where last_name like “a__z%”;
案例3 查詢第二個字元為””的員工名字
select last_name from employees where laset_name like “
$_%”;
②between and 可以使sql語句更簡潔,包含臨界值,兩個臨界值不能調換順序
案例1 查詢員工編號在150-200之間的員工信息
select * from employees where employee_id between 150 and 120;
select * from employees where employee_id >=150 and employee_id <=120;
③in 判斷某段的值是否屬於in列表中的某一項,提高了代碼的簡潔度,in列表的值必須一致或者相容,in列表不支持通配符。
案例1 獲取工種編號為aaa、bbb、ccc中一個的員工信息
select * from employees where job_id in(“aaa”,’bbb’,’’ccc);
select * from employees where job_id=”aaa” or job_id = “bbb” or job_id = “ccc”;
④=或者<>不能判斷null值,is null和is not null 可以用於判斷null值
案例1 查詢沒有獎金的員工信息
select * from employees where commission_pct is null;
⑤<=>安全等於
查詢工資為10000的員工名字
Select last_name from employees where salary <=>10000;
⑥is null 和 <=>
is null:只可以判斷null值,可讀性較高
<=>:既可以判斷null值,又可以判斷普通數值,可讀性較差。
三、常見函數
1、單行函數
①字元函數:length(獲取位元組個數)、concat(拼接字元串)、upper(轉化成大寫)、lower(轉換為小寫)、substring、instr(返回字元串第一次出現的索引,不存在返回0)、trim(去除前後空格)、lpad(用指定字元實現左填充)、rpad(用指定的字元實現右填充)、replace(替換)

②數學函數
Round():四捨五入
Ceil():向上取整
Floor():向下取整
Truncate():截斷
Mod():取餘,mod(a,b) : a-a/bb

③日期函數
NOW():返回當前日期加時間
Curdate():返回當前日期
Curtime():返回當前時間
Str_to_date(字元類型,日期類型): 將字元類型轉換為日期類型
Date_format(日期類型,字元類型): 將日期類型轉換為字元類型;

④流程式控制制函數
if函數:其效果類似於if else

Case函數用法一[類似於switch用法]
語法:
Case 要判斷的欄位或者表達式
When 常量1 then 要顯示的值1或語句1;
When 常量2 then 要顯示的值2或語句2;
When 常量3 then 要顯示的值3或語句3;

Else 要顯示的值n或者語句n;
End

Case函數用法二[類似於多重if]
語法:
Case
When 條件1 then 要顯示的值1或語句1
When 條件2 then 要顯示的值2或語句2

Else 要顯示的值n或語句n
End

⑤其他函數
SELECT VERSION();
SELECT DATABASE();
SELECT USER();
2、分組函數(聚合函數、統計函數、組函數)
分類:
求和(sum)、avg(平均值)、max(最大值)、min(最小值)、count(計算個數)
特點:
①sum和avg一般處理數值型,max、min、count又可以處理任何類型
②分組函數都忽略null值
③可以和distinct搭配實現去重運算
④count(
)用於統計數量
⑤和分組函數一同查詢的欄位要求是group by後的欄位
案例1
select sum(salary) avg(salary) min(salary) max(salary) count(salary) from employees;
案例2 函數的適用性
SELECT SUM(last_name) ,AVG(last_name) FROM employees; 返回值是0,0
案例3 忽略null值
SELECT
SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;
案例4 和distinct結合使用 會自動去重
SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
案例5 count()的使用
SELECT COUNT(salary) FROM employees;
SELECT COUNT(
) FROM employees;
SELECT COUNT(1) FROM employees;
案例6 和分組函數一同查詢的欄位有限制
SELECT AVG(salary),employee_id FROM employees;
四、排序查詢
語法:select 查詢列表 from 表名 [where 篩選條件] order by 排序的欄位或者表達式
1.排序函數的用法
①asc表示升序,可以省略,desc是降序
②order by可以支持單個欄位、別名、表達式、函數、多個欄位
③order by 子句在查詢語句最後面,除了limit子句
2.案例
select * from employees order by salary desc;
select * from employees where department_id >= 100 order by department_id;
SELECT last_name , salary12(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary12(1+IFNULL(commission_pct,0));
SELECT last_name , salary12(1+IFNULL(commission_pct,0))AS "年薪" FROM employees ORDER BY '年薪';
SELECT department_id,AVG(salary) FROM employees GROUP BY department_id ORDER BY AVG(salary);
SELECT last_name,salary FROM employees ORDER BY last_name DESC ,salary ASC;
五、group by
語法:select 欄位1,欄位2,… from 表名 [where 篩選條件] group by 欄位1,欄位2,..[having 篩選條件 limit 分頁條件];
查詢列表必須來自分組的欄位,保證邏輯的一致性。
使用方式:
①group by 和聚合函數配合使用得時候,分組後計算
Select avg(salary),last_name from employees group by department_id;
②與having配合使用得時候,分組後過濾;
Select department_id,min(salary) from employees group by department_id having salary>3000;
③group by中聚合函數同時和非聚合函數一起使用時,非聚合函數取第一個匹配到時的欄位內容。


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

-Advertisement-
Play Games
更多相關文章
  • CentOS 7 vi編輯命令 用vi打開一個yum文件 vi /usr/bin/yum 按 i 鍵後 進入insert模式,進入insert模式後才能進行修改 修改完成後 按esc鍵進入command模式, 然後:wq 保存文件並退出vi(註意先冒號) 保存命令 按ESC鍵 跳到命令模式,然後: ...
  • 本文稍作改動,添加部分說明,原文鏈接:https://www.cnblogs.com/wcwen1990/p/7630545.html 本文基於vmware workstations進行CentOS7安裝過程展示,關於vmware workstations安裝配置本人這裡不再介紹,基本過程相當於wi ...
  • Docker介紹 Docker是指容器化技術,用於支持創建和實驗Linux Container。藉助Docker,你可以將容器當做重量輕、模塊化的虛擬機來使用,同時,你還將獲得高度的靈活性,從而實現對容器的高效創建、部署和複製,並能將其從一個環境順利遷移至另外一個環境。 Docker官方網站: "h ...
  • 新的一周,新的一天又來了!話不多說我們直接進入今天的系統安裝吧!這次是Linux系統的第八期了,這款系統是可以當做家庭用途使用,非常強大的一款開發源操作系統。 安裝Fedora系統 系統映像文件下載 Fedora 28正式版下載地址:https://www.xp510.com/xiazai/os/L ...
  • 遠程訪問PPTP VPN 實驗環境準備 這裡網路地址是模擬用的與實際情況不符合,因為實際情況外網地址不會是私網地址. 系統 | 外部網路地址 | 企業內部網路地址 | 角色 | | | RHEL7 | | 172.16.10.20 | 內網FTP伺服器 CentOS7 | 192.168.56.5 ...
  • @@@@首先開啟系統,出現下圖界面以後,按e鍵。 @@@使用下放下箭頭找到圖中的位置,在下圖中 修改 ro 為 rw , 添加init=sysroot/bin/sh @@@按Ctrl + x 進入單用戶模式,並 輸入 chroot /sysroot,進入系統命令,然後輸入 passwd root進行 ...
  • 書籍方面的推薦就不做介紹,免得別人說我有廣告嫌疑。大家可以直接上百度,書籍和視頻遍地都是,Linux這些方面的知識都是自己在學習視頻和看書的總結,內容上可能會不完美。如果有更多的見解,歡迎直接評論。 書籍方面的推薦就不做介紹,免得別人說我有廣告嫌疑。大家可以直接上百度,書籍和視頻遍地都是,Linux ...
  • 最近在學Win32的編程,看的是《Windows程式設計第5版》一書,這本書是臺灣人翻譯的,有些譯法和大陸不一樣,書中還有一些錯誤的地方,很多時候需要中英文對照閱讀,下載請點擊 https://download.csdn.net/download/u013238941/10611720 好了,下麵開 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...