做到哪一步才算精通SQL

做到哪一步才算精通SQL-Structured Query Language

  • 數據定義語言 DDL for Struct
    • CREATE:用來創建數據庫、表、索引等對象
    • ALTER:用來修改已存在的數據庫對象
    • DROP:用來刪除整個數據庫或者數據庫中的表
    • TRUNCATE:用來刪除表中所有的行,但不刪除表本身
    • RENAME:用來重命名數據庫或者表
    • COMMENT:用來為數據庫對象如表、列添加注釋
  • 數據操作語言 DML for Data
    • MERGE:合并兩張表或更改其中一張表的數據
    • CALL:調用一個存儲過程
    • EXPLAIN PLAN:提供一條查詢語句的執行計劃 - 工作中未用到,待學習中
    • LOCK TABLE:對數據庫表進行鎖定,以控制并發讀寫 - 工作中未用到,待學習中
  • 數據控制語言 DCL for permission
    • GRANT:該命令用于授予用戶對數據庫對象(例如表格)的訪問權限
    • REVOKE:該命令用于撤回已經授予用戶的某些權限
  • 數據查詢語言 DQL
  • 事務控制語言 TCL
    • COMMIT:用于提交事務,將所有數據庫修改保存到數據庫中
    • ROLLBACK:用于回滾事務,撤銷所有未經提交的數據庫修改
    • AVEPOINT:為事務中的一系列操作設定保存點

ref [基礎語法與操作](https://blog.csdn.net/pantouyuchiyu/article/details/135937701)

數據定義語言 DDL for Struct

  • DDL(Data Definition Language)數據庫定義語言,
  • 用于定義或改變數據表結構、數據類型、
  • 表之間的關系、庫的索引、約束、視圖、存儲過程、觸發器等。
  • CREATEALTERDROPTRUNCATERENAMECOMMENT等命令一旦執行,就無法被撤銷,因為它們改變了數據庫的結構。

CREATE:用來創建數據庫、表、索引等對象

CREATE DATABASE testDB;                          -- 創建一個名為testDB的數據庫
CREATE TABLE Students (ID INT, Name TEXT);       -- 創建一個名為Students的表,包含ID和Name兩個字段
CREATE INDEX index_name ON Students (Name desc); -- 常見簡單索引 name 逆序
CREATE UNIQUE INDEX index_id on Students (ID);   -- 常見唯一索引 id

ALTER:用來修改已存在的數據庫對象

ALTER TABLE Students ADD Grade INT;        --在Students表中添加一個名為Grade的字段
ALTER TABLE Students DROP COLUMN Grade;    --在Students表中刪除名為Grade的字段

DROP:用來刪除整個數據庫或者數據庫中的表

DROP DATABASE testDB;                     --刪除名為testDB的數據庫
DROP TABLE Students;                      --刪除Students表

TRUNCATE:用來刪除表中所有的行,但不刪除表本身

TRUNCATE TABLE Students;                 --刪除Students表中的所有數據,但不刪除表本身

RENAME:用來重命名數據庫或者表

ALTER TABLE Students RENAME TO Pupils;  --將Students表重命名為Pupils

COMMENT:用來為數據庫對象如表、列添加注釋

COMMENT ON COLUMN Students.Name IS 'Student Name';  --在Students表的Name列上添加注釋'Student Name'

數據操作語言 DML for Data

  • DML(Data Manipulation Language)是數據操作語言,用于管理和檢索數據庫中的數據。
    適用于對數據庫中的數據進行一些簡單操作,比如增刪改查表中的數據。
  • 常用的語句關鍵字有:SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE
  • 作用于數據本身,如果執行了錯誤的操作,可以通過回滾機制來取消這些操作。
SELECT * FROM Students;                    --選擇Students表中的所有數據
SELECT Name, Grade FROM Students;          --選擇Students表中的Name和Grade數據# 在Students表中插入一條新的數據
INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18); # 將Students表中ID為1的記錄的Age設置為19
UPDATE Students SET Age = 19 WHERE ID = 1;# 刪除Students表中ID為1的數據
DELETE FROM Students WHERE ID = 1;

MERGE:合并兩張表或更改其中一張表的數據

# 根據ID進行匹配,向Students中更新或插入來自Enrolled_Students中的數據
MERGE INTO Students AS Target
USING (SELECT ID, Name FROM Enrolled_Students) AS Source
ON Target.ID = Source.ID
WHEN MATCHED THEN UPDATE SET Name = Source.Name 
WHEN NOT MATCHED THEN INSERT (ID, Name) VALUES (Source.ID, Source.Name); # MySQL 在 8.0 之前不支持 MERGE 語句,
# 需要使用 INSERT ... ON DUPLICATE KEY UPDATE 來實現類似的功能

