#MySQL 語句大全(完整實用教程)

📌 MySQL 語句大全(完整實用教程)


📌 1. 數據庫操作

? 創建數據庫

CREATE DATABASE mydb;  -- 創建名為 mydb 的數據庫

? 使用數據庫

USE mydb;  -- 選擇數據庫

? 刪除數據庫

DROP DATABASE mydb;  -- 刪除數據庫(謹慎使用)

?? 注意點:

  • 刪除數據庫會 丟失所有數據,操作前需備份!

📌 2. 表操作

? 創建表

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,  -- 自增主鍵name VARCHAR(50) NOT NULL,  -- 不能為空age INT DEFAULT 18,  -- 默認值 18email VARCHAR(100) UNIQUE  -- 唯一約束
);

? 查看表結構

DESC users;  -- 查看表的字段信息
SHOW CREATE TABLE users;  -- 查看完整建表語句

? 修改表

ALTER TABLE users ADD phone VARCHAR(20);  -- 添加新列
ALTER TABLE users MODIFY name VARCHAR(100);  -- 修改字段類型
ALTER TABLE users DROP COLUMN phone;  -- 刪除列

? 刪除表

DROP TABLE users;  -- 刪除表(謹慎使用)

?? 注意點:

  • DROP TABLE 不可恢復,需謹慎。
  • ALTER TABLE 可能 影響性能,大表操作前需測試。

📌 3. 數據操作(CRUD)

? 插入數據

INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com');

? 批量插入數據

INSERT INTO users (name, age, email) VALUES('Bob', 30, 'bob@example.com'),('Charlie', 22, 'charlie@example.com');

? 查詢數據

SELECT * FROM users;  -- 查詢所有字段
SELECT name, age FROM users;  -- 查詢指定字段
SELECT * FROM users WHERE age > 25;  -- 條件查詢
SELECT * FROM users ORDER BY age DESC;  -- 按年齡降序排列
SELECT * FROM users LIMIT 5;  -- 取前 5 條記錄

? 更新數據

UPDATE users SET age = 26 WHERE name = 'Alice';  -- 更新 Alice 的年齡

? 刪除數據

DELETE FROM users WHERE name = 'Bob';  -- 刪除 Bob

?? 注意點:

  • DELETE 語句如果沒有 WHERE,會刪除整個表的數據
  • 可使用 LIMIT 限制刪除的條數。

📌 4. 約束(Constraints)

? 主鍵約束

CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT,order_number VARCHAR(20) NOT NULL UNIQUE
);

? 外鍵約束

CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id)
);

?? 注意點:

  • FOREIGN KEY 約束確保數據一致性,刪除或更新數據時需注意級聯操作

📌 5. 高級查詢

? 聚合函數

SELECT COUNT(*) FROM users;  -- 統計總人數
SELECT AVG(age) FROM users;  -- 計算平均年齡
SELECT MAX(age), MIN(age) FROM users;  -- 查找最大、最小年齡

? 分組查詢(GROUP BY)

SELECT age, COUNT(*) FROM users GROUP BY age;  -- 按年齡分組統計人數

? 連接查詢(JOIN)

SELECT users.name, orders.order_number
FROM users
JOIN orders ON users.id = orders.user_id;

?? 注意點:

  • JOIN 操作會影響性能,大數據量時需優化索引。

📌 6. 事務控制(Transactions)

? 開啟事務

START TRANSACTION;

? 執行事務

UPDATE users SET age = 40 WHERE name = 'Alice';
COMMIT;  -- 提交事務

? 回滾事務

ROLLBACK;  -- 回滾到事務開始前

?? 注意點:

  • 事務適用于 銀行轉賬訂單處理等操作,確保數據一致性。

📌 7. 索引(Indexes)

? 創建索引

CREATE INDEX idx_name ON users(name);  -- 創建索引

? 查看索引

SHOW INDEX FROM users;  -- 查看索引

? 刪除索引

DROP INDEX idx_name ON users;

?? 注意點:

  • 索引加速查詢,但會降低寫入速度,需平衡。

