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

MySQL之增刪改查(CRUD)使用及說明

 更新時間:2026年04月23日 14:19:41   作者:當(dāng)戰(zhàn)神遇到編程  
文章主要述了CRUD操作,即數(shù)據(jù)庫的增刪查改四種核心操作,具體介紹了每種操作的語法、應(yīng)用場景和注意事項(xiàng),如插入表操作、條件查詢、排序查詢、分頁查詢等,文章還提供了大量示例,幫助讀者更好地理解和掌握這些操作

一、什么是 CRUD?

CRUD 是數(shù)據(jù)庫最核心的四種操作:

字母含義SQL語句
CCreate(新增)INSERT
RRetrieve(查詢)SELECT
UUpdate(修改)UPDATE
DDelete(刪除)DELETE

二、準(zhǔn)備測試表

CREATE TABLE student(
    id INT,
    name VARCHAR(20),
    age INT
);

三、C:INSERT 新增數(shù)據(jù)

向表中插入記錄。

1.插入一條數(shù)據(jù)

INSERT INTO student VALUES(1,'Tom',18);

2.指定字段插入

INSERT INTO student(id,name) VALUES(2,'Jerry');

3.插入多條數(shù)據(jù)

INSERT INTO student VALUES(3,'Alice',20),(4,'Bob',19);

4.插入查詢結(jié)果

當(dāng)你需要把一張表的數(shù)據(jù)“復(fù)制”到另一張表時使用。

-- 目標(biāo)表(用于備份或遷移)
CREATE TABLE student_backup(
    id INT,
    name VARCHAR(20),
    age INT
);

場景一:兩張表結(jié)構(gòu)完全一樣(快速全量備份)

如果你只是想做一個完全一致的備份,可以使用 * 簡寫。

-- 只要 student_backup 的字段數(shù)量、順序、類型與 student 完全一致,即可使用
INSERT INTO student_backup SELECT * FROM student WHERE age > 18;

場景二:指定字段插入(靈活遷移)

如果兩張表結(jié)構(gòu)不同,或者你只想復(fù)制其中某幾列,必須顯式指定列名。

-- 僅將 id 和 name 備份,age 字段在目標(biāo)表中可能是默認(rèn)值或 NULL
INSERT INTO student_backup (id, name) 
SELECT id, name FROM student WHERE age > 18;

四、R:SELECT 查詢數(shù)據(jù)

查詢表中的記錄。

1.查詢?nèi)繑?shù)據(jù)

SELECT * FROM student;

2.查詢指定字段

SELECT name,age FROM student;

3.查詢時使用表達(dá)式

SELECT name, age + 1 AS next_age FROM student;

說明:

  • 表達(dá)式 (age + 1):實(shí)時計算結(jié)果,不會修改數(shù)據(jù)庫中的原始數(shù)據(jù)。
  • 別名 (next_age):給結(jié)果集中的列起個新名字,方便查看。

4.去重查詢

SELECT DISTINCT age FROM student;

說明:

  • 作用:過濾掉結(jié)果集中的重復(fù)行。
  • 注意:這只是展示效果,數(shù)據(jù)庫里的原始記錄并不會被刪除。

5.條件查詢

  • 比較運(yùn)算符:
運(yùn)算符說明
>, >=, <, <=大于、大于等于、小于、小于等于
=等于
!=, <>不等于
BETWEEN … AND …范圍查詢
IN(…)在指定集合中
IS NULL判斷為空
IS NOT NULL判斷不為空
LIKE模糊查詢
  • 邏輯運(yùn)算符:
運(yùn)算符說明
AND多個條件同時成立
OR任意一個條件成立
NOT條件取反

1.查詢年齡大于18

SELECT * FROM student WHERE age > 18;

2.查詢姓名為Tom

SELECT * FROM student WHERE name = 'Tom';

3.多條件查詢

SELECT * FROM student WHERE age >= 18 AND age <= 20;

4.范圍查詢

SELECT * FROM student WHERE age BETWEEN 18 AND 20;
  • 閉區(qū)間:包含邊界值,等同于 age >= 18 AND age <= 20

