最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?DML基本操作示例詳解

 更新時間:2025年09月08日 14:15:25   作者:xclic  
DML包含INSERT、UPDATE、DELETE和SELECT,用于操作數(shù)據(jù)庫數(shù)據(jù),本文通過實例代碼給大家介紹MySQL?DML基本操作,感興趣的朋友跟隨小編一起看看吧

DML 是用于操作數(shù)據(jù)庫中實際數(shù)據(jù)的 SQL 語句集合,主要包括四大操作:插入(INSERT)、查詢(SELECT)、更新(UPDATE)和刪除(DELETE)。

1、INSERT - 插入數(shù)據(jù)

1.1 基本語法

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

注意:

  • 字段順序需與值的順序一一對應(yīng)
  • 可不指定所有字段(未指定的字段將使用默認(rèn)值,如自增主鍵 id、created_at 等)
  • 字符串值需用單引號 ' 包裹
  • 日期時間值可直接用字符串表示(如 '2023-10-01 12:00:00')

1.2 示例詳解

1.2.1 插入完整數(shù)據(jù)(所有列)

-- 假設(shè)表有 id, name, email, age 列,其中 id 是自增主鍵
INSERT INTO users (name, email, age)
VALUES ('張三', 'zhangsan@example.com', 25);

1.2.2 插入部分?jǐn)?shù)據(jù)

-- 只插入 name 和 email,age 使用默認(rèn)值或 NULL
INSERT INTO users (name, email)
VALUES ('李四', 'lisi@example.com');

1.2.3 一次性插入多行數(shù)據(jù)

INSERT INTO users (name, email, age)
VALUES 
('王五', 'wangwu@example.com', 30),
('趙六', 'zhaoliu@example.com', 28),
('孫七', 'sunqi@example.com', 35);

1.2.3 從其他表復(fù)制數(shù)據(jù)插入

-- 將臨時表中的數(shù)據(jù)插入到正式表
INSERT INTO users (name, email, age)
SELECT temp_name, temp_email, temp_age FROM temp_users;

1.2.3 插入時處理重復(fù)鍵

-- 如果遇到重復(fù)的唯一鍵(如email),則更新其他字段
INSERT INTO users (name, email, age)
VALUES ('張三', 'zhangsan@example.com', 26)
ON DUPLICATE KEY UPDATE age = 26, name = '張三';
-- 或者忽略重復(fù)鍵的插入
INSERT IGNORE INTO users (name, email, age)
VALUES ('張三', 'zhangsan@example.com', 26);

2、UPDATE - 更新數(shù)據(jù)

用于修改表中現(xiàn)有的記錄。

2.1 基本語法

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

注意:

  • 嚴(yán)禁省略 WHERE 條件,否則會更新表中所有記錄
  • 可同時更新多個字段,用逗號分隔
  • 可使用函數(shù)或表達(dá)式作為值(如 updated_at = NOW())

2.2 示例詳解

2.2.1 更新單個字段

UPDATE users 
SET email = 'new_email@example.com'
WHERE id = 1;

2.2.2 更新多個字段

UPDATE users 
SET 
    name = '張三豐',
    age = 28,
    email = 'zhangsanfeng@example.com'
WHERE id = 1;

2.2.3 基于原值更新

-- 年齡增加1歲
UPDATE users 
SET age = age + 1
WHERE id = 1;
-- 字符串拼接
UPDATE users 
SET name = CONCAT(name, '先生')
WHERE gender = '男';

2.2.4 使用子查詢更新

-- 將有訂單的用戶標(biāo)記為活躍用戶
UPDATE users 
SET is_active = TRUE
WHERE id IN (SELECT DISTINCT user_id FROM orders);

2.2.5 批量更新

-- 使用 CASE 條件更新
UPDATE users 
SET age_group = 
    CASE 
        WHEN age < 20 THEN '青少年'
        WHEN age BETWEEN 20 AND 40 THEN '青年'
        ELSE '中年及以上'
    END;

3、DELETE - 刪除數(shù)據(jù)

用于從表中刪除記錄。

3.1 基本語法

DELETE FROM table_name
WHERE condition;

3.2 示例詳解

3.2.1 刪除特定記錄

DELETE FROM users 
WHERE id = 1;

3.2.2 刪除多條記錄

-- 刪除所有未激活的用戶
DELETE FROM users 
WHERE is_active = FALSE;
-- 刪除年齡大于100的用戶
DELETE FROM users 
WHERE age > 100;

