【系統全面】常用SQL語句大全

一、基本查詢語句

查詢所有數據:

SELECT * FROM 表名;

查詢特定列:

SELECT 列名1, 列名2 FROM 表名;

條件查詢:

SELECT * FROM 表名 WHERE 條件;

模糊查詢:

SELECT * FROM 表名 WHERE 列名 LIKE '模式%';

排序查詢:

SELECT * FROM 表名 ORDER BY 列名 ASC|DESC;

限制返回行數:

SELECT * FROM 表名 LIMIT 10;

去重查詢:

SELECT DISTINCT 列名 FROM 表名;

二、聚合與分組

聚合函數 - 計數:

SELECT COUNT(*) FROM 表名;

分組查詢:

SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名;

條件分組:

SELECT 列名, COUNT(*) FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 1;

計算總和:

SELECT SUM(列名) FROM 表名;

計算平均值:

SELECT AVG(列名) FROM 表名;

計算最大值:

SELECT MAX(列名) FROM 表名;

計算最小值:

SELECT MIN(列名) FROM 表名;

三、數據操作

插入數據:

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

批量插入數據:

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

更新數據:

UPDATE 表名 SET 列名 = 新值 WHERE 條件;

刪除數據:

DELETE FROM 表名 WHERE 條件;

四、表操作

創建表:

CREATE TABLE 表名 (列名1 數據類型, 列名2 數據類型);

刪除表:

DROP TABLE 表名;

修改表結構:

ALTER TABLE 表名 ADD 列名 數據類型;

刪除表中的列:

ALTER TABLE 表名 DROP COLUMN 列名;

重命名表:

ALTER TABLE 舊表名 RENAME TO 新表名;

五、索引與視圖

創建索引:

CREATE INDEX 索引名 ON 表名 (列名);

刪除索引:

DROP INDEX 索引名;

創建視圖:

CREATE VIEW 視圖名 AS SELECT * FROM 表名;

刪除視圖:

DROP VIEW 視圖名;

六、連接查詢

內連接:

SELECT * FROM 表1 INNER JOIN 表2 ON 表1.列名 =2.列名;

左連接:

SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.列名 =2.列名;

右連接:

SELECT * FROM 表1 RIGHT JOIN 表2 ON 表1.列名 =2.列名;

全連接:

SELECT * FROM 表1 FULL OUTER JOIN 表2 ON 表1.列名 =2.列名;

七、子查詢與集合

子查詢:

SELECT * FROM 表名 WHERE 列名 IN (SELECT 列名 FROM 其他表名);

存在查詢:

SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 其他表名 WHERE 條件);

聯合查詢:

SELECT 列名 FROM 表1 UNION SELECT 列名 FROM 表2;

八、日期與時間

獲取當前時間:

SELECT NOW();

獲取當前日期:

SELECT CURDATE();

日期加法:

SELECT DATE_ADD(日期, INTERVAL 1 DAY);

日期減法:

SELECT DATE_SUB(日期, INTERVAL 1 DAY);

格式化日期:

SELECT DATE_FORMAT(日期, '%Y-%m-%d');

九、字符串處理

字符串連接:

SELECT CONCAT(列名1, 列名2) FROM 表名;

字符串長度:

SELECT LENGTH(列名) FROM 表名;

字符串截取:

SELECT SUBSTRING(列名, 1, 5) FROM 表名;

查找字符串位置:

SELECT LOCATE('子串', 列名) FROM 表名;

大寫轉換:

SELECT UPPER(列名) FROM 表名;

小寫轉換:

SELECT LOWER(列名) FROM 表名;

去除空格:

SELECT TRIM(列名) FROM 表名;

十、其他高級功能

使用CASE語句:

SELECT 列名, CASE WHEN 條件 THEN '值1' ELSE '值2' END FROM 表名;

使用IF語句:

SELECT 列名, IF(條件, '值1', '值2') FROM 表名;

使用COALESCE函數:

SELECT COALESCE(列名, '默認值') FROM 表名;

使用NULLIF函數:

SELECT NULLIF(列名1, 列名2) FROM 表名;

獲取唯一值的數量:

SELECT COUNT(DISTINCT 列名) FROM 表名;

使用GROUP_CONCAT:

SELECT GROUP_CONCAT(列名) FROM 表名 GROUP BY 其他列名;

十一、事務管理