CALL:調用一個存儲過程

CALL Update_Students_Age(18); -- 調用名為“Update_Students_Age”的存儲過程

EXPLAIN PLAN:提供一條查詢語句的執行計劃 - 工作中未用到,待學習中

EXPLAIN PLAN FOR SELECT * FROM Students; -- 顯示查詢所有學生數據的執行計劃

LOCK TABLE:對數據庫表進行鎖定,以控制并發讀寫 - 工作中未用到,待學習中

LOCK TABLE Students IN EXCLUSIVE MODE;  -- 對Students表施加獨占鎖

數據控制語言 DCL for permission

  • DCL(Data Control Language)數據控制語言:主要用于控制用戶對數據庫的訪問權限以及對數據的執行權限。
  • 使用DCL,數據庫管理員可以精細化管理數據庫的訪問權限,保護數據的安全性。
  • 常見的DCL語句包括GRANT、REVOKE等。

GRANT:該命令用于授予用戶對數據庫對象(例如表格)的訪問權限

GRANT SELECT, INSERT, UPDATE ON Students TO hugh;
# 給 "hugh" 授予了對 "Students" 表進行 SELECT、INSERT 和 UPDATE 的權限

REVOKE:該命令用于撤回已經授予用戶的某些權限

REVOKE UPDATE ON Students FROM hugh;
撤回了 "hugh""Students" 表的 UPDATE 權限。

數據查詢語言 DQL

DQL(Data Query Language)數據查詢語言:主要用來查詢數據。
實際上,DQL在操作中主要體現為SQL的SELECT語句。

事務控制語言 TCL

  • TCL (Transaction Control Language) 是事務控制語言,
  • 主要用來管理和控制數據庫中的事務(Transaction),以保證數據庫操作的完整性和一致性。
  • TCL命令往往和DML(數據操作語言)命令一起使用,以確保一系列的數據庫操作要么全部成功,要么全部不成功(可回滾至操作前的狀態)。

COMMIT:用于提交事務,將所有數據庫修改保存到數據庫中

INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
COMMIT;  -- 提交事務,將插入的數據保存到數據庫中

ROLLBACK:用于回滾事務,撤銷所有未經提交的數據庫修改

INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
COMMIT;  -- 提交事務,將插入的數據保存到數據庫中

AVEPOINT:為事務中的一系列操作設定保存點

設立保存點后,可以選擇只回滾到保存點的部分,而不需要全部回滾

SAVEPOINT SP1;  -- 創建保存點 SP1
INSERT INTO Students (ID, Name, Age) VALUES (1, 'Tom', 18);
ROLLBACK TO SP1;  -- 回滾至保存點 SP1,不會撤銷保存點后的操作

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

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

相關文章

《深度解析DeepSeek-M8:量子經典融合,重塑計算能效格局》

在科技飛速發展的今天,量子計算與經典算法的融合成為了前沿領域的焦點。DeepSeek-M8的“量子神經網絡混合架構”,宛如一把鑰匙,開啟了經典算法與量子計算協同推理的全新大門,為諸多復雜問題的解決提供了前所未有的思路。 量子計算…

解決電腦問題(2)——主板問題

當電腦主板出現問題時,可以嘗試以下解決方法: 外觀檢查與清潔 檢查硬件連接:仔細查看主板上的各種硬件連接,包括 CPU、內存、顯卡、硬盤、電源等的連接線是否松動或損壞。確保所有插頭都牢固地插入相應的插槽中,如有松…

Java 大視界 -- Java 大數據在智能家居能源管理與節能優化中的應用(120)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

【網絡】TCP常考知識點詳解

TCP報文結構 TCP報文由**首部(Header)和數據(Data)**兩部分組成。首部包括固定部分(20字節)和可選選項(最多40字節),總長度最大為60字節。 1. 首部固定部分 源端口&…

算法1-6 一元三次方程求解

題目描述 有形如:ax3bx2cxd0 這樣的一個一元三次方程。給出該方程中各項的系數(a,b,c,d 均為實數),并約定該方程存在三個不同實根(根的范圍在 ?100 至 100 之間),且根與根之差的絕對值 ≥1。要…

05.基于 TCP 的遠程計算器:從協議設計到高并發實現

📖 目錄 📌 前言🔍 需求分析 🤔 我們需要解決哪些問題? 🎯 方案設計 💡 服務器架構 🚀 什么是協議?為什么要設計協議? 📌 結構化數據的傳輸問題 …

大數據面試之路 (一) 數據傾斜

記錄大數據面試歷程 數據傾斜 大數據崗位 ,數據傾斜面試必問的一個問題。 一、數據傾斜的表現與原因 表現 某個或某幾個Task執行時間過長,其他Task快速完成。 Spark/MapReduce作業卡在某個階段(如reduce階段),日志顯…

