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
  • 移動開發(一):使用.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...