MySQL數(shù)據(jù)庫(kù)增刪改查超完整示例圖(新手入門(mén)必看)
在操作之前,我們需要明確自己操作的是哪部分的數(shù)據(jù)。

一、新增(create)
1.單行數(shù)據(jù)
insert into [(字段1,字段2)] values (值,值);
insert into student(id,name) values (1,'張三');

執(zhí)行成功,有一條數(shù)據(jù)被寫(xiě)入數(shù)據(jù)表。
- 1.如果列與值的個(gè)數(shù)不匹配就會(huì)報(bào)一個(gè)錯(cuò)誤,這條記錄無(wú)法寫(xiě)入數(shù)據(jù)表

- 2.簡(jiǎn)寫(xiě)方式:不用在表名后面指定列名,在values列表中按定義字段的順序設(shè)置相應(yīng)的值。
insert into 表名 values (值,值...);

2.指定列插入
insert into 表名(列名) values (值);

3.多行插入
insert into 表名[(列名...)] values (值),(值)...

二、查詢(xún)(Retrieve)
1.全列查詢(xún)
select *from 表名;

?? 注意:這個(gè)一個(gè)非常危險(xiǎn)的操作,因?yàn)樵谏a(chǎn)環(huán)境中,一個(gè)表中的數(shù)據(jù)量可能會(huì)很多很多,當(dāng)一個(gè)查詢(xún)開(kāi)始的時(shí)候,磁盤(pán)會(huì)開(kāi)銷(xiāo),網(wǎng)絡(luò)會(huì)開(kāi)銷(xiāo),這些都是非常緊缺的資源。這一條語(yǔ)句開(kāi)始執(zhí)行的時(shí)候,可能會(huì)吃光服務(wù)器所有資源,其他程序或數(shù)據(jù)庫(kù)操作就要等待當(dāng)前SQL語(yǔ)句執(zhí)行完以后才能繼續(xù)執(zhí)行。
2.指定列查詢(xún)
select 列名[,列名]...from 表名;
指定查詢(xún)id,姓名,和語(yǔ)文成績(jī)。

- 查詢(xún)的結(jié)果是一個(gè)表達(dá)式

- 把所有學(xué)生的語(yǔ)文成績(jī)?cè)谠瓉?lái)的基礎(chǔ)上加上十分

- 列與列之間也可以參與運(yùn)算,計(jì)算總分

還可以利用as關(guān)鍵字給表達(dá)式取別名
3.去重:DISTINCT
select distinct 列名 from 表名;
這里沒(méi)有加distinct關(guān)鍵字查詢(xún)出來(lái)的成績(jī)有兩個(gè)98分

加上distinct關(guān)鍵字查詢(xún)出來(lái)的記錄如下

重復(fù)的記錄只保留了一條。
?? 注意:在查詢(xún)結(jié)果中,每一列都相同MYSQL才認(rèn)為他們是重復(fù)的數(shù)據(jù),也就是數(shù)據(jù)行與數(shù)據(jù)行之間,兩條記錄完全一致才是重復(fù)的數(shù)據(jù)。
例如:
在查詢(xún)數(shù)學(xué)成績(jī)時(shí),加上id這一列,第一列和第三列記錄,雖然數(shù)學(xué)成績(jī)一致,但是他們的id不一致,所以distinct關(guān)鍵字也就不把他們當(dāng)做重復(fù)的數(shù)據(jù)行。

4.排序:ORDER BY
排序規(guī)則
1.升序 ASC(不指定時(shí),默認(rèn)是升序)
2.降序 DESC
select 列名 from 表名 order by 列名[ASC | DESC];
- 1.按語(yǔ)文成績(jī)從高到低排序(DESC)

- 2.對(duì)數(shù)學(xué)成績(jī)進(jìn)行升序排序

- 3.NULL數(shù)據(jù)排序,視為比任何值都笑,升序出現(xiàn)在最上面,降序出現(xiàn)在最下面。

