【SQL學習筆記1】增刪改查+多表連接全解析(內附SQL免費在線練習工具)

可以使用Sqliteviz這個網站免費編寫sql語句,它能夠讓用戶直接在瀏覽器內練習SQL的語法,不需要安裝任何軟件。

鏈接如下:

sqliteviz

注意:

在轉寫SQL語法時,關鍵字之間有一個特定的順序,這個順序會影響到SQL語法是否能正確地執行,順序如下:

SELECT(讀取)——FROM(來源)——WHERE(條件)——GROUP BY(分組)——HAVING(條件)——ORDER BY(順序)——LIMIT(條數限制)

比如:order by要排在limit之前

group by必須排在having之前,因為having是用來篩選分組地結果

目錄

1.創建數據庫表

2. 向表中插入數據

3.刪除整個數據表

4.刪除表中全部數據

5.查詢表中相關信息

①limit用法

②Where用法

③order by語法

④通配符用法?

⑤between and用法?

⑥avg、sum、max、min、count、round等用法

⑦group by用法

⑧Having用法

注意:group by分組后不能用where進行篩選了,得用having進行篩選!

⑨DISTINCT用法

⑩UPDATE SET的用法

?Left join的用法

?Inner left的用法

6.left join 和inner join的區別

1.創建數據庫表
CREATE TABLE students (student_id INT PRIMARY KEY,         -- 學號(主鍵)name VARCHAR(50),                   -- 姓名class VARCHAR(50),                  -- 班級score DECIMAL(5,2),                 -- 成績(百分制)club_id INT                         -- 社團編號
);

其中

CREATE TABLE students ( ... );
  • 創建一個名為?students?的新表。
  • 表中包含多個字段(列),括號內定義這些字段。
student_id INT PRIMARY KEY
  • 字段名:?student_id
  • 類型:?INT(整數)
  • 約束:?PRIMARY KEY
    • 表示該字段是這張表的主鍵,唯一標識每一條記錄。
    • 主鍵不能重復,也不能為 NULL。
name VARCHAR(50)
  • 字段名:?name
  • 類型:?VARCHAR(50)(可變長度字符串,最大長度為 50 個字符)
class VARCHAR(50)
  • 字段名:?class
  • 類型:?VARCHAR(50),表示學生所屬班級名稱。
score DECIMAL(5,2)
  • 字段名:?score
  • 類型:?DECIMAL(5,2),表示精度為 5 位、小數點后保留 2 位的十進制數。
    • 最大值可以是?999.99
club_id INT
  • 字段名:?club_id
  • 類型:?INT,表示學生所加入社團的編號。