5.集合查詢

SELECT * FROM student WHERE name IN ('Tom','Jerry');
  • 邏輯:匹配括號內(nèi)任意一個值即可。
  • 優(yōu)勢:比寫一長串的 OR 更加簡潔高效。

6.模糊查詢

SELECT * FROM student WHERE name LIKE 'T%';

說明:

  • %:任意多個字符
  • _:任意一個字符

7.空值查詢

SELECT * FROM student WHERE email IS NULL;

6.排序查詢

排序時,需要選取一個或多個列作為比較依據(jù)。

1.基礎(chǔ)語法

-- 升序(默認(rèn)):從小到大排。ASC 可省略。
SELECT * FROM student ORDER BY age ASC; 

-- 降序:從大到小排。
SELECT * FROM student ORDER BY age DESC;

-- 使用表達(dá)式別名排序(ORDER BY 在 SELECT 之后執(zhí)行,所以認(rèn)識別名)
SELECT name, age + 1 AS next_age FROM student ORDER BY next_age DESC;

2.多列排序(優(yōu)先級)

-- 先按id升序,id相同時,再按age降序
SELECT * FROM student ORDER BY id ASC, age DESC;

核心要點(diǎn)

順序未定義

  • 重要!
  • 如果沒有指定 ORDER BY,數(shù)據(jù)庫返回結(jié)果的順序是不可靠且未定義的。
  • 為了確保業(yè)務(wù)邏輯(如分頁顯示)的一致性,務(wù)必手動指定排序字段。

針對行排序

  • 排序是針對整行記錄的。
  • 根據(jù)某一列排好序后,該行所有的字段會整體跟著移動。

排序關(guān)鍵字控制

  • ASC (Ascending):升序,默認(rèn)值。如果不寫,數(shù)據(jù)庫就默認(rèn)從小到大排。
  • DESC (Descending):降序,必須顯式書寫,實(shí)現(xiàn)從大到小排。

NULL 的特殊性

  • 在 SQL 中,NULL 被視為最小值。
  • 升序 (ASC) 時 NULL 在最前,降序 (DESC) 時 NULL 在最后。

多列排序的優(yōu)先級

  • 從左往右看:先按第一列排序,只有當(dāng)?shù)谝涣兄低耆嗤ㄆ骄郑r,才會參考第二列進(jìn)行內(nèi)部排序。

物理存儲不變

  • 排序只是改變了結(jié)果的展示順序,不影響數(shù)據(jù)庫中數(shù)據(jù)的物理存儲順序

7.分頁查詢

當(dāng)數(shù)據(jù)庫表中有成千上萬條數(shù)據(jù)時,一次性全部查出來不僅速度慢,用戶也看不過來。分頁查詢的作用就是按需分批取出數(shù)據(jù)。

-- 【格式 A】取前 n 條
SELECT * FROM student LIMIT 2;

-- 【格式 B】跳過 s 條,取 n 條
SELECT * FROM student LIMIT 1, 2;

-- 【格式 C】使用 OFFSET 關(guān)鍵字(邏輯最清晰,推薦!)
-- 效果:同樣是跳過 1 條取 2 條
SELECT * FROM student LIMIT 2 OFFSET 1;

直白邏輯(跳過與取出)

  • 第一個數(shù)字:是你打算“扔掉”不要的數(shù)量(偏移量 Offset)。
  • 第二個數(shù)字:是扔掉后你要“連續(xù)拿走”的數(shù)量(行數(shù) Count)。
  • 記住: 數(shù)據(jù)庫的下標(biāo)是從 0 開始的。跳過 0 條 = 從第 1 條開始取。

邊界情況:沒數(shù)據(jù)了怎么辦?

  • 如果 LIMIT 請求的范圍超出了表中的實(shí)際數(shù)據(jù)量(例如:表只有 5 條,你寫 LIMIT 10, 5):
  • 結(jié)果:數(shù)據(jù)庫不會報錯,也不會返回帶 NULL 的行,而是直接返回空結(jié)果集

物理存儲不變:最后再次強(qiáng)調(diào),分頁只是為了展示。它不會刪除或移動數(shù)據(jù)庫里的原始數(shù)據(jù)。