- 4.使用表達(dá)式及別名排序
?? 注意:MYSQL中NULL的特殊性
不論什么值和NULL進(jìn)行運(yùn)算,返回值都是NULL
NULL始終被判定為FALSE
NULL的值不是我們以前學(xué)過(guò)的其他編程語(yǔ)言中的0,在MYSQL中它就是NULL
- 5.可以對(duì)多個(gè)字段進(jìn)行排序,排序的優(yōu)先級(jí)與書(shū)寫(xiě)有關(guān)
例如:先按數(shù)學(xué)降序排序,再按語(yǔ)文升序排序,再按英語(yǔ)進(jìn)行升序排序
5.條件查詢(xún):WHERE
語(yǔ)法:
select *from 表名 where 列名/表達(dá)式 運(yùn)算符 條件;
5.1 運(yùn)算符說(shuō)明表
| 運(yùn)算符 | 說(shuō)明 |
|---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于,NULL 不安全,例如 NULL = NULL 的結(jié)果是 NULL |
<=> | 等于,NULL 安全,例如 NULL <=> NULL 的結(jié)果是 TRUE(1) |
!=, <> | 不等于 |
BETWEEN a0 AND a1 | 范圍匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) |
IN (option, ...) | 如果是 option 中的任意一個(gè),返回 TRUE(1) |
IS NULL | 是 NULL |
IS NOT NULL | 不是 NULL |
LIKE | 模糊匹配,% 表示任意多個(gè)(包括 0 個(gè))任意字符,_ 表示任意一個(gè)字符 |
5.5邏輯運(yùn)算符說(shuō)明表
| 運(yùn)算符 | 說(shuō)明 |
|---|---|
AND | 多個(gè)條件必須都為 TRUE(1),結(jié)果才是 TRUE(1) |
OR | 任意一個(gè)條件為 TRUE(1),結(jié)果為 TRUE(1) |
NOT | 條件為 TRUE(1),結(jié)果為 FALSE(0) |
?? 注意:
- WHERE條件可以使用表達(dá)式,但不能使用別名。
- AND的優(yōu)先級(jí)高于OR,在同時(shí)使用時(shí),需要使用小括號(hào)()包裹優(yōu)先執(zhí)行的部分
例如
- 1.like模糊匹配
%表示多個(gè)任意字符,_表示任意一個(gè)字符


- 2.查詢(xún)英語(yǔ)成績(jī)不及格的同學(xué)(<60)

- 3.查詢(xún)語(yǔ)文成績(jī)好于英語(yǔ)成績(jī)的同學(xué)

.?? 注意:在一行數(shù)據(jù)中的兩個(gè)列是可以進(jìn)行比較的,但不能跨行比較
。 - 4.查詢(xún)總分在200分一下的同學(xué)

.?? 注意:在where子句中不能用別名作為過(guò)濾條件,在where條件中使用了表達(dá)式,那么就要把表達(dá)式完整的寫(xiě)在where子句中,不能使用別名。
出現(xiàn)這種現(xiàn)象和MYSQL執(zhí)行SQL語(yǔ)句的順序有關(guān)
1.如果要在數(shù)據(jù)中查某些數(shù)據(jù),首先要確定表,先執(zhí)行from;
2.在查詢(xún)過(guò)程中要根據(jù)指定的查詢(xún)條件把符合條件的數(shù)據(jù)過(guò)濾出來(lái),這時(shí)執(zhí)行的就是where子句
3.執(zhí)行select后面的指定的列,這些列最終需要加入到結(jié)果集
4.排序操作,根據(jù)order by子句中指定的列名和排序規(guī)則進(jìn)行排序。

- 5.查詢(xún)語(yǔ)文成績(jī)大于80且英語(yǔ)成績(jī)大于80的同學(xué)