2. 向表中插入數據
INSERT INTO students (student_id, name, class, score, club_id)
VALUES(1001, '張三', '高一(1)班', 92, 101),(1002, '李四', '高一(2)班', 78, 103),(1003, '王五', '高一(1)班', 58, 102),(1004, '趙六', '高一(3)班', 98, 101),(1005, '錢七', '高一(2)班', 89, NULL),(1006, '孫八', '高一(3)班', 84, 103),(1007, '周九', '高一(1)班', 86,102),(1008, '吳十', '高一(2)班', 94,104),(1009, '鄭十一', '高一(3)班', 68,103),(1010, '王十二', '高一(1)班', 72,101),(1011, '陳十三', '高一(2)班', 84,102),(1012, '劉十四', '高一(3)班', 89,103),(1013, '楊十五', '高一(1)班', 91,101),(1014, '黃十六', '高一(2)班', 92,104),(1015, '徐十七', '高一(3)班', 52,103),(1016, '何十八', '高一(1)班',85,NULL),(1017, '呂十九', '高一(2)班', 76,102),(1018, '施二十', '高一(3)班', 64,101),(1019, '沈二十一', '高一(1)班', 100,101),(1020, '朱二十二', '高一(2)班',99,102);
3.刪除整個數據表
DROP TABLE students;
4.刪除表中全部數據
DELETE FROM students; 或者
DELETE
FROM students
where club_id=104;
5.查詢表中相關信息
SELECT * FROM "students"; 
SELECT 姓名,班級,成績 FROM "students"; 
①limit用法
SELECT * FROM "students" limit 5; --顯示前5行數據
SELECT * FROM "students" limit 5 OFFSET 5; --跳過前5行,接著顯示后5行
SELECT * FROM "students" limit 5 OFFSET 10; --第10行后邊的5行,即跳過前10行,顯示后邊的5行
②Where用法
SELECT * from students where 學號 = 1001;
SELECT * from students where 學號 <> 1001;  學號不等于1001的其它數據
SELECT * from students where 班級 = '高一(1)班';
③order by語法
SELECT * from students where 班級 <> '高一(2)班' ORDER BY 班級,成績 DESC;--降序按照班級升序、成績降序排列
④通配符用法?
SELECT * from students where 姓名 LIKE '張%'--%多個字元
--LIKE '張%':表示以“張”開頭,后面可以有任意多個字符(包括 0 個)。
--% 是通配符,代表 任意數量的字符(包括沒有字符)。SELECT * from students where 姓名 LIKE '張_'--_一個字源
查詢姓名為“張”姓且全名只有兩個字的學生
_ 是通配符,代表 一個且僅有一個字符。
⑤between and用法?
SELECT * from students where 成績>=80 and 成績<=90;
SELECT * from students where 成績 BETWEEN 80 AND 90;SELECT * from students where 成績 BETWEEN 80 AND 90 AND 班級='高一(2)班';SELECT * from students where 成績 BETWEEN 80 AND 90 AND (班級='高一(2)班' or 班級='高一(1)班');SELECT * from students where 成績 BETWEEN 80 AND 90 AND (班級 in ('高一(2)班','高一(1)班'));
⑥avg、sum、max、min、count、round等用法
SELECT AVG(成績),SUM(成績),MAX(成績),MIN(成績),COUNT(成績) FROM students;
SELECT AVG(成績) AS 成績平均,MAX(成績) as 最高分  FROM students;
SELECT ROUNd(AVG(成績),1) AS 成績平均,MAX(成績) as 最高分  FROM students; --四舍五入保留一位小數
⑦group by用法
SELECT 班級,ROUNd(AVG(成績),1) AS 成績平均,MAX(成績) as 最高分  FROM students GROUP BY 班級 ORDER BY 成績平均 DESC;
⑧Having用法
SELECT 班級,ROUNd(AVG(成績),1) AS 成績平均 FROM students GROUP BY 班級 HAVING 成績平均>=80 ORDER BY 成績平均 DESC;
注意:group by分組后不能用where進行篩選了,得用having進行篩選!
⑨DISTINCT用法
SELECT DISTINCT club_id FROM students;
作用: 顯示所有出現過的 club_id 值(包括 NULL)。
DISTINCT 表示去重。SELECT COUNT(DISTINCT club_id) FROM students;
作用: 統計學生來自多少個不同的社團。
注意: NULL 值不會被計入統計結果。SELECT DISTINCT club_id FROM students WHere club_id is not null order by club_id;
查詢所有非空的不同社團編號,并排序:
⑩UPDATE SET的用法
更新數據,補充缺失值,刪除行
UPDATE students 
set club_id=104 
where student_id=1005;將 student_id = 1005 的學生的 club_id 更新為 104
這個操作通常用于補充缺失值(如之前該字段為 NULL)
?Left join的用法
SELECT s.name AS 姓名,s.club_id AS 社團編號,c.club_name AS 社團名稱
FROM students s
LEFT JOIN club c ON s.club_id = c.club_id
WHERE s.class = '高一(1)班';

查詢“高一(1)班”學生的姓名、社團編號和對應的社團名稱,并使用了 LEFT JOIN 來連接 studentsclub 表。

?Inner left的用法
SELECT s.name AS 姓名,s.club_id AS 社團編號,c.club_name AS 社團名稱
FROM students s
INNER JOIN club c ON s.club_id = c.club_id
WHERE s.class = '高一(1)班';
6.left join 和inner join的區別

LEFT JOININNER JOIN 是 SQL 中最常用的兩種表連接方式(JOIN),它們用于將兩個或多個表根據某個關聯條件合并在一起。但它們在行為和結果上有著本質的區別。

Inner join(內連接)

  • 只返回兩個表中“匹配”的行
  • 如果左表某行在右表中沒有匹配的行,則不返回該行
  • 相當于取兩個表的交集