事務開始:

BEGIN;

提交事務:

COMMIT;

回滾事務:

ROLLBACK;

十二、游標與存儲過程

創建游標:

DECLARE 游標名 CURSOR FOR SELECT 列名 FROM 表名;

打開游標:

OPEN 游標名;

獲取游標數據:

FETCH 游標名 INTO 變量名;

關閉游標:

CLOSE 游標名;

創建存儲過程:

CREATE PROCEDURE 存儲過程名 AS BEGIN ... END;

調用存儲過程:

CALL 存儲過程名();

十三、函數與觸發器

創建函數:

CREATE FUNCTION 函數名() RETURNS 數據類型 AS BEGIN ... END;

調用函數:

SELECT 函數名();

創建觸發器:

CREATE TRIGGER 觸發器名 BEFORE INSERT ON 表名 FOR EACH ROW SET 新列 = '值';

刪除觸發器:

DROP TRIGGER 觸發器名;

十四、系統信息查詢

查詢當前用戶:

SELECT CURRENT_USER();

查詢當前數據庫:

SELECT DATABASE();

查詢表的行數和大小:

SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = '數據庫名';

獲取表的創建時間:

SELECT CREATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';

獲取表的修改時間:

SELECT UPDATE_TIME FROM information_schema.TABLES WHERE TABLE_NAME = '表名';

十五、其他實用查詢

使用LIMIT與ORDER BY結合:

SELECT * FROM 表名 ORDER BY 列名 LIMIT 10;

查詢表的外鍵約束:

SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = '數據庫名';

查詢表的主鍵約束:

SELECT CONSTRAINT_NAME, TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA = '數據庫名' AND CONSTRAINT_TYPE = 'PRIMARY KEY';

使用ROLLUP進行分組匯總:

SELECT 列名, SUM(列名2) FROM 表名 GROUP BY 列名 WITH ROLLUP;

獲取前N條記錄:

SELECT * FROM 表名 LIMIT N;

獲取最后N條記錄:

SELECT * FROM 表名 ORDER BY 列名 DESC LIMIT N;

使用NOT EXISTS進行條件判斷:

SELECT * FROM 表名 WHERE NOT EXISTS (SELECT 1 FROM 其他表名 WHERE 條件);

使用IN進行條件判斷:

SELECT * FROM 表名 WHERE 列名 IN (1,2);

使用NOT IN進行條件判斷:

SELECT * FROM 表名 WHERE 列名 NOT IN (1,2);

使用UNION ALL:

SELECT 列名 FROM 表1 UNION ALL SELECT 列名 FROM 表2;

十六、性能優化

使用EXPLAIN分析查詢:

EXPLAIN SELECT * FROM 表名 WHERE 條件;

優化索引:

CREATE INDEX 索引名 ON 表名 (列名);

使用臨時表:

CREATE TEMPORARY TABLE 臨時表名 AS SELECT * FROM 表名;

查詢表的索引:

SHOW INDEX FROM 表名;

查詢數據庫版本:

SELECT VERSION();

十七、常見錯誤處理

捕獲錯誤:

DECLARE CONTINUE HANDLER FOR SQLEXCEPTION BEGIN ... END;

輸出錯誤信息:

SELECT ERROR_MESSAGE();

使用事務處理錯誤:

BEGIN; -- 開始事務
-- 執行SQL語句
-- 如果有錯誤,ROLLBACK

十八、數據備份與恢復

備份數據庫:

mysqldump -u 用戶名 -p 數據庫名 > 備份文件.sql

恢復數據庫:

mysql -u 用戶名 -p 數據庫名 < 備份文件.sql

十九、數據導入與導出

導入數據:

LOAD DATA INFILE '文件路徑' INTO TABLE 表名;

導出數據:

SELECT * INTO OUTFILE '文件路徑' FROM 表名;

二十、常用工具與命令

顯示當前數據庫:

SELECT DATABASE();

顯示所有數據庫:

SHOW DATABASES;

顯示所有表:

SHOW TABLES;

顯示表結構:

DESCRIBE 表名;

顯示當前連接信息:

SHOW PROCESSLIST;

顯示數據庫使用情況:

SELECT table_schema AS '數據庫', SUM(data_length + index_length) / 1024 / 1024 AS '大小(MB)' FROM information_schema.TABLES GROUP BY table_schema;