- 6.查詢(xún)語(yǔ)文成績(jī)大于80或英語(yǔ)成績(jī)大于80的同學(xué)

- 7.觀察and和or的優(yōu)先級(jí)
and的優(yōu)先級(jí)高于or
- 8.查詢(xún)語(yǔ)文成績(jī)?cè)赱80,90]分的同學(xué)的語(yǔ)文成績(jī)

- 9.查詢(xún)數(shù)學(xué)成績(jī)是58 或者 59 或者 98 或者 99 分的同學(xué)
查詢(xún)方法 1.用OR把所有的條件關(guān)聯(lián)起來(lái)
用IN(集合)
- 10.NULL的查詢(xún):IS[NOT] NULL

- 11.分頁(yè)查詢(xún):LIMIT
作用:限制查詢(xún)結(jié)果集中的條數(shù)
分頁(yè)查詢(xún)?cè)陧?xiàng)目開(kāi)發(fā)中運(yùn)用的非常多,只要查詢(xún)的是一個(gè)記錄的集合(多條記錄)都在使用分頁(yè)查詢(xún)。
--起始下標(biāo)為0 --從0開(kāi)始,篩選n條結(jié)果 select....from 表名 [where...] [order by...] limit n;

--從s開(kāi)始,篩選n條結(jié)果 select....from 表名 [where...] [order by...] limit s, n;

?? 注意:如果起始位置超過(guò)了整個(gè)結(jié)果集的范圍,也是可以執(zhí)行的,只不過(guò)是一個(gè)空集

--從s開(kāi)始,篩選n條結(jié)果,比第二種用法更明確,推薦使用 --offset偏移量,也就是從哪開(kāi)始的意思 select....from 表名 [where...] [order by...] limit n offset s;

?? 注意:s = (當(dāng)前頁(yè)號(hào)-1)*每頁(yè)顯示的記錄數(shù)
三、修改(Update)
update 表名 set 列名1 = 值1, 列名2 = 值2 where 條件;
- 1.將孫悟空的數(shù)學(xué)成績(jī)變更為80分

- 2.將孫權(quán)的數(shù)學(xué)成績(jī)變更為60分,語(yǔ)文成績(jī)變更為73分

- 3.將總成績(jī)倒數(shù)前三的同學(xué)的數(shù)學(xué)成績(jī)加上5分

四、刪除(Delete)
delete from 表名 [where ...] [order by ...] [limit...]
- 1.刪除孫悟空的考試成績(jī)

