mysql基本sql語句大全

十分想念順店雜可。。。

以下是 MySQL 中常用的基本 SQL 語句大全,按功能分類整理,包含語法和示例,方便參考使用:

一、數據庫操作(DDL)

用于創建、刪除、切換數據庫。

  1. 創建數據庫

    -- 基本語法
    CREATE DATABASE [IF NOT EXISTS] 數據庫名 [CHARACTER SET 字符集] [COLLATE 排序規則];-- 示例:創建名為testdb的數據庫,指定utf8mb4字符集
    CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    

  2. 刪除數據庫

    -- 基本語法
    DROP DATABASE [IF EXISTS] 數據庫名;-- 示例:刪除testdb數據庫(謹慎操作!)
    DROP DATABASE IF EXISTS testdb;
    
  3. 切換 / 使用數據庫

    USE 數據庫名;-- 示例:使用testdb數據庫
    USE testdb;
    
  4. 查看所有數據庫

    SHOW DATABASES;
    

二、表操作(DDL)

用于創建、修改、刪除表結構。

  1. 創建表

    -- 基本語法
    CREATE TABLE [IF NOT EXISTS] 表名 (列名1 數據類型 [約束],列名2 數據類型 [約束],...[表級約束]
    ) [ENGINE=存儲引擎] [CHARACTER SET 字符集];-- 示例:創建user表
    CREATE TABLE IF NOT EXISTS user (id INT PRIMARY KEY AUTO_INCREMENT, -- 主鍵,自增name VARCHAR(50) NOT NULL, -- 非空age INT DEFAULT 0, -- 默認值phone VARCHAR(20) UNIQUE, -- 唯一約束create_time DATETIME
    ) ENGINE=InnoDB CHARACTER SET utf8mb4;
    
  2. 查看表結構

    -- 方法1
    DESCRIBE 表名;
    -- 簡寫
    DESC 表名;-- 方法2(更詳細)
    SHOW COLUMNS FROM 表名;
    
  3. 修改表結構(ALTER TABLE)

    -- 添加列
    ALTER TABLE 表名 ADD 列名 數據類型 [約束];
    -- 示例:給user表添加email列
    ALTER TABLE user ADD email VARCHAR(100) UNIQUE;-- 修改列類型/約束
    ALTER TABLE 表名 MODIFY 列名 新數據類型 [新約束];
    -- 示例:修改age列為INT,允許NULL
    ALTER TABLE user MODIFY age INT NULL;-- 重命名列
    ALTER TABLE 表名 CHANGE 舊列名 新列名 數據類型 [約束];
    -- 示例:將phone列重命名為mobile
    ALTER TABLE user CHANGE phone mobile VARCHAR(20) UNIQUE;-- 刪除列
    ALTER TABLE 表名 DROP 列名;
    -- 示例:刪除email列
    ALTER TABLE user DROP email;-- 重命名表
    ALTER TABLE 舊表名 RENAME TO 新表名;
    
  4. 刪除表

    -- 基本語法
    DROP TABLE [IF EXISTS] 表名;-- 示例:刪除user表
    DROP TABLE IF EXISTS user;
    
  5. 查看當前數據庫所有表

    SHOW TABLES;
    

三、數據操作(DML)

用于插入、更新、刪除表中的數據。

  1. 插入數據(INSERT)

    -- 插入完整行(按表結構順序)
    INSERT INTO 表名 VALUES (值1, 值2, ...);-- 插入指定列(推薦,更靈活)
    INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);-- 批量插入
    INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2), (值3, 值4), ...;-- 示例:插入用戶數據
    INSERT INTO user (name, age, mobile, create_time) 
    VALUES ('張三', 25, '13800138000', '2023-01-01 10:00:00');-- 批量插入
    INSERT INTO user (name, age) VALUES ('李四', 30), ('王五', 28);
    
  2. 更新數據(UPDATE)

    -- 基本語法(務必加WHERE,否則更新全表!)
    UPDATE 表名 SET 列1=值1, 列2=值2, ... [WHERE 條件];-- 示例:更新張三的年齡為26
    UPDATE user SET age=26 WHERE name='張三';-- 多條件更新
    UPDATE user SET mobile='13900139000' WHERE name='李四' AND age=30;
    
  3. 刪除數據(DELETE)

    -- 基本語法(務必加WHERE,否則刪除全表數據!)
    DELETE FROM 表名 [WHERE 條件];-- 示例:刪除年齡大于50的用戶
    DELETE FROM user WHERE age > 50;-- 清空表(速度更快,自增ID會重置)
    TRUNCATE TABLE 表名; -- 等價于刪除表再重建,無法回滾
    