顯示表的行數:

SELECT COUNT(*) FROM 表名;

顯示用戶權限:

SHOW GRANTS FOR '用戶名'@'主機名';

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

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

相關文章

Spring之SSM整合流程詳解(Spring+SpringMVC+MyBatis)

Spring之SSM整合流程詳解-SpringSpringMVCMyBatis一、SSM整合的核心思路二、環境準備與依賴配置2.1 開發環境2.2 Maven依賴&#xff08;pom.xml&#xff09;三、整合配置文件&#xff08;核心步驟&#xff09;3.1 數據庫配置&#xff08;db.properties&#xff09;3.2 Spring核…

C++STL系列之set和map系列

前言 set和map都是關聯式容器&#xff0c;stl中樹形結構的有四種&#xff0c;set&#xff0c;map&#xff0c;multiset,multimap.本次主要是講他們的模擬實現和用法。 一、set、map、multiset、multimap set set的中文意思是集合&#xff0c;集合就說明不允許重復的元素 1……

Linux 磁盤掛載,查看uuid

lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINT,SIZEsudo ntfsfix /dev/nvme1n1p1sudo mount -o remount,rw /dev/nvme1n1p1 /media/yake/Datasudo ntfsfix /dev/sda2sudo mount -o remount,rw /dev/sda2 /media/yake/MyData

【AJAX】XMLHttpRequest、Promise 與 axios的關系

目錄 一、AJAX原理 —— XMLHttpRequest 1.1 使用XMLHttpRequest 二、 XMLHttpRequest - 查詢參數 &#xff08;就是往服務器后面拼接要查詢的字符串&#xff09; 三、 地區查詢 四、 XMLHttpRequest - 數據提交 五、 認識Promise 5.1 為什么 JavaScript 需要異步&#…

C++中的stack和queue

C中的stack和queue 前言 這一節的內容對于stack和queue的使用介紹會比較少&#xff0c;主要是因為stack和queue的使用十分簡單&#xff0c;而且他們的功能主要也是在做題的時候才會顯現。這一欄目暫時不會寫關于做題的內容&#xff0c;后續我會額外開一個做題日記的欄目的。 這…

Spring Bean生命周期七步曲:定義、實例化、初始化、使用、銷毀

各位小猿&#xff0c;程序員小猿開發筆記&#xff0c;希望大家共同進步。 引言 1.整體流程圖 2.各階段分析 1??定義階段 1.1 定位資源 Spring 掃描 Component、Service、Controller 等注解的類或解析 XML/Java Config 中的 Bean 定義 1.2定義 BeanDefinition 解析類信息…

API安全監測工具:數字經濟的免疫哨兵

&#x1f4a5; 企業的三重致命威脅 1. 漏洞潛伏的定時炸彈 某支付平臺未檢測出API的批量數據泄露漏洞&#xff0c;導致230萬用戶信息被盜&#xff0c;面臨GDPR 1.8億歐元罰單&#xff08;IBM X-Force 2024報告&#xff09;。傳統掃描器對邏輯漏洞漏檢率超40%&#xff08;OWASP基…

Matplotlib詳細教程(基礎介紹,參數調整,繪圖教程)

目錄 一、初識Matploblib 1.1 安裝 Matplotlib 1.2、Matplotlib 的兩種接口風格 1.3、Figure 和 Axes 的深度理解 1.4 設置畫布大小 1.5 設置網格線 1.6 設置坐標軸 1.7 設置刻度和標簽 1.8 添加圖例和標題 1.9 設置中文顯示 1.10 調整子圖布局 二、常用繪圖教程 2…

Redis高可用架構演進面試筆記

1. 主從復制架構 核心概念Redis單節點并發能力有限&#xff0c;通過主從集群實現讀寫分離提升性能&#xff1a; Master節點&#xff1a;負責寫操作Slave節點&#xff1a;負責讀操作&#xff0c;從主節點同步數據 主從同步流程 全量同步&#xff08;首次同步&#xff09;建立連接…

無人機保養指南

定期清潔無人機在使用后容易積累灰塵、沙礫等雜物&#xff0c;需及時清潔。使用軟毛刷或壓縮空氣清除電機、螺旋槳和機身縫隙中的雜質。避免使用濕布直接擦拭電子元件&#xff0c;防止短路。電池維護鋰電池是無人機的核心部件&#xff0c;需避免過度放電或充電。長期存放時應保…