📌 8. 備份 & 恢復

? 備份數據庫

mysqldump -u root -p mydb > mydb_backup.sql  # 備份數據庫

? 恢復數據庫

mysql -u root -p mydb < mydb_backup.sql  # 還原數據庫

?? 注意點:

  • 定期備份數據,避免數據丟失。

📌 9. 常見問題 & 解決方案

?? 端口占用(3306 被占用)

netstat -tulnp | grep 3306  # 查看占用進程
kill -9 <PID>  # 終止進程

?? root 用戶無權限

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
FLUSH PRIVILEGES;


📌 觸發器(Triggers)

🔹 什么是觸發器?

觸發器(Trigger)是一種特殊的存儲過程,在對數據庫表執行 INSERTUPDATEDELETE 操作時自動觸發執行。用于 數據驗證、日志記錄、自動更新等

? 創建觸發器(案例)

CREATE TRIGGER before_insert_users
BEFORE INSERT ON users
FOR EACH ROW
SET NEW.name = UPPER(NEW.name);

📌 說明:

  • 該觸發器在 users 表執行 INSERT 語句之前觸發,
  • 將新插入的 name 字段轉換為大寫。

? 刪除觸發器

DROP TRIGGER IF EXISTS before_insert_users;

?? 注意點:

  • 觸發器不能被 ALTER 修改,如需修改,需先 DROPCREATE
  • 觸發器執行過程中不能直接修改同一個表的數據,否則會引發遞歸調用。

📌 存儲過程(Stored Procedures)

🔹 什么是存儲過程?

存儲過程(Stored Procedure)是一組預編譯的 SQL 語句集合,封裝一系列數據庫操作,提高執行效率并減少代碼重復。

? 創建存儲過程(案例)

DELIMITER $$
CREATE PROCEDURE GetUserCount()
BEGINSELECT COUNT(*) FROM users;
END $$
DELIMITER ;

📌 說明:

  • DELIMITER $$ 用于改變默認的 ; 結束符,防止 CREATE PROCEDURE 語句因 ; 過早終止。
  • GetUserCount 存儲過程用于統計 users 表的總記錄數。

? 調用存儲過程

CALL GetUserCount();

? 刪除存儲過程

DROP PROCEDURE IF EXISTS GetUserCount;

?? 注意點:

  • 存儲過程適用于 重復執行的復雜 SQL 操作,如報表查詢、數據批量更新等。
  • 存儲過程可接收 輸入參數 并返回 輸出參數

📌 游標(Cursors)

🔹 什么是游標?

游標(Cursor)用于 遍歷查詢結果集,通常用于存儲過程中的批量數據處理。

? 聲明游標

DECLARE cur CURSOR FOR SELECT name FROM users;

? 使用游標(案例)

DELIMITER $$
CREATE PROCEDURE PrintAllUserNames()
BEGINDECLARE done INT DEFAULT 0;DECLARE username VARCHAR(255);DECLARE cur CURSOR FOR SELECT name FROM users;DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;OPEN cur;FETCH cur INTO username;WHILE done = 0 DO-- 這里可以對 username 進行進一步處理SELECT username;FETCH cur INTO username;END WHILE;CLOSE cur;
END $$
DELIMITER ;

📌 說明:

  • DECLARE cur CURSOR FOR 聲明游標,指定查詢語句。
  • OPEN cur; 打開游標。
  • FETCH cur INTO username; 獲取一行數據。
  • CLOSE cur; 關閉游標。

? 調用游標

CALL PrintAllUserNames();

?? 注意點:

  • 使用 DECLARE CONTINUE HANDLER 捕獲游標遍歷結束時的 NOT FOUND 事件。
  • WHILE done = 0 DO 循環執行 FETCH 語句,直到數據全部遍歷完畢。

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

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

相關文章

萬字重談C++——類和對象篇

什么是類&#xff1f; 在編程中&#xff0c;類是用來創建對象的模板。可以把類看作一個藍圖&#xff0c;它定義了對象的屬性&#xff08;特征&#xff09;和方法&#xff08;行為&#xff09;。例如&#xff0c;如果我們有一個“學生”的類&#xff0c;它可能包含學生的名字、…