四、數據查詢(DQL)

用于從表中查詢數據,核心是SELECT語句。

  1. 基礎查詢

    -- 查詢所有列(不推薦,效率低)
    SELECT * FROM 表名;-- 查詢指定列
    SELECT 列1, 列2, ... FROM 表名;-- 示例:查詢user表的name和age列
    SELECT name, age FROM user;
    
  2. 帶條件查詢(WHERE)

    SELECT 列名 FROM 表名 WHERE 條件;-- 條件運算符:=、!=、>、<、>=、<=、BETWEEN...AND、IN、LIKE、IS NULL等
    -- 示例1:查詢年齡=25的用戶
    SELECT * FROM user WHERE age = 25;-- 示例2:查詢年齡在20-30之間的用戶
    SELECT * FROM user WHERE age BETWEEN 20 AND 30;-- 示例3:查詢姓名包含"張"的用戶(%匹配任意字符,_匹配單個字符)
    SELECT * FROM user WHERE name LIKE '%張%';-- 示例4:查詢手機號為空的用戶
    SELECT * FROM user WHERE mobile IS NULL;-- 多條件:AND(且)、OR(或)、NOT(非)
    SELECT * FROM user WHERE age > 25 AND name LIKE '李%';
    
  3. 排序(ORDER BY)

    SELECT 列名 FROM 表名 [WHERE 條件] ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC];
    -- ASC:升序(默認),DESC:降序-- 示例:按年齡降序排列,年齡相同則按創建時間升序
    SELECT * FROM user ORDER BY age DESC, create_time ASC;
    
  4. 分頁(LIMIT)

    SELECT 列名 FROM 表名 [WHERE 條件] LIMIT 起始位置, 條數;
    -- 起始位置從0開始(可省略,默認0)-- 示例1:查詢前10條數據
    SELECT * FROM user LIMIT 10;-- 示例2:查詢第11-20條數據(起始位置10,取10條)
    SELECT * FROM user LIMIT 10, 10;
    
  5. 去重(DISTINCT)

    SELECT DISTINCT 列名 FROM 表名;-- 示例:查詢所有不重復的年齡
    SELECT DISTINCT age FROM user;
    
  6. 聚合函數
    常用聚合函數:COUNT()(計數)、SUM()(求和)、AVG()(平均值)、MAX()(最大值)、MIN()(最小值)。

    -- 示例1:統計用戶總數
    SELECT COUNT(*) AS total_users FROM user; -- *包含NULL,COUNT(列名)不包含NULL-- 示例2:計算平均年齡
    SELECT AVG(age) AS avg_age FROM user;-- 示例3:查詢最大年齡和最小年齡
    SELECT MAX(age) AS max_age, MIN(age) AS min_age FROM user;
    
  7. 分組查詢(GROUP BY + HAVING)

    • GROUP BY:按列分組,常與聚合函數搭配。
    • HAVING:篩選分組后的結果(類似 WHERE,但用于分組)。
    -- 示例1:按年齡分組,統計每個年齡的用戶數
    SELECT age, COUNT(*) AS count FROM user GROUP BY age;-- 示例2:篩選用戶數>=2的年齡組
    SELECT age, COUNT(*) AS count FROM user GROUP BY age HAVING count >= 2;
    
  8. 多表連接查詢
    假設有user表(id, name)和order表(id, user_id, amount),通過user_id關聯。

    -- 內連接(INNER JOIN):只返回兩表匹配的行
    SELECT u.name, o.amount 
    FROM user u
    INNER JOIN `order` o ON u.id = o.user_id;-- 左連接(LEFT JOIN):返回左表所有行,右表無匹配則為NULL
    SELECT u.name, o.amount 
    FROM user u
    LEFT JOIN `order` o ON u.id = o.user_id;-- 右連接(RIGHT JOIN):返回右表所有行,左表無匹配則為NULL
    SELECT u.name, o.amount 
    FROM user u
    RIGHT JOIN `order` o ON u.id = o.user_id;
    
  9. 子查詢
    嵌套在其他查詢中的查詢,可作為條件、結果集或臨時表。

    -- 示例1:子查詢作為條件(查詢有訂單的用戶)
    SELECT * FROM user 
    WHERE id IN (SELECT DISTINCT user_id FROM `order`);-- 示例2:子查詢作為臨時表(查詢每個用戶的最新訂單)
    SELECT u.name, o.amount 
    FROM user u
    JOIN (SELECT user_id, MAX(id) AS max_order_id FROM `order` GROUP BY user_id
    ) tmp ON u.id = tmp.user_id
    JOIN `order` o ON tmp.max_order_id = o.id;
    

