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

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

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

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

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

1.1 子查詢的基本語(yǔ)法

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

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

示例 1:簡(jiǎn)單子查詢作為數(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é)號(hào))、`name`(姓名)等

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

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

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

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

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

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

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

2.1 單行添加

語(yǔ)法

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 多行添加

語(yǔ)法

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

示例

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

**注意**:

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

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

- 字符串類型的值需用單引號(hào) `'` 包裹;

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

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

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

3.1 語(yǔ)法

UPDATE 表名
SET 列名1 = 新值1, 列名2 = 新值2, ...
WHERE 條件; #不寫WHERE會(huì)修改所有記錄,謹(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` 語(yǔ)句如果不帶 `WHERE` 條件,會(huì)修改表中**所有記錄**,執(zhí)行前務(wù)必確認(rèn)條件是否正確!

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

4.1 DELETE 語(yǔ)句:刪除部分或全部記錄

語(yǔ)法

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

示例

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

4.2 TRUNCATE 語(yǔ)句:清空表中所有記錄

語(yǔ)法

```sql

TRUNCATE TABLE 表名;

```

示例

```sql

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

TRUNCATE TABLE class;

```

4.3 DROP 語(yǔ)句:徹底刪除表

語(yǔ)法

```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 操作的注意事項(xiàng)

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

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

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

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

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

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

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

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

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

4. **MySQL 語(yǔ)法特性**:

- 語(yǔ)句末尾加分號(hào) `;` 表示結(jié)束;

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

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

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

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ù)庫(kù)的基本CRUD(創(chuàng)建、讀取、更新、刪除)操作,為后續(xù)學(xué)習(xí)事務(wù)、索引、存儲(chǔ)過程等進(jìn)階知識(shí)奠定基礎(chǔ)。實(shí)際開發(fā)中,需結(jié)合業(yè)務(wù)場(chǎng)景選擇合適的操作方式,同時(shí)注意數(shù)據(jù)安全和操作效率。

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

相關(guān)文章

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

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

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

    MySQL庫(kù)表名大小寫的選擇

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

    mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析

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

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

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

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

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

    Mysql 5.7.20壓縮版下載和安裝簡(jiǎn)易教程

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

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

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

    深入mysql "ON DUPLICATE KEY UPDATE" 語(yǔ)法的分析

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

    mysql主從及遇到的問題解決

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

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

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

最新評(píng)論

刚察县| 石狮市| 娄底市| 桦川县| 崇仁县| 淳安县| 霍山县| 沂源县| 三门县| 定襄县| 思南县| 崇州市| 新邵县| 彰武县| 黄骅市| 剑河县| 伊春市| 盐津县| 建湖县| 波密县| 平江县| 霍州市| 西和县| 南召县| 咸阳市| 乌拉特中旗| 高州市| 调兵山市| 华池县| 五莲县| 延长县| 西乌珠穆沁旗| 翼城县| 南康市| 德令哈市| 泰和县| 屏山县| 图木舒克市| 万州区| 嘉黎县| 丰镇市|