實(shí)戰(zhàn):網(wǎng)頁分頁公式

  • 假設(shè)每頁顯示 pageSize 條,當(dāng)前是第 pageNum 頁:
  • SQL 公式:LIMIT (pageNum - 1) * pageSize, pageSize

八、U:UPDATE 修改數(shù)據(jù)

修改數(shù)據(jù)庫服務(wù)器硬盤上的原始數(shù)據(jù)。

修改Tom年齡為20

UPDATE student SET age = 20 WHERE name = 'Tom';

同時修改多個字段

UPDATE student SET name = 'Lucy', age = 21 WHERE id = 1;

注意:

  • 不加 WHERE 會修改整張表。

九、D:DELETE 刪除數(shù)據(jù)

刪除Tom

DELETE FROM student WHERE name = 'Tom';

刪除全部數(shù)據(jù)

DELETE FROM student;

注意:

  • 不加 WHERE 會刪除所有記錄。

十、總結(jié)速記

  • 新增:INSERT
  • 查詢:SELECT
  • 修改:UPDATE
  • 刪除:DELETE
  • 條件:WHERE
  • 排序:ORDER BY
  • 分頁:LIMIT

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql存儲過程中使用游標(biāo)的實(shí)例

    mysql存儲過程中使用游標(biāo)的實(shí)例

    使用MYSQL存儲過程,可以實(shí)現(xiàn)諸多的功能,下面將為您介紹一個MYSQL存儲過程中使用游標(biāo)的實(shí)例
    2014-01-01
  • MySQL全面瓦解之查詢的過濾條件詳解

    MySQL全面瓦解之查詢的過濾條件詳解

    這篇文章主要給打大家介紹了關(guān)于MySQL全面瓦解之查詢的過濾條件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL中空值和NULL的區(qū)別小結(jié)

    MySQL中空值和NULL的區(qū)別小結(jié)

    在 MySQL 中,NULL 值和空值是兩個不同的概念,本文主要介紹了MySQL中空值和NULL的區(qū)別小結(jié),具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • MySQL去重的方法整理

    MySQL去重的方法整理

    這篇文章主要介紹了MySQL去重的方法整理的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • mysql中的limit 1 for update的鎖類型

    mysql中的limit 1 for update的鎖類型

    這篇文章主要介紹了mysql中的limit 1 for update的鎖類型,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 基于SQL中SET與SELECT賦值的區(qū)別詳解

    基于SQL中SET與SELECT賦值的區(qū)別詳解

    本篇文章是對SQL中SET與SELECT賦值的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL group by語句如何優(yōu)化

    MySQL group by語句如何優(yōu)化

    這篇文章主要介紹了MySQL group by語句如何優(yōu)化,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • MYSQL中 char 和 varchar的區(qū)別

    MYSQL中 char 和 varchar的區(qū)別

    這篇文章主要介紹了MYSQL中 char 和 varchar的區(qū)別,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09
  • MySQL8.x登陸root用戶突然提示mysql_native_password的實(shí)現(xiàn)

    MySQL8.x登陸root用戶突然提示mysql_native_password的實(shí)現(xiàn)

    本文主要介紹了MySQL 8.x登陸root用戶突然提示mysql_native_password,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程

    Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程

    mysql數(shù)據(jù)庫的重新安裝是一個麻煩的問題,很難卸除干凈,下面這篇文章主要給大家介紹了關(guān)于在Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07

最新評論

涟源市| 乌鲁木齐县| 贡觉县| 禹城市| 桐柏县| 当涂县| 丰宁| 独山县| 上饶市| 航空| 唐山市| 苗栗市| 疏附县| 四川省| 宁波市| 武山县| 沂水县| 崇信县| 商洛市| 大新县| 迁西县| 雷波县| 武定县| 岢岚县| 磴口县| 丰城市| 凌云县| 陕西省| 纳雍县| 巴青县| 建德市| 安龙县| 区。| 平武县| 交城县| 怀仁县| 特克斯县| 南和县| 稻城县| 洛南县| 华池县|