五、索引操作(DDL)

-- 創建普通索引
CREATE INDEX 索引名 ON 表名(列名);
-- 示例:給user表的name列創建索引
CREATE INDEX idx_user_name ON user(name);-- 創建復合索引
CREATE INDEX 索引名 ON 表名(列1, 列2, ...);
-- 示例:創建(name, age)復合索引
CREATE INDEX idx_user_name_age ON user(name, age);-- 創建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名);-- 刪除索引
DROP INDEX 索引名 ON 表名;-- 查看表中所有索引
SHOW INDEX FROM 表名;

六、用戶與權限(DCL)

-- 創建用戶
CREATE USER '用戶名'@'主機名' IDENTIFIED BY '密碼';
-- 示例:允許localhost登錄的user1,密碼123456
CREATE USER 'user1'@'localhost' IDENTIFIED BY '123456';-- 授予權限(ALL:所有權限,SELECT:查詢權限等)
GRANT 權限列表 ON 數據庫名.表名 TO '用戶名'@'主機名';
-- 示例:授予user1對testdb所有表的查詢和插入權限
GRANT SELECT, INSERT ON testdb.* TO 'user1'@'localhost';-- 撤銷權限
REVOKE 權限列表 ON 數據庫名.表名 FROM '用戶名'@'主機名';-- 刪除用戶
DROP USER '用戶名'@'主機名';-- 查看用戶權限
SHOW GRANTS FOR '用戶名'@'主機名';

七、事務控制

-- 開始事務
START TRANSACTION;
-- 或 BEGIN;-- 提交事務(永久生效)
COMMIT;-- 回滾事務(撤銷操作)
ROLLBACK;-- 設置事務隔離級別(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)
SET TRANSACTION ISOLATION LEVEL 隔離級別;

常用輔助語句

  • 查看當前數據庫:SELECT DATABASE();
  • 查看 MySQL 版本:SELECT VERSION();
  • 查看當前用戶:SELECT USER();
  • 清空查詢緩存(MySQL 8.0 前):RESET QUERY CACHE;

以上涵蓋了 MySQL 日常開發中最常用的 SQL 語句,實際使用時需根據具體場景靈活組合,復雜查詢建議用EXPLAIN分析執行計劃以優化性能。

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

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

相關文章

構建響應式在線客服聊天系統的前端實踐 Vue3+ElementUI + CSS3

構建響應式客服聊天系統的前端實踐在當今數字化時代&#xff0c;客服系統已成為企業與客戶溝通的重要橋梁。一個優秀的在線客服系統不僅需要功能完善&#xff0c;還需要在各種設備上都能提供良好的用戶體驗。本文將介紹如何構建一個響應式的客服聊天界面&#xff0c;確保在桌面…

C語言memcpy函數詳解:高效內存復制的實用工具

