第五天MYSQL

来源:https://www.cnblogs.com/jane315/archive/2020/05/08/12853503.html
-Advertisement-
Play Games

2020 5/9 十九、分頁查詢 應用場景:當要顯示的數據,一頁顯示不全,需要分頁提交sql請求 語法:(執行順序已標出) SELECT 查詢列表 ⑦每執行一步都會生成一個虛擬的結果集 FROM 表名 ① [join type join 表2 ② on 連接條件 ③ where 篩選條件 ④ gro ...


2020 5/9

 

十九、分頁查詢

應用場景:當要顯示的數據,一頁顯示不全,需要分頁提交sql請求

語法:(執行順序已標出)

 

       SELECT 查詢列表                      ⑦每執行一步都會生成一個虛擬的結果集

       FROM  表名                               ①

       [join type join 表2                       ②

  on 連接條件                               ③

  where 篩選條件                         ④

  group by 分組欄位                     ⑤

  having 分組後的篩選條件          ⑥

  order by 排序的字端]                 ⑧

  limit offet,size;                            ⑨

(offset->要顯示條目的索引(起始索引從0開始),size->顯示的條數)

 

特點:

①      limit語句放在查詢語句的最後面

②      若不加offset(索引),則預設起始索引為0

③     公式:要顯示的頁數pags,每頁的條數size

    select 查詢列表 from 表名 limit (page-1)*size,size;

 

#案例1:查詢前五條員工信息

 

SELECT * FROM employees LIMIT 0,5;

SELECT * FROM employees LIMIT 5;

 

#案例2:查詢第11條-第25條

SELECT * FROM employees LIMIT 10,15;

 

 

#案例3:查詢有獎金的員工信息,並且工資較高的前十名顯示出來

SELECT

       *

FROM

       employees

WHERE

       commission_pct IS NOT NULL

ORDER BY

       salary DESC

LIMIT 0,

 10;

 

 

二十、聯合查詢

關鍵字:union(聯合、合併)->將多條查詢結果合併成一個結果

語法:

查詢語句1

union

查詢語句2

union

……

 

應用場景:要查詢的結果來自於多個表,且多個表中沒有直接的連接關係,但查詢的信息一致時

特點:

①     要求多條語句查詢的查詢列數是一致的!

②     要求多條查詢語句的查詢的每一列的類型和順序最好一致

③     union關鍵字預設是帶去重的,如果使用union all可以包含重覆項

 

#查詢:查詢部門編號大於90或郵箱中包含a的員工信息

 

SELECT * FROM employees WHERE department_id>90 OR email LIKE '%a%';

-------------------------------------------------------------

SELECT * FROM employees WHERE department_id >90

UNION

SELECT * FROM employees WHERE email LIKE '%a%';

以上兩種放式等價!!!

 

#查詢女神表中姓名中有‘周’字的女神名以及男朋友ID和男朋友表中名字有‘鹿’的男生的姓名與ID

SELECT NAME,boyfriend_id FROM beauty WHERE name LIKE '%周%'

UNION

SELECT boyname,id FROM boys WHERE boyname LIKE '%鹿%';

 

 

 

二十一、DML語言(數據操縱語言)

分類:

插入:insert

修改:update

刪除:delete

 

#插入語句

語法:(方式一》經典插入)

INSERT INTO FROM 表名(列名、列名…)  VALUES(值1、值2…);

 

#1.插入的值類型要與列的類型一致或相容(可以隱式的轉換)

INSERT INTO beauty(id,name,borndate,phone,photo,boyfriend_id)

VALUES(13,'菜菜','2000-12-28','000000',null,0);(插入一條)

 

INSERT INTO beauty(id,name,borndate,phone,photo,boyfriend_id)

VALUES(16,'菜菜','2000-12-28','000000',null,0),(14,'MIS詹','2001-5-17','000000',null,0)

,(15,'夢玲','2000-7-24','000000',null,0);(插入多條)

 

#2.可以為null的列如何插入(不可以為null的列必須插入欄位)

#方式一:直接寫為null

#方式二:在表名後要修改的列名直接不寫

INSERT INTO beauty(id,name,phone,boyfriend_id)

VALUES(17,'汪汪','000000',0);

#列的順序可以顛倒,但在給值時需要一一對應

#插入時,列數和值得個數必須一一對應

#列名可以省略,預設為所有列,而且列的順序與表中列的順序一致

INSERT INTO beauty

VALUES(18,'菜菜','2000-12-28','000000',null,0);

 

語法:(方式二)

INSERT INTO 表名

SET 列名=值,列名=值…

 

INSERT INTO beauty

SET id=19,name='hdjk',phone='909090';

插入的兩種方式PK

  1. 方式一支持多行插入,而方式二不支持
  2. 方式一支持多行子查詢,而方式二不支持

如下(子查詢)

INSERT INTO beauty(id,name,phone)

SELECT 20,'qqqq','688944';

 

INSERT INTO beauty(id,name,phone)

SELECT 34,boyname,'688944'

FROM boys

WHERE id =3;

 

#修改語句

1.修改單表的記錄

語法:(執行順序已標出)

update 表名                                 ①

set 列名=新值,列名=新值,…        ③

where 篩選條件;                        ②

 

 

案例:#修改beauty表中姓唐的女神的電話為0000000

UPDATE beauty

SET phone = '0000000'

WHERE name LIKE '周%';

 

2.修改多表的記錄

語法:(sql92)

update 表1   別名, 表2,別名                                        ①

set 列名=新值,列名=新值,…                                           ③

where 連接條件 and篩選條件;                                     ②

語法:(sql99)

update 表1   別名

inner|left|right join 表2 別名

on 連接條件                                    

set 列名=新值,列名=新值…              

where篩選條件;     

                       

(sql99與語法下的)

#案例1:修改張無忌的女朋友的手機號為114[內連接]

UPDATE beauty b

INNER JOIN boys bo

ON b.boyfriend_id = bo.id

SET b.phone = '114'

WHERE bo.boyname='張無忌';

 

#案例2:修改沒有男朋友的女神的男朋友編號都為2號

 

UPDATE beauty b

LEFT JOIN boys bo

ON b.boyfriend_id = bo.id

SET b.boyfriend_id=2

WHERE bo.id IS NULL;

 

#刪除語句

方式一:delete

1.單表的刪除

語法:delete from 表名 where 篩選條件

 

2.多表的刪除

(sql92)

語法:delete 表1別名,表2別名#想刪除哪個表的信息就寫那個表,都想刪除就都寫

         from 表1 別名,表2  別名

         where 連接條件 and 篩選條件;

(sql99)

語法:

delete 表1別名,表2別名    #想刪除哪個表的信息就寫那個表,都想刪除就都寫

from 表1 別名

inner|left|right join 表2  別名 on 連接條件

where篩選條件;

 

(sql99與語法下的)

#刪除張無忌的女朋友的信息

DELETE b

FROM beauty b

INNER JOIN boys bo

ON b.boyfriend_id = bo.id

WHERE bo.boyName = '張無忌';

 

#刪除黃曉明的信息以及他女朋友的信息

DELETE b,bo

FROM beauty b

INNER JOIN boys bo

ON b.boyfriend_id = bo.id

WHERE bo.boyName = '黃曉明';

 

方式二:truncate

語法:

truncate table 表名;(不支持鏈家篩選條件)

TRUNCATE TABLE boys;(直接清空)

 

兩種刪除方式PK

  1. delete可以加篩選條件,truncate不能加
  2. truncate刪除,效率高一丟丟
  3. 假如要刪除的表中有自增長列,

如果用delete刪除後,在插入數據,自增長列的值從斷點開始,

而truncate刪除後,在插入數據,自增長列值從1開始

  1. truncate刪除後沒有返回值,而delete有(即是否顯示表中有幾行收到影響,若是truncate,則都是0)
  2. truncate刪除不能回滾,而delete刪除可以回滾

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

-Advertisement-
Play Games
更多相關文章
  • IoTClientTool是什麼 "IoTClientTool" 是什麼, "IoTClientTool" 是 "IoTClient" 開源組件的可視化操的作實現。方便對plc設備和ModBusRtu、BACnet、串口等協議進行測試和調試。 打包成單文件exe 通常我們開發出來的WinForm程式 ...
  • Ansible Roles 詳解與實戰案例 主機規劃 添加用戶賬號 說明: 1、 運維人員使用的登錄賬號; 2、 所有的業務都放在 /app/ 下「yun用戶的家目錄」,避免業務數據亂放; 3、 該用戶也被 ansible 使用,因為幾乎所有的生產環境都是禁止 root 遠程登錄的(因此該 yun ...
  • 1、打開啟動文件,找到並跳轉至SystemInit函數 1 void SystemInit(void) 2 { 3 stc_clk_systickcfg_t stcCfg; 4 5 // TODO load trim from flash 6 //hcr 4MHz manual trim. 7 Cl ...
  • [toc] 原文鏈接: "joselynzhao·CSDN·MacBook鍵盤鎖定、按鍵失效、無反應等問題" MacBook按鍵無反應 最近被ubuntu虛擬機折騰得夠嗆,關機之後再啟動就各種問題 於是我瞎百度了一波,各種快捷鍵一陣瞎按。 結果就是,我發現的鍵盤失靈了,按什麼鍵都沒有反應。 相應“重 ...
  • 遷移概述 系統的遷移是指把源主機上的 操作系統 和 應用程式 移動到目的主機,並且能夠在目的主機上正常 運行 在沒有虛擬機的時代,物理機之間的遷移依靠的是系統備份和恢復技術。在源主機上實時備份操作系統和應用程式的狀態,然後把存儲介質連接到目標主機上,最後在目標主機上恢復系統。隨著虛擬機技術的發展,系 ...
  • Zabbix 5.0 增加了很多新功能,如:垂直菜單、隱藏菜單、用戶界面中的測試項目、限制代理檢查、查找並替換預處理步驟 ES7支持等等...快來部署體驗一把嘗鮮體驗 Zabbix 5.0 吧 升級須知 升級要求 PHP版本 PHP版本已從最低的5.4.0 升級到 7.2.0 資料庫版本 MySQL ...
  • 在bash shell中,環境變數分為兩類: 全局變數 局部變數 全局環境變數 全局環境變數對於shell會話和所有生成的子shell都是可見的。例如 : 局部環境變數 局部環境變數只能在定義它們的進程中可見。Linux也定義了標準的局部環境變數。 使用 命令可以顯示該進程的所有環境變數,包括 局部 ...
  • [TOC] 前言 1.備份數據的意義 運維工作的核心簡單概括起來就是兩件事:第一個是保護公司的數據,第二個是讓網站能夠7 24小時提供服務。 雖然這兩件事情都很重要,但是相比較而言,丟失一部分數據和讓網站7 24小時提供服務,哪個更重要呢? 對於絕大多數企業來講,失去數據就相當於失去商機,失去產品, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...