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

MySQL 數(shù)據(jù)庫進階之SQL 數(shù)據(jù)操作與子查詢操作大全

 更新時間:2025年11月24日 14:32:05   作者:7澄1  
本文詳細介紹了SQL中的子查詢、數(shù)據(jù)添加(INSERT)、數(shù)據(jù)修改(UPDATE)和數(shù)據(jù)刪除(DELETE、TRUNCATE、DROP)操作,涵蓋了每個操作的基本語法、實戰(zhàn)示例、注意事項和最佳實踐,感興趣的朋友跟隨小編一起看看吧

一、子查詢:嵌套在查詢中的查詢

子查詢(Subquery)是指**嵌套在其他 SQL 語句中的查詢語句**,通常用于復(fù)雜的條件篩選或多表關(guān)聯(lián)場景。子查詢的結(jié)果可以作為主查詢的條件、數(shù)據(jù)源或計算字段。

1.1 子查詢的基本語法

SELECT 字段列表
FROM (子查詢語句) AS 別名
WHERE 條件;

1.2 子查詢的實戰(zhàn)示例

示例 1:簡單子查詢作為數(shù)據(jù)源

-- 從學(xué)生表中查詢姓名、性別、年齡,再篩選出姓名為'張三'的記錄

SELECT t1.name
FROM (SELECT name, sex, age FROM student) AS t1
WHERE t1.name = '張三';

示例 2:多表關(guān)聯(lián)的子查詢

假設(shè)存在三張表:

- `student`(學(xué)生表):`sno`(學(xué)號)、`name`(姓名)等

- `relationship`(學(xué)生-課程關(guān)系表):`sno`(學(xué)號)、`cno`(課程號)

- `course`(課程表):`cno`(課程號)、`gradeName`(課程名)

需求:查詢所有選擇了“語文”課程的學(xué)生信息

SELECT t1.*, course.gradeName
FROM (
#子查詢:關(guān)聯(lián)學(xué)生表和關(guān)系表,獲取學(xué)生信息及所選課程號
SELECT student.*, relationship.cno
FROM student
LEFT JOIN relationship
ON student.sno = relationship.sno
) AS t1
#主查詢:關(guān)聯(lián)子查詢結(jié)果和課程表,篩選出語文課
LEFT JOIN course
ON t1.cno = course.cno
WHERE course.gradeName = '語文';

**說明**:子查詢的結(jié)果被視為一張臨時表(需指定別名,如 `t1`),主查詢可像操作普通表一樣使用這張臨時表。

二、數(shù)據(jù)添加:INSERT 語句

INSERT 語句用于向表中添加新數(shù)據(jù),支持單行添加和多行添加兩種方式。

2.1 單行添加

語法

INSERT INTO 表名(列1, 列2, 列3, ...)
VALUES('值1', '值2', '值3', ...);

示例

-- 向student表添加一條學(xué)生記錄

INSERT INTO student(name, sex, age, sno, class_num)
VALUES ('張三', '男', 18, '10001', '20201004');

2.2 多行添加

語法

INSERT INTO 表名(列1, 列2, 列3, ...)
VALUES
('值1', '值2', '值3', ...),
('值1', '值2', '值3', ...),
('值1', '值2', '值3', ...); #多個值列表用逗號分隔

示例

#向student表添加多條學(xué)生記錄
INSERT INTO student(name, sex, age, sno, class_num)
VALUES
('張三', '男', 18, '10001', '20201004'),
('李四', '女', 19, '10002', '20201004'),
('王五', '男', 18, '10003', '20201005');

**注意**:

- 列名順序需與值列表順序一致;

- 若省略列名,則值列表需包含表中所有字段(按表結(jié)構(gòu)順序);

- 字符串類型的值需用單引號 `'` 包裹;

- 自增主鍵(如 `id`)通常無需手動指定值,數(shù)據(jù)庫會自動生成。

三、數(shù)據(jù)修改:UPDATE 語句

UPDATE 語句用于修改表中已存在的數(shù)據(jù),需通過 `WHERE` 子句指定修改范圍(否則會修改表中所有記錄)。

3.1 語法

UPDATE 表名
SET 列名1 = 新值1, 列名2 = 新值2, ...
WHERE 條件; #不寫WHERE會修改所有記錄,謹(jǐn)慎操作!