18認識Qt坐標系

平面直角坐標系(笛卡爾坐標系) 數學上的坐標系 右手坐標系 計算機中的坐標系 左手坐標系 坐標系的原點(0,0) 就是屏幕的左上角 /窗口的左上角 給 Qt 的某個控件,設置位置,就需要指定坐標.對于這個控件來說, 坐標系原點就是相對于父窗口/控件的. QPushButton 的父元素/父控件/父…

量子計算與人工智能的結合:未來科技的雙重革命

引言 在過去幾十年里&#xff0c;人工智能&#xff08;AI&#xff09;和計算能力的提升一直是推動科技進步的重要力量。然而&#xff0c;隨著深度學習和大規模數據處理的發展&#xff0c;傳統計算架構的算力瓶頸逐漸顯現&#xff0c;人工智能的訓練和推理效率受到了限制。在此背…

SEO長尾詞優化策略精要

內容概要 長尾關鍵詞優化是SEO策略中實現精準流量捕獲的核心環節。本文從定位方法、搜索意圖分析、詞庫構建三個維度切入&#xff0c;系統闡述如何通過數據化工具篩選高轉化潛力詞&#xff0c;并結合用戶行為路徑優化內容架構。具體而言&#xff0c;內容將覆蓋關鍵詞挖掘工具的…

基于大模型的主動脈瓣病變預測及治療方案研究報告

目錄 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究意義 二、大模型預測主動脈瓣病變原理 2.1 大模型介紹 2.2 數據收集與處理 2.3 模型訓練與優化 三、術前預測與評估 3.1 主動脈瓣病變類型及程度預測 3.2 患者整體狀況評估 3.3 手術風險預測 四、術中應用與監測…

進程和內存管理

目錄 一.進程的基本信息 1.1進程的定義 1.2進程的特征 1.3進程的組成 1.4線程產生的背景 1.5線程的定義 1.6進程與線程的區別 1.7進程的類別 1.8進程的優先級 1.8.1進程優先級的概念 1.8.2PRI和NI 1.9僵尸進程 1.9.1僵尸進程的定義 1.9.2僵尸進程產生的原因 1.9…

css動態設置div寬高,calc函數

在css中使用calc函數 calc() 是 CSS 中的一種函數&#xff0c;用于動態計算長度值。它允許你在 CSS 屬性中進行數學運算&#xff0c;結合不同的單位&#xff08;如 px、%、em 等&#xff09;&#xff0c;從而創建更加靈活和響應式的布局 表達式規則 運算符&#xff1a;支持加…

飛漿PaddlePaddle 貓狗數據大戰

貓狗數據大戰 1 數據集的準備以及處理操作1.1 數據集1.2 文件解壓操作&#xff08;python&#xff09; 1.3 數據的分類1.4 創建訓練集和測試集 2 網絡構建CNN版本--DeepID 人臉識別網絡結構DeepID 與 CNN 網絡結構的差異 3 深度學習模型訓練和推理的核心設置4 制圖5 訓練6 預測…

Spring Boot后端開發全攻略:核心概念與實戰指南

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、全棧領域優質創作者、高級開發工程師、高級信息系統項目管理師、系統架構師&#xff0c;數學與應用數學專業&#xff0c;10年以上多種混合語言開發經驗&#xff0c;從事DICOM醫學影像開發領域多年&#xff0c;熟悉DICOM協議及…

PPT助手:一款集計時、遠程控制與多屏切換于一身的PPT輔助工具

PPT助手&#xff1a;一款集計時、遠程控制與多屏切換于一身的PPT輔助工具 &#x1f4dd;&#x1f3a4; 在現代化的演講和演示中&#xff0c;如何高效地控制PPT進程、保證展示的流暢性與精準性&#xff0c;成為了每個演講者必須面對的挑戰。無論是商務匯報、學術演講&#xff0…

WEB安全--文件上傳漏洞--php偽協議的利用