3.2.3 使用子查詢刪除

-- 刪除沒有訂單的用戶
DELETE FROM users 
WHERE id NOT IN (SELECT DISTINCT user_id FROM orders);

3.2.4 清空表(慎用?。?/h4>
-- 刪除所有記錄
DELETE FROM users;
-- 更快的清空表方式(不可回滾)
TRUNCATE TABLE users;

4、SELECT - 查詢數(shù)據(jù)

用于從數(shù)據(jù)庫中查詢數(shù)據(jù),這是最復(fù)雜和最常用的 DML 語句。

4.1 基本語法

SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...]
[GROUP BY column1, column2, ...]
[HAVING condition]
[LIMIT number];

4.2 示例詳解

4.2.1 查詢所有列

SELECT * FROM users;

4.2.2 查詢特定列

SELECT name, email FROM users;

4.2.3 使用別名

    SELECT 
    name AS 姓名, 
    email AS 郵箱,
    age AS 年齡
FROM users;

4.2.4 使用 WHERE 條件過濾

-- 簡單條件
SELECT * FROM users WHERE age > 25;
-- 多條件組合
SELECT * FROM users 
WHERE age > 25 AND name LIKE '張%';
-- 使用 IN
SELECT * FROM users 
WHERE age IN (25, 30, 35);
-- 使用 BETWEEN
SELECT * FROM users 
WHERE age BETWEEN 25 AND 35;
-- 使用 IS NULL
SELECT * FROM users 
WHERE email IS NULL;

4.2.4 排序結(jié)果

-- 單字段排序
SELECT * FROM users ORDER BY age DESC;
-- 多字段排序
SELECT * FROM users 
ORDER BY age DESC, name ASC;

4.2.5 限制結(jié)果集

-- 前10條記錄
SELECT * FROM users LIMIT 10;
-- 分頁查詢:從第20條開始,取10條
SELECT * FROM users LIMIT 20, 10;
-- 或者使用新語法
SELECT * FROM users LIMIT 10 OFFSET 20;

4.2.6 去重查詢

-- 獲取所有不同的年齡
SELECT DISTINCT age FROM users;

4.2.7 聚合函數(shù)

-- 計數(shù)
SELECT COUNT(*) FROM users;
SELECT COUNT(DISTINCT age) FROM users;
-- 求和、平均、最大、最小
SELECT 
    COUNT(*) AS 總?cè)藬?shù),
    AVG(age) AS 平均年齡,
    MAX(age) AS 最大年齡,
    MIN(age) AS 最小年齡,
    SUM(age) AS 年齡總和
FROM users;

4.2.8 分組查詢

-- 按年齡分組統(tǒng)計
SELECT 
    age,
    COUNT(*) AS 人數(shù)
FROM users
GROUP BY age;
-- 分組后篩選
SELECT 
    age,
    COUNT(*) AS 人數(shù)
FROM users
GROUP BY age
HAVING COUNT(*) > 5;

4.2.9 連接查詢

-- 內(nèi)連接
SELECT 
    u.name,
    o.order_id,
    o.order_date
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 左連接
SELECT 
    u.name,
    o.order_id
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- 多表連接
SELECT 
    u.name,
    p.product_name,
    oi.quantity
FROM users u
JOIN orders o ON u.id = o.user_id
JOIN order_items oi ON o.order_id = oi.order_id
JOIN products p ON oi.product_id = p.id;

4.2.10 子查詢

-- 在 WHERE 中使用子查詢
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users);
-- 在 FROM 中使用子查詢(派生表)
SELECT *
FROM (
    SELECT name, age FROM users WHERE age > 25
) AS adult_users;
-- 在 SELECT 中使用子查詢
SELECT 
    name,
    age,
    (SELECT COUNT(*) FROM orders WHERE user_id = users.id) AS order_count
FROM users;