3.2 示例

# 將id=2的學(xué)生姓名改為'雙手合十',年齡改為22,性別改為'女'
UPDATE student
SET name = '雙手合十', age = 22, sex = '女'
WHERE id = 2;
#將20201004班所有學(xué)生的年齡增加1歲
UPDATE student
SET age = age + 1
WHERE class_num = '20201004';

**警告**:`UPDATE` 語句如果不帶 `WHERE` 條件,會修改表中**所有記錄**,執(zhí)行前務(wù)必確認(rèn)條件是否正確!

四、數(shù)據(jù)刪除:DELETE、TRUNCATE 與 DROP

4.1 DELETE 語句:刪除部分或全部記錄

語法

DELETE FROM 表名
WHERE 條件; #不寫WHERE會刪除表中所有記錄

示例

# 刪除id=1的學(xué)生記錄
DELETE FROM student
WHERE id = 1;
#刪除20201005班的所有學(xué)生記錄
DELETE FROM student
WHERE class_num = '20201005';

4.2 TRUNCATE 語句:清空表中所有記錄

語法

```sql

TRUNCATE TABLE 表名;

```

示例

```sql

# 清空class表中所有記錄(保留表結(jié)構(gòu))

TRUNCATE TABLE class;

```

4.3 DROP 語句:徹底刪除表

語法

```sql

DROP TABLE 表名;

```

示例

```sql

-- 徹底刪除relationship表(包括表結(jié)構(gòu)和所有數(shù)據(jù))

DROP TABLE relationship;

```

4.4 DELETE、TRUNCATE 與 DROP 的區(qū)別

操作功能描述是否保留表結(jié)構(gòu)效率是否可回滾(事務(wù)中)
DELETE逐行刪除記錄,可帶條件較低(逐行刪除)
TRUNCATE清空所有記錄,相當(dāng)于重建表結(jié)構(gòu)較高(直接重建)
DROP徹底刪除表,包括結(jié)構(gòu)和數(shù)據(jù)最高

**使用建議**:

- 需刪除部分記錄:用 `DELETE` + `WHERE`;

- 需清空全表(保留結(jié)構(gòu)):用 `TRUNCATE`(效率更高);

- 需徹底刪除表:用 `DROP`(謹(jǐn)慎操作,不可恢復(fù))。

五、SQL 操作的注意事項

1. **子查詢優(yōu)化**:

- 子查詢結(jié)果集不宜過大,否則會影響性能;

- 復(fù)雜子查詢可考慮用 `JOIN` 改寫,提升效率。

2. **數(shù)據(jù)添加**:

- 確保字段類型與值匹配(如數(shù)字類型不加引號);

- 遵守表的約束(如非空字段必須賦值,唯一字段值不重復(fù))。

3. **數(shù)據(jù)修改與刪除**:

- 執(zhí)行前先用 `SELECT` 語句驗證條件是否正確(如 `SELECT * FROM student WHERE id=2`);

- 生產(chǎn)環(huán)境中,刪除/修改操作建議在事務(wù)中執(zhí)行,便于回滾。

4. **MySQL 語法特性**:

- 語句末尾加分號 `;` 表示結(jié)束;

- 關(guān)鍵字不區(qū)分大小寫,但建議大寫關(guān)鍵字(如 `SELECT`、`INSERT`),小寫表名和字段名,增強可讀性。

六、總結(jié):SQL 核心操作要點

1. **子查詢**:嵌套在主查詢中的查詢,可作為數(shù)據(jù)源或條件,常用于復(fù)雜查詢場景;

2. **數(shù)據(jù)添加**:`INSERT INTO ... VALUES` 支持單行和多行添加,需注意字段與值的匹配;

3. **數(shù)據(jù)修改**:`UPDATE ... SET ... WHERE` 用于修改記錄,`WHERE` 條件必不可少;

4. **數(shù)據(jù)刪除**:

- `DELETE` 逐行刪除,可帶條件,支持回滾;

- `TRUNCATE` 清空全表,保留結(jié)構(gòu),效率高;

- `DROP` 徹底刪除表,包括結(jié)構(gòu),謹(jǐn)慎使用。