一、偽協議介紹 1.1、內容 在 PHP 中&#xff0c;偽協議通常指的是一種通過特定的 URL 協議方案實現某些特殊功能或行為的方式。偽協議通常并不是標準的協議&#xff08;如 HTTP、HTTPS&#xff09;&#xff0c;而是由應用程序或開發者自定義的“偽”協議&#xff0c;用于執行…

高級:高并發架構面試題深度解析

一、引言 在現代互聯網應用開發中&#xff0c;高并發架構設計是確保系統在高負載下仍能穩定、高效運行的關鍵。面試官通過相關問題&#xff0c;考察候選人對高并發系統設計的理解、架構模式的掌握以及在實際項目中解決問題的能力。本文將深入剖析高并發系統的設計原則、常見的…

Opencv之dilib庫:表情識別

一、簡介 在計算機視覺領域&#xff0c;表情識別是一個既有趣又具有挑戰性的任務。它在人機交互、情感分析、安防監控等眾多領域都有著廣泛的應用前景。本文將詳細介紹如何使用 Python 中的 OpenCV 庫和 Dlib 庫來實現一個簡單的實時表情識別系統。 二、實現原理 表情識別系統…

【動態規劃】線性dp——LIS和LCS

參考文章 子序列 一個序列 A &#xff1d; a 1 , a 2 , … , a n A&#xff1d;a_1,a_2,…,a_n A&#xff1d;a1?,a2?,…,an? 中任意刪除若干項&#xff0c;剩余的序列叫做 A 的一個子序列。也可以認為是從序列 A 按原順序保留任意若干項得到的序列。&#xff08;例如&…

umi框架開發移動端h5

1、官網&#xff1a;https://umijs.org/ 2、創建出來的項目 yarn create umi yarn start3、推薦目錄結構 . ├── config │ └── config.ts ├── public//靜態資源 ├── dist ├── mock │ └── app.ts&#xff5c;tsx ├── src │ ├── .umi │ ├── .um…

《Golang高性能網絡編程:構建低延遲服務器應用》

在本文中&#xff0c;我們將深入探討Golang高性能網絡編程&#xff0c;幫助您構建低延遲服務器應用。我們將介紹Golang的網絡編程特性、優化技巧和實際案例&#xff0c;讓您更好地理解和應用Golang在網絡編程領域的優勢。 高性能網絡編程簡介 什么是Golang高性能網絡編程 高性能…

循環結構- P1217-回文質數-第三十四天

洛谷題單 第三十四天&#xff1a;4.3&#xff08;周四&#xff09; 題目&#xff1a;循環結構–P1217 注意&#xff01;&#xff01;&#xff01;本題的解法在初學階段足矣&#xff0c;使用埃氏篩即可全部AC&#xff08;高級算法&#xff0c;優化時間復雜度&#xff09;&…

github鏡像網站的使用

很多時候我們無法訪問github 那么我們可以網上搜索鏡像網站 比如 https://blog.csdn.net/eytha/article/details/144797222 這里可以找到一些鏡像站 然后直接編輯 c:/user/xxx/.gitconfig 內容如 [user]name xxxxemail xxxxhotmail.com [gui]recentrepo D:/ProjectFolder/t…

論定制開發開源 AI 智能名片 S2B2C 商城小程序源碼在零售變革中的角色與價值

摘要&#xff1a;本文深入探討了新零售中 O2O 模式的特點與局限性&#xff0c;指出其雖有導流作用但難以成為企業轉型適應消費大環境的主力做法。強調解決零售根本問題需依靠大零售概念&#xff0c;包括業態融合、情境創造、分解滲透等。同時引入定制開發開源 AI 智能名片 S2B2…

硬件工程師零基礎入門教程(三)

27.二極管的基本結構 二極管的結構就是一個PN節&#xff0c;導通后肯定會存在壓降&#xff08;硅管≈0.7V&#xff1b;鍺管≈0.3V&#xff09;。 其結構就像一個漏斗結構&#xff0c;普通二極管只能單向導通。 注意&#xff1a;二極管兩端不能直接接大于二極管導通壓降的電壓…