【技術積累】Mysql中的SQL語言【技術篇】【二】

来源:https://www.cnblogs.com/yyyyfly1/archive/2023/07/12/17549167.html
-Advertisement-
Play Games

博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...


數據操作

插入數據

Mysql使用INSERT語句來插入數據。INSERT語句的一般格式如下:

INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);

其中,表名是要插入數據的表名;列1, 列2, 列3 是要插入數據的列名;值1, 值2, 值3是要插入的具體值。

下麵以一個學生表student為例進行說明。

假設student表結構如下:
表名:student
列名:id (int, 主鍵)
   name (varchar(50))
   age (int)
   gender (varchar(10))

插入一條數據的SQL語句為:

INSERT INTO student (id, name, age, gender) VALUES (1, 'John', 20, 'Male');

這條SQL語句向student表插入了一條學生數據,該學生的id為1,姓名為John,年齡為20,性別為Male。

解釋該SQL語句的具體含義如下:
1. INSERT INTO student:指定要插入數據的表為student。
2. (id, name, age, gender):指定要插入數據的列為id, name, age, gender。
3. VALUES (1, 'John', 20, 'Male'):指定要插入的具體值為1, 'John', 20, 'Male'。註意,值的順序要與列的順序對應。

該SQL語句執行後,student表中將插入一條新的學生數據,即id為1,姓名為John,年齡為20,性別為Male的數據。

查詢數據

Mysql使用SELECT語句來查詢數據。SELECT語句的一般格式如下:

SELECT 列1, 列2, 列3, ... FROM 表名 WHERE 條件;

其中,列1, 列2, 列3是要查詢的列名;表名是要查詢的表名;WHERE條件是可選的,用於篩選符合條件的數據。

以下以學生表student為例進行說明。

假設student表結構如下:
表名:student
列名:id (int, 主鍵)
   name (varchar(50))
   age (int)
   gender (varchar(10))

查詢所有學生的SQL語句為:

SELECT * FROM student;

這條SQL語句查詢student表中的所有數據。

解釋該SQL語句的含義如下:
1. SELECT *:表示查詢所有列的數據。可以替換為具體的列名,例如SELECT id, name, age, gender。
2. FROM student:指定要查詢數據的表為student。

該SQL語句執行後,將返回student表中所有學生的數據。

更新數據

Mysql使用UPDATE語句來更新數據。UPDATE語句的一般格式如下:

UPDATE 表名 SET 列1=值1, 列2=值2, 列3=值3, ... WHERE 條件;

其中,表名是要更新數據的表名;列1, 列2, 列3是要更新的列名;值1, 值2, 值3是要更新的具體值;WHERE條件是用於確定要更新的行。

以下以學生表student為例進行說明。

假設student表結構如下:
表名:student
列名:id (int, 主鍵)
   name (varchar(50))
   age (int)
   gender (varchar(10))

更新學生年齡的SQL語句為:

UPDATE student SET age=22 WHERE id=1;

這條SQL語句將會更新id為1的學生的年齡為22。

解釋該SQL語句的含義如下:
1. UPDATE student:指定要更新數據的表為student。
2. SET age=22:指定要更新的列為age,值為22。
3. WHERE id=1:指定更新的條件為id等於1的行。

該SQL語句執行後,將會更新student表中id為1的學生的年齡為22。

需要註意的是,UPDATE語句可以同時更新多個列,只需要在SET後面使用逗號分隔。例如:

UPDATE student SET age=22, name='Tom' WHERE id=1;

這條SQL語句會將id為1的學生的年齡更新為22,姓名更新為Tom。

通過上述例子,你可以根據實際需求來更新不同的列和具體值。

刪除數據

Mysql使用DELETE語句來刪除數據。DELETE語句的一般格式如下:

DELETE FROM 表名 WHERE 條件;

其中,表名是要刪除數據的表名;WHERE條件是用於確定要刪除的行。

以下以學生表student為例進行說明。

假設student表結構如下:
表名:student
列名:id (int, 主鍵)
   name (varchar(50))
   age (int)
   gender (varchar(10))

刪除id為1的學生數據的SQL語句為:

DELETE FROM student WHERE id=1;

這條SQL語句將會刪除student表中id為1的學生數據。

解釋該SQL語句的含義如下:
1. DELETE FROM student:指定要刪除數據的表為student。
2. WHERE id=1:指定刪除的條件為id等於1的行。

該SQL語句執行後,將會刪除student表中id為1的學生數據。

需要註意的是,DELETE語句可以根據不同的條件刪除不同的數據。例如:

DELETE FROM student WHERE age > 20;

這條SQL語句會刪除student表中年齡大於20的學生數據。

通過上述例子,你可以根據實際需求來使用不同的條件進行數據刪除操作。