掌握這些操作后,你已能完成 MySQL 數(shù)據(jù)庫的基本CRUD(創(chuàng)建、讀取、更新、刪除)操作,為后續(xù)學(xué)習(xí)事務(wù)、索引、存儲過程等進階知識奠定基礎(chǔ)。實際開發(fā)中,需結(jié)合業(yè)務(wù)場景選擇合適的操作方式,同時注意數(shù)據(jù)安全和操作效率。

到此這篇關(guān)于MySQL 數(shù)據(jù)庫進階之SQL 數(shù)據(jù)操作與子查詢操作大全的文章就介紹到這了,更多相關(guān)sql數(shù)據(jù)操作與子查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL數(shù)據(jù)庫存儲引擎和分支現(xiàn)狀分析

    MySQL數(shù)據(jù)庫存儲引擎和分支現(xiàn)狀分析

    在MySQL經(jīng)歷了2008年Sun的收購和2009年Oracle收購Sun的過程中,基本處于停滯發(fā)展的情況,在可以預(yù)見的未來,MySQL是肯定會被Oracle擱置并且逐步雪藏消滅掉的。
    2011-03-03
  • MySQL庫表名大小寫的選擇

    MySQL庫表名大小寫的選擇

    一般在數(shù)據(jù)庫使用規(guī)范中,我們都會看到這么一條:庫名及表名一律使用小寫英文。你有沒有思考過,為什么推薦使用小寫呢?庫表名是否應(yīng)該區(qū)分大小寫呢?帶著這些疑問,我們一起來看下本篇文章。
    2021-06-06
  • mysql日期和時間的間隔計算實例分析

    mysql日期和時間的間隔計算實例分析

    這篇文章主要介紹了mysql日期和時間的間隔計算,結(jié)合實例形式分析了mysql日期和時間間隔計算的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-12-12
  • mysql timestamp比較查詢遇到的坑及解決

    mysql timestamp比較查詢遇到的坑及解決

    這篇文章主要介紹了mysql timestamp比較查詢遇到的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • MySQL5.7.23解壓版安裝教程圖文詳解

    MySQL5.7.23解壓版安裝教程圖文詳解

    這篇文章主要介紹了MySQL5.7.23解壓版安裝教程圖文詳解,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Mysql 5.7.20壓縮版下載和安裝簡易教程

    Mysql 5.7.20壓縮版下載和安裝簡易教程

    這篇文章主要介紹了Mysql 5.7.20壓縮版下載和安裝簡易教程,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • 深入Mysql字符集設(shè)置分析

    深入Mysql字符集設(shè)置分析

    深入Mysql字符集設(shè)置分析,使用mysql的朋友可以參考下
    2012-03-03
  • 深入mysql "ON DUPLICATE KEY UPDATE" 語法的分析

    深入mysql "ON DUPLICATE KEY UPDATE" 語法的分析

    本篇文章是對mysql "ON DUPLICATE KEY UPDATE"語法進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql主從及遇到的問題解決

    mysql主從及遇到的問題解決

    本文詳細介紹了如何使用Docker配置MySQL主從復(fù)制,首先創(chuàng)建了兩個文件夾并分別配置了`my.cnf`文件,通過執(zhí)行腳本啟動容器并配置好主從關(guān)系,文中還提到了一些常見問題的解決方法,如配置路徑錯誤導(dǎo)致的沖突和slave的change連接錯誤
    2025-01-01
  • 使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法

    這篇文章主要介紹了使用phpMyAdmin批量修改Mysql數(shù)據(jù)表前綴的方法,需要的朋友可以參考下
    2015-09-09

最新評論

宁武县| 深水埗区| 临武县| 靖远县| 宜兰市| 皮山县| 汤阴县| 吉林省| 五河县| 四会市| 新丰县| 麻江县| 高淳县| 漯河市| 麻阳| 罗源县| 哈密市| 合作市| 来宾市| 西乌珠穆沁旗| 沂水县| 仁布县| 阿拉善右旗| 永胜县| SHOW| 威宁| 鄂尔多斯市| 灵宝市| 武宁县| 黔江区| 稻城县| 海南省| 桂阳县| 绍兴市| 大名县| 育儿| 阿克陶县| 会泽县| 和政县| 海伦市| 讷河市|