MySQL查詢——select

来源:https://www.cnblogs.com/aitiknowledge/archive/2019/09/03/11455419.html
-Advertisement-
Play Games

SELECT select的完整語法: 上述如果都有:執行順序from->where->group by->having->order by->limit->select 列的結果顯示 1、去掉重覆的數據:distinct(針對於記錄而言,不是針對於列的數據而言) 2、運算符:+、-、*、/、%(只 ...


SELECT

  select的完整語法:

select col1, col2,...          # 業務查詢的欄位
from table_name            # 選取的哪張表
[where single_conditions]           # single_conditions條件表達式,個體約束(條件)
[[group by column_name1]      # column_name1以哪個欄位名分組
[having group_conditions]]     # group_conditionds條件表達式,分組約束
[order by column_name2]      # column_name2以哪個欄位進行排序
[limit N,M]                         # 執行完之後,跳過N條記錄,選取M條記錄

  上述如果都有:執行順序from->where->group by->having->order by->limit->select

  列的結果顯示  

    1、去掉重覆的數據:distinct(針對於記錄而言,不是針對於列的數據而言)

# 查看員工的職位
select title
from s_emp;

select distinct title 
from s_emp;

# 每個部門下有哪些職位
select dept_id,title 
from s_emp;

select distinct dept_id,title 
from s_emp;# 聯合唯一

    2、運算符:+、-、*、/、%(只列舉一個)

# 查看員工年薪
select salary*12 
from s_emp;
select id,last_name,salary*12 as year_salary 
from s_emp;

# 查看員工當前年薪以及月薪提高100美元後的年薪
select id,last_name,salary*12 old_year_salary,(salary+100)*12 as new_year_salary
from s_emp;

    3、列與列的數據拼接:concat(column_name1, "拼接符", column_name2[, "拼接符"])

# 查看員工基本信息(編號,全名,工資)
select id,concat(first_name,' ',last_name) as name,salary 
from s_emp;

    4、將null值轉換為特定值:ifnull(column_name, 特定值)

# 查看員工工資(沒有工資的顯示為0)
select id,last_name,ifnull(salary,0.00) as salary 
from s_emp;

 

  where conditions

    MySQL的運算符概念及作用:

    主要是根據conditions的條件查詢結果集

    1、比較運算符:=、<、>、>=、<=、!=、<=>(同is null)、<>(同!=)

# 查看擁有白領工資的員工有哪些(12002000select id,last_name,salary 
from s_emp 
where salary>1200 and salary<2000;

# 查看有工資的員工信息
select id,last_name,salary 
from s_emp 
where salary is not null;

select id,last_name,salary 
from s_emp
where salary <> null;# erro

# 查看沒有工資的員工的信息
select id,last_name,salary 
from s_emp 
where salary is null;

select id,last_name,salary 
from s_emp 
where salary <=> null;

select id,last_name,salary 
from s_emp 
where salary != 1200;# null數據未取到

    2、邏輯運算符:and(&&)、or(||)、not

查看41號部門的員工信息並且工資大於1200或者43號部門工資小於2000的員工信息
select id,last_name,salary
from s_emp
where (dept_id=41 and salary>1200) or (dept_id=43 and salary<2000);

    3、在XXX區間:between ... and ...  不在XXX區間:not between ... and ...

查看擁有白領工資的員工有哪些(12002000select id,last_name,salary from s_emp where salary>1200 and salary<2000;
# 下麵是閉區間
select id,last_name,salary 
from s_emp
where salary between 1199 and 2001;        #[1199,2001]

# 不在區間內
select id,last_name,salary 
from s_emp 
where salary not between 1200 and 2000;    #(-&1200or2000+&

    4、在集合中: in ()    不在集合中:not in ()

# 查看41,42,43號部門的員工有哪些
select id,last_name,salary 
from s_emp
where dept_id=41 and dept_id=42 and dept_id=43;
# 和上面的等價
select id,last_name,salary 
from s_emp
where dept_id in(41,42,43);

# 查看不是41,42,43號部門的員工有哪些
select id,last_name,salary 
from s_emp
where dept_id!=41 and dept_id!=42 and dept_id!=43;
# 和上面的等價
select id,last_name,salary 
from s_emp
where dept_id not in(41,42,43)

    6、模糊匹配:like :%:0到多個字元匹配;_:1個字元匹配;[ ]:範圍內的匹配的單個字元;[^ ]:範圍外的匹配的單個字元;   不模糊匹配: not

# 查看職位以VP開頭的員工有哪些
select id,last_name,salary 
from s_emp
where title like 'VP%';

select id,last_name,title 
from s_emp
where title not like 'VP%';

# 查看員工信息,名字以C開頭,並且字元數不小於5個字元
select id,last_name
from s_emp
where last_name like 'C____%';
#查看客戶信息,客戶名稱中包含單引號的客戶
select id,name from s_cutomer
where name like "%'%";

  group by column_name

    涉及的組函數:計數count()、最小值min()、最大值max()、平均值avg()、總和sum()

# 查看員工總數
select count(*) as count_num 
from s_emp;   # 預設分組(以表格為單元)
select count(id) as count_num 
from s_emp;

# 統計有工資的員工個數
select count(salary) as count_num 
from s_emp;
# 查看每個部門的員工個數
select dept_id,count(*) as nums 
from s_emp
group by dept_id;

# 進行分組後,select的結果只能是組的概念,不允許出現個體概念(last_name)
select dept_id,count(*) as nums,last_name 
from s_emp
group by dept_id;   # errro

# 預設以逗號拼接 group_concat(),這個函數很重要
select dept_id,count(*) as nums,group_concat(last_name) 
from s_emp
group by dept_id;

# 查看每個部門薪資大於1200的員工總數(信息)
select dept_id,count(*) nums,group_concat(last_name),group_concat(salary)
from s_emp
where salary > 1200
group by dept_id;

# 查看部門平均薪資
select avg(salary) 
from s_emp 
group by dept_id;

# 查看部門平均薪資>2000員工總數
select dept_id,count(*) nums,avg(salary)
from s_emp
group by dept_id
having avg(salary)>2000;

# 查看每個部門員工總數,部門平均薪資大於1000,並且每個員工的薪資>900
select dept_id,count(*),avg(salary)
from s_emp
where salary >900
group by dept_id
having avg(salary)>1000

    排序order by:升序ASC;逆序DESC

# 查看員工的員工ID,名字,月薪,部門ID,部門ID進行升序排序,相同部門的員工在一起按照薪資從高到低排序

select id,last_name,dept_id,salary
from s_emp
order by dept_id asc,salary desc;

# 如果進行排序的時候,需要對欄位先進行轉碼,後排序
select id,last_name,dept_id,salary
from s_emp
order by conver(dept_id asc,salary using gbk2312) desc;

 

    限制記錄數目:limit N,M  跳過N條記錄,查詢M條記錄

# 跳過3條記錄,查詢5條記錄,這一般用於分頁比較合理
# 擦昏地當前頁數和記錄數
select id,last_name,dept_id,salary
from s_emp
order by dept_id asc,salary desc
limit 3, 5


# 當數據表的記錄上萬條,比如超過1萬條記錄
# 建議使用子查詢進行分頁,這樣效率高點,因為子查詢是在索引文件(所以你文件比較小,數據文件比較大,處理上就比較慢)上執行的
select id, last_name, dept_id, salary
from s_emp
where id >=(
    select id
    from s_emp
    order by id
    limit 10000, 1
)
limit 10;

 


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

-Advertisement-
Play Games
更多相關文章
  • 直接上碼供參考 關鍵點說明: 1.清理windows訪問記錄,包含在任務欄上右鍵出現最近訪問的程式的記錄%UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations%UserProfile%\AppData\ ...
  • 借鑒:https://www.cnblogs.com/shijingjing07/p/9301590.html ...
  • u8 key_return = NO_KEY; u8 key_tmp = NO_KEY; u8 key_lock = 0;//按鍵自鎖標誌,自己加的 if (key_val == NO_KEY || key_val != key_ctl.key_val) //按鍵沒有按下或者本次按鍵與上一次按鍵不相 ...
  • 條件判斷: [ condition ],condition前後都有空格 常用的判斷條件: 1)兩個整數的比較 = 字元串比較 -lt 小於 -le 小於等於 -eq 等於 -gt 大於 -ge 大於等於 -ne 不等於 2)按照文件許可權進行判斷 -r有讀的許可權 -w有寫的許可權 -x有執行的許可權 3) ...
  • 一、數據挖掘 中文分詞 • 一段文字不僅僅在於字面上是什麼,還在於怎麼切分和理解。• 例如: – 阿三炒飯店: – 阿三 / 炒飯 / 店 阿三 / 炒 / 飯店• 和英文不同,中文詞之間沒有空格,所以實現中文搜索引擎,比英文多了一項分詞的任務。• 如果沒有中文分詞會出現: – 搜索“達內”,會出現 ...
  • 公司一SQL Server鏡像發生了故障轉移(主備切換),檢查SQL Server鏡像發生主備切換的原因,在錯誤日誌中發現下麵錯誤: Date 2019/8/31 14:09:17 Log SQL Server (Archive #4 - 2019/9/1 0:00:00) Source spid3... ...
  • redis是key-value的數據,所以每個數據都是一個鍵值對。 數據操作的全部命令,可以查看中文網站。 鍵的類型是字元串 值的類型分為五種: 字元串string 哈希hash 列表list 集合set 有序集合zset 字元串string 哈希hash 列表list 集合set 有序集合zset ...
  • 1.獨立模式(standalone|local) nothing! 本地文件系統。 不需要啟用單獨進程。 2.pesudo(偽分佈模式) 等同於完全分散式,只有一個節點。 SSH: //(Socket), //public + private /server : sshd ps -Af | grep ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...