LEFT JOIN(左連接 / 左外連接)

  • 返回左表中的所有行
  • 如果右表中沒有匹配的行,則用?NULL?填充右表的字段
  • 不管有沒有匹配,左表數據都會保留

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/84416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/84416.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/84416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【計算機網絡】SDN

SDN這種新型網絡體系結構的核心思想&#xff1a;把網絡的控制層面與數據層面分離&#xff0c;而讓控制層面利用軟件來控制數據層面中的許多設備。 OpenFlow協議可以被看成是SDN體系結構中控制層面與數據層面之間的通信接口。 在SDN中取代傳統路由器中轉發表的是“流表”&…

量化面試綠皮書:9. 通往Offer的門

文中內容僅限技術學習與代碼實踐參考&#xff0c;市場存在不確定性&#xff0c;技術分析需謹慎驗證&#xff0c;不構成任何投資建議。 9. 通往Offer的門 你面對著兩扇門。 一個通往你的工作機會&#xff0c;另一個是退出。 兩扇門前都有一名警衛。一個守衛總是說謊&#xff0c…

【雜談】-遞歸進化:人工智能的自我改進與監管挑戰

遞歸進化&#xff1a;人工智能的自我改進與監管挑戰 文章目錄 遞歸進化&#xff1a;人工智能的自我改進與監管挑戰1、自我改進型人工智能的崛起2、人工智能如何挑戰人類監管&#xff1f;3、確保人工智能受控的策略4、人類在人工智能發展中的角色5、平衡自主性與控制力6、總結與…

Ascend NPU上適配Step1X-Edit模型

1 概述 1.1 簡述 Step1X-Edit&#xff1a;一個在各種真實用戶指令下表現出現的統一圖像編輯模型。 Step1X-Edit&#xff0c;其性能可與 GPT-4o 和 Gemini2 Flash 等閉源模型相媲美。更具體地說&#xff0c;我們采用了多模態LLM 來處理參考圖像和用戶的編輯指令。我們提取了潛…

WEB3全棧開發——面試專業技能點P8DevOps / 區塊鏈部署

一、Hardhat / Foundry 進行合約部署 概念介紹 Hardhat 和 Foundry 都是以太坊智能合約開發的工具套件&#xff0c;支持合約的編譯、測試和部署。 它們允許開發者在本地或測試網絡快速開發智能合約&#xff0c;并部署到鏈上&#xff08;測試網或主網&#xff09;。 部署過程…

【題解-洛谷】B4292 [藍橋杯青少年組省賽 2022] 路線

題目&#xff1a;B4292 [藍橋杯青少年組省賽 2022] 路線 題目描述 有一個旅游景區&#xff0c;景區中有 N N N 個景點&#xff0c;景點以數字 1 1 1 到 N N N 編號&#xff0c;其中編號為 N N N 的景點為游客服務中心所在地。景區中有 M M M 條連接路線&#xff0c;每條…

MySQL體系架構解析(四):MySQL數據存儲的揭秘

MySQL中的數據目錄 確定MySQL的數據目錄 到底MySQL把數據都存到哪個路徑下呢&#xff1f;其實數據木對應著一個系統變量datadir&#xff0c;我們在使用客戶端與服務器建立連接之后查看這個系統變量的值就可以了。 -- 以下兩種方式都可以 show variables like datadir; selec…

Solidity從入門到精通-Remix的基本使用和Solidity的基本數據類型

Solidity從入門到精通-Remix的基本使用和Solidity的基本數據類型 講了那么多理論&#xff0c;相信大家對區塊鏈/web3也有了一定認知&#xff1b;這時候可能就問有人會問了如何把理論變成實際的代碼實現。 這就來了接下來會給大家分享Solidity入門教程 這時候就會有同學問了Sol…

ArcGIS Pro+ArcGIS給你的地圖加上北回歸線!

今天來看ArcGIS Pro和ArcGIS中如何給制作的中國地圖或者其他大范圍地圖加上北回歸線。 我們將在ArcGIS Pro和ArcGIS中一同介紹。 1 ArcGIS Pro中設置北回歸線 1、在ArcGIS Pro中初步設置好經緯格網等&#xff0c;設置經線、緯線都以10間隔顯示。 2、需要插入背會歸線&#xf…