到此這篇關(guān)于MySQL DML基本操作示例詳解的文章就介紹到這了,更多相關(guān)MySQL DML操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • select?into?from和insert?into?select的區(qū)別舉例詳解

    select?into?from和insert?into?select的區(qū)別舉例詳解

    這篇文章主要介紹了SQL中的SELECT?INTO和INSERT?INTO?SELECT兩種語句的區(qū)別和用法,SELECT?INTO用于創(chuàng)建新表并復(fù)制數(shù)據(jù)到新表中,而INSERT?INTO?SELECT用于將數(shù)據(jù)從一個表插入到已存在的另一個表中,需要的朋友可以參考下
    2025-03-03
  • MySQL數(shù)據(jù)庫存儲的路徑反斜杠"\"消失了的問題解決

    MySQL數(shù)據(jù)庫存儲的路徑反斜杠"\"消失了的問題解決

    文章主要討論了在將包含反斜杠路徑存入數(shù)據(jù)庫時遇到的問題的解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-05-05
  • MySQL分區(qū)之LIST分區(qū)詳解

    MySQL分區(qū)之LIST分區(qū)詳解

    mysql分區(qū)之LIST分區(qū)講解?MySQL中的LIST分區(qū)在很多方面類似于RANGE分區(qū),下面這篇文章主要給大家介紹了關(guān)于MySQL分區(qū)之LIST分區(qū)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • navicat連接mysql數(shù)據(jù)庫查詢很慢的問題及解決過程

    navicat連接mysql數(shù)據(jù)庫查詢很慢的問題及解決過程

    背景是系統(tǒng)設(shè)置完成后遇到問題,原因可能是軟件兼容性或配置錯誤,解決方案是檢查軟件版本和重新配置系統(tǒng)設(shè)置
    2025-11-11
  • centos7.2離線安裝mysql5.7.18.tar.gz

    centos7.2離線安裝mysql5.7.18.tar.gz

    這篇文章主要為大家詳細(xì)介紹了centos7.2離線安裝mysql5.7.18.tar.gz,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • MySQL count(*/column)查詢優(yōu)化的實現(xiàn)

    MySQL count(*/column)查詢優(yōu)化的實現(xiàn)

    count()是SQL中一個常用的聚合函數(shù),其被用來統(tǒng)計記錄的總數(shù),本文主要介紹了MySQL count(*/column)查詢優(yōu)化的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • MySql分組后隨機(jī)獲取每組一條數(shù)據(jù)的操作

    MySql分組后隨機(jī)獲取每組一條數(shù)據(jù)的操作

    這篇文章主要介紹了MySql分組后隨機(jī)獲取每組一條數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • MySQL 數(shù)據(jù)恢復(fù)的多種方法匯總

    MySQL 數(shù)據(jù)恢復(fù)的多種方法匯總

    日常工作中,總會有因手抖、寫錯條件、寫錯表名、錯連生產(chǎn)庫造成的誤刪庫表和數(shù)據(jù)的事情發(fā)生。但是,如果每次刪庫都跑路的話,怕是再也不好找工作了吧!所以,刪庫跑路不是上上策
    2021-06-06
  • MySQL+Canal同步ES延時問題分析及解決過程

    MySQL+Canal同步ES延時問題分析及解決過程

    文章探討了MySQL-Canal-ES架構(gòu)在異構(gòu)數(shù)據(jù)場景中的應(yīng)用,分析了數(shù)據(jù)同步延時問題的根源(如MySQL binlog生成滯后、Canal單線程處理、ES索引寫入瓶頸),并提出全鏈路優(yōu)化方案,包括日志配置調(diào)整、并行解析、批量寫入及監(jiān)控機(jī)制,最終實現(xiàn)高效、低延遲的數(shù)據(jù)處理與查詢
    2025-09-09
  • mySQL中in查詢與exists查詢的區(qū)別小結(jié)

    mySQL中in查詢與exists查詢的區(qū)別小結(jié)

    最近被一個朋友問到mySQL中in查詢和exists的區(qū)別,當(dāng)然只是草草的回答了下,今天偶然看到了一篇關(guān)于mysql中的exists查詢的文章,讀完感覺太”冷落”它了,這里總結(jié)一下,也跟自己常用的in查詢做一下對比。有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2016-11-11

最新評論

昭通市| 西畴县| 赤峰市| 黄冈市| 鸡泽县| 元氏县| 辽源市| 保靖县| 临潭县| 自贡市| 图片| 千阳县| 贞丰县| 正阳县| 滨州市| 荥经县| 邵武市| 邯郸市| 古蔺县| 海盐县| 宁海县| 个旧市| 平定县| 通山县| 左贡县| 呼和浩特市| 德安县| 永德县| 香港 | 女性| 兴山县| 抚远县| 西平县| 辛集市| 上虞市| 昌乐县| 金门县| 抚远县| 岱山县| 灌云县| 乳山市|