數據過濾與排序

WHERE 子句

WHERE是MySQL中的查詢條件,用於指定篩選條件,從表格中選擇符合條件的記錄。它通常用於SELECT、DELETE、UPDATE等語句中。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要篩選出性別為男性且年齡大於30歲的員工信息。

SQL語句如下:

SELECT * FROM employees WHERE gender = '男' AND age > 30;

解釋: 此SQL語句中的WHERE條件為"gender = '男' AND age > 30",它包含了兩個篩選條件。第一個條件"gender = '男'"表示篩選出性別為男的員工,第二個條件"age > 30"表示篩選出年齡大於30歲的員工。通過AND運算符將兩個條件連接在一起,保證了篩選結果符合兩個條件的員工信息。最終結果包含了滿足所有篩選條件的員工的所有信息。

需要註意的是,WHERE條件中的欄位和條件之間需要進行正確的語法和邏輯運算符的組合,以便得到正確的結果。

LIKE語句

LIKE是MySQL中的模糊查詢條件,用於指定模式匹配的篩選條件。它通常用於SELECT語句中,用於查詢符合特定模式的記錄。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、職位等)。我們想要篩選出所有姓氏以"王"開頭的員工信息。

SQL語句如下:

SELECT * FROM employees WHERE name LIKE '王%';

解釋: 此SQL語句中的WHERE條件為"name LIKE '王%'",其中使用了LIKE關鍵字和%通配符。關鍵字LIKE表示進行模糊匹配,然後通過%通配符指定匹配的模式。在本例中,%表示任意字元出現任意次數。所以"王%"表示匹配以"王"開頭的任意字元。最終結果將包含以"王"開頭的所有姓氏的員工信息。

需要註意的是,LIKE條件中的%通配符可以放在模式的任何位置,以實現不同的匹配需求。在使用LIKE時,還可以結合其他通配符(如_表示匹配單個字元)進行更靈活的模糊查詢。

IN語句

IN是MySQL中的條件運算符,用於指定一個條件範圍,如果欄位的值在該範圍內,則符合篩選條件。它通常用於SELECT、DELETE、UPDATE等語句中。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要篩選出職位為經理或副經理的員工信息。

SQL語句如下:

SELECT * FROM employees
WHERE position IN ('經理', '副經理');

解釋:
此SQL語句中的WHERE條件為"position IN ('經理', '副經理')",其中使用了IN關鍵字。IN關鍵字後面跟著一個括弧,括弧里用逗號分隔多個條件值。在本例中,我們指定了職位為經理或副經理的條件值。如果欄位"position"的值在指定的條件值範圍內,就會符合篩選條件。最終結果將包含職位為經理或副經理的員工信息。

需要註意的是,IN條件可以用來篩選出欄位值在一個固定列表內的記錄,提供了一種簡潔的方式來進行多個值的篩選。對於更複雜的條件範圍,也可以使用其他條件運算符(如BETWEEN、NOT IN等)來實現。

BETWEEN語句

BETWEEN是MySQL中的條件運算符,用於指定一個範圍條件,如果欄位的值在該範圍內,則符合篩選條件。它通常用於SELECT、DELETE、UPDATE等語句中。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要篩選出年齡在30歲到40歲之間的員工信息。

SQL語句如下:

SELECT * FROM employees
WHERE age BETWEEN 30 AND 40;

解釋:
此SQL語句中的WHERE條件為"age BETWEEN 30 AND 40",其中使用了BETWEEN關鍵字。BETWEEN關鍵字後面跟著一個範圍值,範圍值由兩個數值和關鍵字AND連接。在本例中,我們指定了年齡在30歲到40歲之間的範圍條件。如果欄位"age"的值在指定的範圍內,就會符合篩選條件。最終結果將包含年齡在30歲到40歲之間的員工信息。

需要註意的是,BETWEEN條件是包含邊界值的,即範圍內的值都是符合條件的。如果想要排除邊界值,可以使用其他條件運算符(如>, <)來實現。此外,BETWEEN條件也可以用於日期和時間類型的欄位進行範圍篩選。

ORDER BY語句

ORDER BY是MySQL中的查詢語句,用於對查詢結果進行排序。它通常用於SELECT語句中,用於按照指定的列或表達式對結果進行升序或降序排序。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要按照年齡對員工信息進行升序排序。

SQL語句如下:

SELECT * FROM employees
ORDER BY age ASC;

解釋:
此SQL語句中的ORDER BY子句用於對結果按照指定的列進行排序。在本例中,我們使用了age列進行排序。關鍵字ASC表示升序排序,預設是升序排序,也可以省略不寫。如果想要進行降序排序,可以使用DESC關鍵字。最終結果將按照年齡從小到大進行排序。