僅僅使用pytorch來手撕transformer架構(3):編碼器模塊和編碼器類的實現和向前傳播

僅僅使用pytorch來手撕transformer架構(2):編碼器模塊和編碼器類的實現和向前傳播 往期文章: 僅僅使用pytorch來手撕transformer架構(1):位置編碼的類的實現和向前傳播 最適合小白入門的Transformer介紹 僅僅使用pytorch來手撕transformer…

《OpenCV》—— dlib(換臉操作)

文章目錄 dlib換臉介紹仿射變換在 dlib 換臉中的應用 換臉操作 dlib換臉介紹 dlib 換臉是基于 dlib 庫實現的一種人臉替換技術,以下是關于它的詳細介紹: 原理 人臉檢測:dlib 庫中包含先進的人臉檢測器,如基于 HOG(方向…

機器學習中的梯度下降是什么意思?

梯度下降(Gradient Descent)是機器學習中一種常用的優化算法,用于最小化損失函數(Loss Function)。通過迭代調整模型參數,梯度下降幫助模型逐步逼近最優解,從而提升模型的性能。 1.核心思想 梯…

三、Docker 集群管理與應用

(一)項目案例 1、準備主機 (1)關閉防火墻,或者開放TCP端口2377(用于集群管理通信)、TCP/UPD端口7946(用于節點之間的通信)、UDP端口4789(用于overlay網絡流…

網絡DNS怎么更改?

訪問速度慢或某些網站無法打開?改變網絡DNS設置可能會幫助解決這些問題。本文將詳細介紹如何更改網絡DNS,包括更改的原因、具體步驟。 一、為什么要更改DNS? 更改DNS的原因有很多,以下是一些主要的考慮因素:某些公共DNS服務器的響應速度比…

江科大51單片機筆記【12】DS18B20溫度傳感器(上)

寫在前言 此為博主自學江科大51單片機(B站)的筆記,方便后續重溫知識 在后面的章節中,為了防止篇幅過長和易于查找,我把一個小節分成兩部分來發,上章節主要是關于本節課的硬件介紹、電路圖、原理圖等理論…

基于springboot+vue的佳途旅行分享預約平臺

一、系統架構 前端:vue2 | element-ui | html 后端:springboot | mybatis-plus 環境:jdk1.8 | mysql | maven | node 二、代碼及數據庫 三、功能介紹 01. web端-注冊 02. web端-登錄 03. web端-系統主頁1 04. web端-系統主頁2 05. we…

【數據結構】2算法及分析

0 章節 1.4到1.5小節。 掌握算法概念、特性、描述、算法性能時間復雜度和空間復雜度; 理解遞歸含義? 掌握實現遞歸的條件和時機; 應用簡單遞歸問題的算法設計; 重點 算法…

【一起學Rust | Tauri2.0框架】基于 Rust 與 Tauri 2.0 框架實現軟件開機自啟

文章目錄 前言 一、準備工作1.1 環境搭建1.2 創建 Tauri 項目1.3 添加依賴 二、實現開機自啟的基本原理2.1 開機自啟的基本概念2.2 Tauri 應用的生命周期 三、Windows 平臺實現3.1 Windows 注冊表機制3.2 實現步驟3.3 注意事項 四、Linux 平臺實現4.1 Linux systemd 服務4.2 實…

一周熱點-OpenAI 推出了 GPT-4.5,這可能是其最后一個非推理模型

在人工智能領域,大型語言模型一直是研究的熱點。OpenAI 的 GPT 系列模型在自然語言處理方面取得了顯著成就。GPT-4.5 是 OpenAI 在這一領域的又一力作,它在多個方面進行了升級和優化。 1 新模型的出現 GPT-4.5 目前作為研究預覽版發布。與 OpenAI 最近的 o1 和 o3 模型不同,…

css中的浮動

在 CSS 中,浮動(float)是一種定位元素的方式,它允許元素脫離正常的文檔流,并向左或向右移動,直到其邊緣碰到包含塊或者另一個浮動元素的邊緣。下面從多個方面詳細介紹 CSS 浮動: 一&#xff0c…

element-plus中form表單組件的使用

1.如何讓每個表單項對齊? 問題描述:如下圖,每個表單項的輸入框/下拉框/日期選擇器是沒有對齊的,我們希望它們縱向是對齊的。 解決方案:給el-form標簽,加上label-width"100px"即可。意思就是給每個…

線性搜索算法

何時使用線性搜索算法? 當處理一個小數據集時。當搜索存儲在連續內存中的數據集時。 線性搜索算法在什么情況下優于其他搜索算法? 當列表或數組未排序時,或者當輸入的大小相對較小時,首選線性搜索算法。它易于實現,并…