vlm MiniCPM 學習部署實戰

目錄 開源地址&#xff1a; 模型repo下載&#xff1a; 單圖片demo&#xff1a; 多圖推理demo&#xff1a; 論文學習筆記&#xff1a; 部署完整教程&#xff1a; 微調教程&#xff1a; 部署&#xff0c;微調教程&#xff0c;視頻實測 BitCPM4 技術報告 創意&#xff1…

92套畢業相冊PPT模版

致青春某大學同學聚會PPT模版&#xff0c;那些年我們一起走過的歲月PPT模版&#xff0c;某學院某班同學聯誼會PPT模版&#xff0c;匆匆那年PPT模版&#xff0c;青春的紀念冊PPT模版&#xff0c;梔子花開PPT模版&#xff0c;畢業紀念冊PPT模版。 92套畢業相冊PPT模版&#xff1…

爬蟲基礎概念

網絡爬蟲概述 概念 網絡爬蟲&#xff08;Web Crawler&#xff09;&#xff0c;也稱為網絡蜘蛛&#xff08;Web Spider&#xff09;或機器人&#xff08;Bot&#xff09;&#xff0c;是一種自動化程序&#xff0c;用于系統地瀏覽互聯網并收集網頁信息。它模擬人類瀏覽器行為&…

java8 stream流操作的flatMap

我們來詳細解釋一下 Java 8 Stream API 中的 flatMap 操作。理解 flatMap 的關鍵在于將其與 map 操作進行對比。??核心概念&#xff1a;????map 操作&#xff1a;??作用&#xff1a;將一個流中的每個元素??轉換??為另一個元素&#xff08;類型可以不同&#xff09;…

開源UI生態掘金:從Ant Design二次開發到行業專屬組件的技術變現

開源UI生態掘金&#xff1a;從Ant Design二次開發到行業專屬組件的技術變現內容摘要在開源UI生態中&#xff0c;Ant Design作為一款廣受歡迎的UI框架&#xff0c;為開發者提供了強大的基礎組件。然而&#xff0c;面對不同行業的特定需求&#xff0c;僅僅依靠現有的組件往往難以…

Object Sense (OSE):一款從編輯器腳本發展起來的編程語言

引言&#xff1a;從Vim編輯器走出的語言在編程語言的世界里&#xff0c;許多革命性的創新往往源于看似簡單的工具。Object Sense&#xff08;簡稱OSE&#xff09;的誕生&#xff0c;便與一款經典文本編輯器——Vim息息相關。它的前身是Vim的腳本語言VimL&#xff08;Vimscript&…

我考PostgreSQL中級專家證書二三事

1. 為什么選擇PGCE&#xff1f;PostgreSQL的開源特性、高性能和高擴展性早已讓我心生向往&#xff0c;而PGCE認證不僅是對技術能力的認可&#xff0c;更是一張通往更高職業舞臺的“通行證”。官方資料提到&#xff0c;PGCE考試涵蓋性能優化、高可用架構、復雜查詢處理、內核原理…

Java 動態導出 Word 登記表:多人員、分頁、動態表格的最佳實踐

本文詳細講解如何使用 Java 動態導出包含多人員報名表的 Word 文檔&#xff0c;每人占據獨立一頁&#xff0c;并支持動態表格行&#xff08;如個人經歷&#xff09;。我們對比了多種實現方案&#xff0c;最終推薦基于 Freemarker XML 模板 或 docx4j 的靈活方式&#xff0c;并…

【element-ui el-table】多選表格勾選時默認勾選了全部,row-key綁定異常問題解決

項目場景&#xff1a; Element-UI的el-table組件row-key使用問題 同一個頁面使用了幾個table&#xff0c;這幾個table都使用了多選&#xff0c;row-key屬性&#xff0c;其中row-key的綁定方式都是用的靜態綁定&#xff0c;row-key“username”或row-key“id”&#xff0c;可正常…

C#注釋技巧與基礎編程示例

以下是一個包含基礎注釋的 C# 程序示例&#xff0c;展示了 C# 中各類注釋的使用方法&#xff1a;using System;namespace BasicCSharpProgram {/// <summary>/// Program 類是應用程序的入口點/// 包含 Main 方法作為程序執行的起點/// </summary>public class Pro…