需要註意的是,ORDER BY子句可以指定多個排序條件,以逗號分隔。如果有多個排序條件,則第一個條件相同的記錄再按照第二個條件進行排序,依此類推。可以根據實際需求選擇合適的排序方式,以得到期望的查詢結果。

LIMIT語句

LIMIT是MySQL中的查詢語句,用於限制查詢結果的返回數量。它通常用於SELECT語句中,用於指定查詢結果的起始位置和返回的記錄數。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要查詢前5條員工信息。

SQL語句如下:

SELECT * FROM employees LIMIT 5;

解釋: 此SQL語句中的LIMIT關鍵字用於限制查詢結果的返回數量。在本例中,我們使用LIMIT 5來限制返回結果的記錄數為5。這將返回表中的前5條員工信息。

LIMIT也可以接受兩個參數,分別指定返回結果的起始位置和記錄數。例如,如果我們想要查詢從第6條記錄開始的3條員工信息,可以使用LIMIT 5, 3。

需要註意的是,LIMIT子句可以用於將查詢結果分頁顯示,結合OFFSET關鍵字可以指定從結果集的某個位置開始返回記錄。對於大型數據集,使用LIMIT來控制返回結果的數量是提高查詢效率和減少資源消耗的好方法。

OFFSET語句

OFFSET是MySQL中的查詢語句,用於指定查詢結果的偏移量,配合LIMIT關鍵字來實現分頁查詢。它通常用於SELECT語句中。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要查詢從第10條記錄開始的5條員工信息,實現分頁查詢。

SQL語句如下:

SELECT * FROM employees LIMIT 5 OFFSET 10;

解釋: 此SQL語句中的LIMIT子句用於限制查詢結果的返回數量,OFFSET子句用於指定查詢結果的偏移量。在本例中,LIMIT 5表示返回5條記錄,OFFSET 10表示從第10條記錄開始返回。這將返回從第10條記錄開始的5條員工信息。

OFFSET子句通常與LIMIT關鍵字配合使用,用於實現分頁查詢。通過指定不同的偏移量和限制數量,可以在查詢結果中獲取不同頁的記錄。

需要註意的是,OFFSET的偏移量是從0開始計數的,即第一條記錄的偏移量為0。如果不需要偏移量,只需要指定返回結果的數量,可以省略OFFSET子句。對於大型數據集,使用LIMIT和OFFSET來分頁查詢可以減少數據的傳輸量,提高查詢效率。

GROUP BY語句

GROUP BY 是 MySQL 中的查詢語句,用於按照一個或多個列對結果進行分組。它通常與聚合函數(如SUM、COUNT、AVG等)一起使用,以便對每個分組的數據進行統計或計算。

以下是一個基本的案例,假設有一個名為 "sales" 的表格,其中包含了銷售記錄(日期、產品、銷售數量、銷售額等)。我們想要按照產品對銷售記錄進行分組,並計算每個產品的總銷售數量和總銷售額。

SQL 語句如下:

SELECT product, SUM(quantity) AS total_quantity, SUM(amount) AS total_amount FROM sales GROUP BY product;

解釋: 此 SQL 語句中的 GROUP BY 子句用於根據指定的列(在本例中是 "product" 列)對結果進行分組。在每個分組內,使用聚合函數(SUM)對相應的列進行計算。在本例中,我們計算每個產品的總銷售數量(total_quantity)和總銷售額(total_amount)。

需要註意的是,SELECT 語句中的列可以是被 GROUP BY 子句引用的列或者使用聚合函數的列。同時,聚合函數也可以用於非分組的列。在使用 GROUP BY 時,除非被 GROUP BY 引用或用於聚合的列,否則非分組的列將無法使用。

GROUP BY 還可以使用多個列來進行分組,以更細粒度地對數據進行分組。在這種情況下,結果將按照指定的多個列進行分組,並計算每個組的統計值。

總而言之,GROUP BY 子句用於將查詢結果按照指定的列進行分組,並對每個分組進行聚合計算。它常用於在查詢中進行數據的分類彙總和統計分析。

HAVING語句

HAVING是MySQL中的查詢語句,用於在分組查詢中對分組後的結果進行篩選。它通常與GROUP BY和聚合函數一起使用,用於篩選滿足指定條件的分組。

以下是一個基本的案例,假設有一個名為 "sales" 的表格,其中包含了銷售記錄(日期、產品、銷售數量、銷售額等)。我們想要按照產品對銷售記錄進行分組,並篩選出銷售數量大於100的產品分組。

SQL語句如下:

SELECT product, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product
HAVING total_quantity > 100;