目錄1. memcpy函數是什么&#xff1f;函數原型2. memcpy函數的用法運行結果&#xff1a;代碼解析3. memcpy函數的注意事項3.1 內存區域不重疊3.2 緩沖區大小管理3.3 指針有效性3.4 性能優勢3.5 平臺兼容性4. 實際應用場景4.1 數組復制4.2 動態內存復制4.3 結構體復制4.4 緩沖區…

多級緩存架構:新品咖啡上線引發的數據庫壓力風暴與高并發實戰化解方案

一、背景&#xff1a;新品咖啡風暴與數據庫之痛想象一下&#xff1a;某知名咖啡品牌推出限量版“星空冷萃”&#xff0c;通過社交媒體引爆流量。上午10點開售瞬間&#xff0c;APP與網站涌入數十萬用戶&#xff0c;商品詳情頁、庫存查詢請求如海嘯般涌向后臺。傳統架構下&#x…

888. 公平的糖果交換

目錄 題目鏈接&#xff1a; 題目&#xff1a; 解題思路&#xff1a; 代碼&#xff1a; 總結&#xff1a; 題目鏈接&#xff1a; 888. 公平的糖果交換 - 力扣&#xff08;LeetCode&#xff09; 題目&#xff1a; 解題思路&#xff1a; 前一個數組和sumA,后一個數組sumB,然…

Day01 項目概述,環境搭建

軟件開發整體介紹 軟件開發流程 需求分析&#xff1a;需求規格說明書、產品原型 設計&#xff1a;UI 設計、數據庫設計&#xff0c;接口設計 編碼&#xff1a;項目代碼、單元測試 測試&#xff1a;測試用例、測試報告 上線運維&#xff1a;軟件環境安裝、配置 角色分工 項…

Perl Socket 編程

Perl Socket 編程 引言 Perl 語言作為一種強大的腳本語言,在系統管理和網絡編程領域有著廣泛的應用。Socket 編程是網絡編程的核心,它允許程序在網絡中進行數據傳輸。本文將詳細介紹 Perl 語言中的 Socket 編程,包括 Socket 的概念、創建、通信以及一些高級應用。 Socket…

3 種簡單方法備份 iPhone 上的短信 [2025]

短信通常承載著我們工作和私人生活中有價值的信息和美好的回憶&#xff0c;以及我們不想丟失的特別對話。這就是為什么備份 iPhone 短信如此重要的原因。如果出現問題&#xff0c;比如意外刪除或系統問題&#xff0c;備份意味著你可以輕松地恢復短信。在本指南中&#xff0c;我…

Linux庫路徑三劍客:/usr/lib、/usr/local/lib、~/.local/lib 詳解與避坑指南

在Linux的世界里&#xff0c;/usr/lib、/usr/local/lib和~/.local/lib這三個路徑看似只是簡單的文件夾&#xff0c;實則是軟件包管理和開發環境的基石。理解它們的區別&#xff0c;不僅能讓你的pip install、make install等命令得心應手&#xff0c;更能避免ImportError、comma…

python 之 autogen-core《二》代理運行環境、應用程序堆棧、代理生命周期

支持兩種類型的運行時環境&#xff1a;獨立式和分布式 獨立代理運行時 獨立運行時適用于單進程應用程序&#xff0c;其中所有代理均使用同一種編程語言實現并在同一進程中運行。在 Python API 中&#xff0c;獨立運行時的一個示例是SingleThreadedAgentRuntime。 在這里&…

歐姆龍PLC CP1H在視覺檢測產線中的應用:以太網模塊實現上位機實時采樣與觸摸屏報警聯動

一、行業痛點與解決方案概述以某汽車零部件制造企業的生產線檢測系統為例&#xff0c;該企業原本使用歐姆龍CP1H PLC作為主控制器。由于CP1H PLC本身不具備以太網接口&#xff0c;只能通過串口&#xff08;如RS232或RS485&#xff09;進行通訊。這種通訊方式存在傳輸距離短、傳…

快速找到兩個 Word 文檔之間文字的區別

要快速找到兩個 Word 文檔之間文字的區別&#xff0c;可以使用 Microsoft Word 自帶的“比較&#xff08;Compare&#xff09;”功能&#xff0c;步驟如下&#xff1a; ? 方法一&#xff1a;使用 Microsoft Word 的“比較”功能 打開 Microsoft Word。 點擊頂部菜單欄中的 “…