在.NET Core控制器中獲取AJAX傳遞的Body參數

.Net Core是支持前后端不分離式的開發的&#xff0c;如果在原始系統中采用不分離式開發&#xff0c;后面需要在原系統中增加功能&#xff0c;并且新的服務采用其他語言開發&#xff0c;且系統原來功能保持原樣&#xff0c;這樣前端系統可以單獨調用新開發的接口。 但是&#x…

ubuntu24安裝opencv過程

1.訪問opencv官網&#xff0c;下載源代碼。 opencv 2.選擇相應版本的源碼下載 我這里用的是4.8.1版本的源碼進行安裝&#xff0c;opencv-4.8.1.tar.gz 安裝命令 tar xvf opencv-4.8.1.tar.gz #在當前文件夾創建build文件&#xff0c;并進入 mkdir build && cd build …

Kubernetes ClusterIP 端口深度解析:虛擬服務與流量轉發機制

事情的起因是創建了一個 NodePort 類型 Service&#xff0c;其端口映射關系為 8000:30948/TCP。既然30948是在每個node開的端口&#xff0c;那8000是開在哪的呢&#xff1f;出于好奇回顧了一下K8s的Cluster IP和Service 端口映射關系解析 在 Kubernetes 的 NodePort Service 中…

C++左值與右值及引用的總結

前言 在C中&#xff0c;理解左值&#xff08;lvalue&#xff09;和右值&#xff08;rvalue&#xff09;是掌握現代C核心特性的關鍵。左值通常指代具名的、持久存在的對象&#xff0c;可以取地址&#xff1b;而右值則是臨時的、即將銷毀的值&#xff0c;如字面量或表達式結果。…

學習記錄:DAY31

Java課設&#xff1a;數字水印處理與解析器開發 前言 想養成寫日記的習慣真不容易。最近比較懶散&#xff0c;復習不想復&#xff0c;項目又做完了&#xff0c;處于一種能干些什么&#xff0c;但是不太想干&#xff0c;但是不干些什么又渾身難受的處境。其實完全就不是勻不出…

Linux系統部署KES

1、安裝準備 1.版本說明V008R006C009B0014 V008&#xff1a;是version產品的大版本。 R006&#xff1a;是release產品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build開發過程中的構建版本2.硬件要求 #安全版和企業版 內存&#xff1a;1GB 以上 硬盤&#xf…

系統模塊與功能設計框架

系統模塊與功能設計框架&#xff0c;嚴格遵循專業架構設計原則&#xff0c;基于行業標準&#xff08;如微服務架構、DDD領域驅動設計&#xff09;構建。設計采用分層解耦模式&#xff0c;確保可擴展性和可維護性&#xff0c;適用于電商、企業服務、數字平臺等中大型系統。 系統…

MySQL中【正則表達式】用法

MySQL 中正則表達式通過 REGEXP 或 RLIKE 操作符實現&#xff08;兩者等價&#xff09;&#xff0c;用于在 WHERE 子句中進行復雜的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基礎語法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …

Prompt工程學習之自我一致性

自我一致性 &#xff08;Self-consistency&#xff09; 概念&#xff1a;該技術通過對同一問題采樣不同的推理路徑&#xff0c;并通過多數投票選擇最一致的答案&#xff0c;來解決大語言模型&#xff08;LLM&#xff09;輸出的可變性問題。通過使用不同的溫度&#xff08;temp…

gh hugging face使用

install sudo dpkg -i gh_2.74.0_linux_amd64.deb gh auth login gh auth login ? Where do you use GitHub? GitHub.com ? What is your preferred protocol for Git operations on this host? HTTPS ? Authenticate Git with your GitHub credentials? Yes ? How wo…

2025.6.9總結(利與弊)

凡事都有兩面性。在大廠上班也不例外。今天找開發定位問題&#xff0c;從一個接口人不斷溯源到另一個 接口人。有時候&#xff0c;不知道是誰的責任填。將工作內容分的很細&#xff0c;每個人負責其中的一小塊。我清楚的意識到&#xff0c;自己就是個可以隨時替換的螺絲釘&…