解釋:
此SQL語句中,首先使用GROUP BY子句將銷售記錄按產品進行分組。然後使用SUM函數計算每個產品的銷售數量(total_quantity)。最後,使用HAVING子句篩選出滿足條件(銷售數量大於100)的產品分組。

需要註意的是,HAVING子句是在分組之後對結果進行篩選,類似於WHERE子句用於對原始數據進行篩選。但是,HAVING子句只能用於對使用聚合函數進行分組的列進行篩選,而不能用於非分組的列。

類似於WHERE子句,HAVING子句支持使用邏輯運算符(如AND、OR)和比較運算符(如>、<、=)來結合多個條件進行篩選。可以根據實際需求,在HAVING子句中指定不同的條件來獲取期望的查詢結果。

總而言之,HAVING子句在GROUP BY分組查詢中用於對分組後的結果進行篩選,從而篩選出滿足指定條件的分組。它常用於在分組查詢中對聚合結果進行進一步的篩選和限制。

DISTINCT語句

DISTINCT是MySQL中的查詢語句,用於返回查詢結果中不重覆的行。它通常用於SELECT語句中,用於消除重覆的數據。

以下是一個基本的案例,假設有一個名為"employees"的表格,其中包含員工的信息(員工號、姓名、性別、年齡、職位等)。我們想要查詢出所有不重覆的職位。

SQL語句如下:

SELECT DISTINCT position FROM employees;

解釋:
此SQL語句中的DISTINCT關鍵字用於指定查詢結果中的唯一行數據,即去除重覆的行。在本例中,我們查詢出了"employees"表中所有不重覆的職位(position)。

需要註意的是,DISTINCT關鍵字指定的唯一性是基於所有選擇的列的組合。如果指定多個列,那麼只有在這些列的值完全相同的情況下,才會被視為重覆行。

可以在SELECT語句中選擇多個列使用DISTINCT關鍵字,以獲取多個列組合的唯一數據。

DISTINCT關鍵字常用於避免結果集中的重覆數據,特別是在具有關聯表或複雜查詢條件的查詢中。對於大型數據集,使用DISTINCT可以使結果的數量更加準確和易於分析。

在黑夜裡夢想著光,心中覆蓋悲傷,在悲傷里忍受孤獨,空守一絲溫暖。 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在。 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • **本文深入探索了Django中的Cookie和Session,解析瞭如何應對HTTP協議的無狀態性問題,說明其基礎概念,分析工作原理,並討論何時應選擇使用Cookie或Session。文章進階部分,提出高效管理Cookie和Session,以及如何利用它們進行用戶身份驗證。** ## HTTP協議 ...
  • # 一、前言 最近在做一個項目,有個比較耗時的操作是啟用線程進行非同步操作,當時在啟用的線程時,突然發現子線程無法獲取父線程中的HttpServletRequest請求對象,因為是第一次遇到這種問題,所以記錄一下解決方案。 # 二、問題模擬 在這裡,我們簡單模擬一下出現的問題。我們首先編寫一個簡單的h ...
  • 在C#中調用StringBoot介面,POST請求,案例代碼: public string HttpPost() { //把用戶傳過來的數據轉成“UTF-8”的位元組流Encoding encoding = Encoding.UTF8;//創建一個HTTP請求HttpWebRequest reques ...
  • fdisk 命令 創建分區 實現擴容 Linux fdisk命令簡介 Linux fdisk 是一個創建和維護分區表的程式,它相容 DOS 類型的分區表、BSD 或者 SUN 類型的磁碟列表。 菜單操作說明 m :顯示菜單和幫助信息 a :活動分區標記/引導分區 d :刪除分區 l :顯示分區類型 ...
  • 作者:Bright-Ho 聯繫方式:[email protected] input輸入子系統框架分析(純軟體方面): 上一節,我們簡單的描述的什麼是輸入子系統;什麼是字元設備;以及其作用;重點是我們講到分析輸入子系統必須結合硬體設備來分析;那麼這一節,我們主要講解輸入子系統的軟體框架;接下來,我們就進 ...
  • 作者:Bright-Ho 聯繫方式:[email protected] 前言背景描述: 雖然在網上看了很多有關輸入子系統的資料和視頻,但是真正的,系統的,全面的,來弄清輸入子系統,還是要花些時間和精力的!現在我以一個初學者的角度來分析input輸入子系統; 那麼分析input輸入子系統之前,得先弄清楚 ...
  • # FRP使用方法 # 流程圖如下 >建議查看流程圖哦 ![image](https://img2023.cnblogs.com/blog/2368840/202307/2368840-20230712150836502-1824122109.png) ## 訪問FRP官方項目 ### [https ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230711160327907-1137777359.png) # 1. 計算一年有多少天 ## 1.1. 方案 ### 1.1.1. 找到當前年份的第一天 ### 1.1.2 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...