ZK首次連接失敗,第二次連接成功的問題解決方案

問題 項目中配置zk后&#xff0c;啟動時zk第一次鏈接總是失敗&#xff0c;過一會后又會鏈接成功。異常如下&#xff1a; "C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" -agentlib:jdwptransportdt_socket,address127.0.0.1:58217,suspendy,servern -XX:TieredS…

OpenCV cv2.flip() 函數詳解與示例

本文介紹了 OpenCV 中 cv2.flip() 函數的用法&#xff0c;該函數可實現圖像的水平、垂直及雙向翻轉。通過設置 flipCode 參數為 0、1 或 -1&#xff0c;用戶可分別獲得上下顛倒、左右鏡像或 180 旋轉的效果。文中提供了詳細的參數說明、示例代碼以及三種翻轉模式的效果對比&…

負氧離子監測站:守護清新空氣的科技衛士

負氧離子監測站&#xff1a;守護清新空氣的科技衛士 柏峰【BF-FLZ】在公園漫步&#xff0c;在森林中穿梭&#xff0c;或者靠近瀑布傾聽水流的轟鳴&#xff0c;我們常常會感嘆 “空氣真清新”。這種清新的感覺&#xff0c;很大程度上要歸功于空氣中的負氧離子。負氧離子&#xf…

智慧交通場景下 mAP↑28%:陌訊多模態融合算法實戰解析

原創聲明本文為原創技術解析&#xff0c;技術參數及架構設計參考自《陌訊技術白皮書》&#xff0c;禁止未經授權的轉載與商用。一、行業痛點&#xff1a;智慧交通的檢測困境智慧交通系統作為城市基建的核心組成&#xff0c;正面臨著復雜環境下的檢測精度瓶頸。據《中國智慧交通…

內容分發機制研究:實測一款多源短視頻聚合App

還在為刷短視頻總是看到重復內容而煩惱嗎&#xff1f;今天阿燦給大家推薦一款安卓用戶專屬的短視頻神器&#xff0c;賞顏悅色 &#xff0c;聽名字就應該知道這神器差不了&#xff01;02軟件介紹這款app只有2.1版本&#xff0c;但功能已經相當強大了。它最大的特點就是多接口隨機…

OpenAI 的 GPT-5 來了

OpenAI 推出了新的旗艦 AI 模型 GPT-5&#xff0c;它將為該公司的下一代 ChatGPT 提供支持。 https://openai.com/index/introducing-gpt-5/ GPT-5 于周四發布&#xff0c;是 OpenAI 首個“統一”AI 模型&#xff0c;它將O 系列模型的推理能力與GPT 系列的快速響應能力相結合…

Spring AMQP 入門與實踐:整合 RabbitMQ 構建可靠消息系統

Spring AMQP 入門與實踐&#xff1a;整合 RabbitMQ 構建可靠消息系統 一、Spring AMQP 是什么&#xff1f; Spring AMQP&#xff08;Application Messaging Protocol&#xff09;是 Spring 官方提供的對 AMQP 協議的封裝&#xff0c;其核心模塊有兩個&#xff1a; spring-am…

圖像處理控件Aspose.Imaging教程:使用 C# 將 SVG 轉換為 EMF

Aspose.Imaging for .NET是一款深受 .NET 開發人員喜愛的圖像處理 SDK&#xff0c;因為它靈活且易于開發人員使用。EMF 圖像文件格式提供出色的打印質量和可擴展性。此外&#xff0c;這種圖像文件格式還節省存儲空間。Aspose.Imaging for .NET 能夠使 SVG 到 EMF 的轉換變得簡…

網絡編程——套接字

目錄 一、Socket套接字 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;分類 1.流套接字&#xff1a; 2.數據報套接字 3.原始套接字 二、TCP協議VSUDP協議 &#xff08;一&#xff09;有連接VS無連接 &#xff08;二&#xff09;可靠傳輸VS不可靠傳輸 &a…