- 2.刪除英語(yǔ)成績(jī)倒數(shù)前三的同學(xué)的考試成績(jī)
先對(duì)英語(yǔ)成績(jī)進(jìn)行升序排序,再限制刪除的條數(shù)。
?? 注意:delete不加where條件是個(gè)非常危險(xiǎn)的操作,會(huì)把表中的所有記錄都刪除。
五、文章知識(shí)總結(jié)
一、Create(新增)
- 使用
INSERT INTO向數(shù)據(jù)表中插入數(shù)據(jù) - 支持:
- 單行插入
- 指定列插入
- 多行插入(推薦,效率更高)
- ?? 插入時(shí)必須保證 列數(shù)與值的個(gè)數(shù)一致
二、Retrieve(查詢(xún))
查詢(xún)是數(shù)據(jù)庫(kù)中最常用的操作,重點(diǎn)掌握以下內(nèi)容:
基礎(chǔ)查詢(xún)
SELECT *(生產(chǎn)環(huán)境慎用)- 指定列查詢(xún)(推薦)
表達(dá)式查詢(xún)
- 列可以參與運(yùn)算
- 可以使用
AS起別名
DISTINCT 去重
- 只有整行數(shù)據(jù)完全一致才會(huì)被認(rèn)為重復(fù)
ORDER BY 排序
- 默認(rèn)升序
ASC - 降序
DESC - 支持多字段排序(前面的優(yōu)先級(jí)更高)
- NULL 在升序中最小,在降序中最大
WHERE 條件過(guò)濾(重點(diǎn))
- 支持比較運(yùn)算符:
> >= < <= = != - 支持邏輯運(yùn)算符:
AND、OR、NOT - 支持
BETWEEN、IN、LIKE、IS NULL - ??
AND優(yōu)先級(jí)高于OR - ??
WHERE不能使用別名
MySQL 執(zhí)行順序(高頻考點(diǎn))
FROM → WHERE → SELECT → ORDER BY → LIMIT
理解執(zhí)行順序可以幫助我們:
- 明白為什么 WHERE 不能使用別名
- 理解排序?yàn)槭裁醋詈髨?zhí)行
- 理解分頁(yè)為什么寫(xiě)在最后
三、Update(修改)
- 使用
UPDATE ... SET ... WHERE ... - ?? 不加
WHERE會(huì)更新整張表(極度危險(xiǎn))
四、Delete(刪除)
- 使用
DELETE FROM ... WHERE ... - 可以結(jié)合
ORDER BY + LIMIT精準(zhǔn)刪除 - ?? 不加
WHERE會(huì)刪除整張表數(shù)據(jù)
高頻易錯(cuò)點(diǎn)總結(jié)
NULL不能使用=判斷,要使用IS NULLWHERE中不能使用SELECT定義的別名AND優(yōu)先級(jí)高于OR- 分頁(yè)公式:
s = (當(dāng)前頁(yè)號(hào) - 1) * 每頁(yè)條數(shù)
- 生產(chǎn)環(huán)境慎用:
SELECT *- 不帶
WHERE的UPDATE - 不帶
WHERE的DELETE
一句話總結(jié)
先確定數(shù)據(jù)來(lái)源(FROM)
再過(guò)濾數(shù)據(jù)(WHERE)
再選擇字段(SELECT)
再排序(ORDER BY)
最后限制條數(shù)(LIMIT)
掌握這條主線,MySQL 的 CRUD 操作基本就能熟練掌握。
到此這篇關(guān)于MySQL數(shù)據(jù)庫(kù)增刪改查的文章就介紹到這了,更多相關(guān)MySQL增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL查詢(xún)語(yǔ)句執(zhí)行的過(guò)程
這篇文章主要介紹了SQL查詢(xún)語(yǔ)句執(zhí)行的過(guò)程,文章圍繞主題展開(kāi)SQL查詢(xún)語(yǔ)句的相關(guān)資料,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
C#實(shí)現(xiàn)MySQL命令行備份和恢復(fù)
MySQL數(shù)據(jù)庫(kù)的備份有很多工具可以使用,今天介紹一下使用C#調(diào)用MYSQL的mysqldump命令完成MySQL數(shù)據(jù)庫(kù)的備份與恢復(fù)2018-03-03
MySQL與存儲(chǔ)過(guò)程的相關(guān)資料
這篇文章主要介紹了MySQL與存儲(chǔ)過(guò)程的相關(guān)資料,需要的朋友可以參考下2007-03-03
SQL常見(jiàn)語(yǔ)句圖文詳解(附詳細(xì)代碼)
作為數(shù)據(jù)庫(kù)操作的核心工具,SQL在數(shù)據(jù)管理和查詢(xún)中扮演著至關(guān)重要的角色,這篇文章主要介紹了SQL常見(jiàn)語(yǔ)句的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-02-02
解決MySQL錯(cuò)誤碼:1054 Unknown column ‘**‘ in&n
這篇文章主要介紹了解決MySQL錯(cuò)誤碼:1054 Unknown column ‘**‘ in ‘field list‘的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
MySQL數(shù)據(jù)庫(kù)遷移后無(wú)法啟動(dòng)的問(wèn)題解決
本文主要介紹了MySQL數(shù)據(jù)庫(kù)遷移后無(wú)法啟動(dòng)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2025-06-06



