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

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

執(zhí)行成功,有一條數(shù)據(jù)被寫入數(shù)據(jù)表。
- 1.如果列與值的個數(shù)不匹配就會報一個錯誤,這條記錄無法寫入數(shù)據(jù)表

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

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

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

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

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

- 查詢的結(jié)果是一個表達式

- 把所有學生的語文成績在原來的基礎(chǔ)上加上十分

- 列與列之間也可以參與運算,計算總分

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

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

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

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

- 2.對數(shù)學成績進行升序排序

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

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


- 2.查詢英語成績不及格的同學(<60)

- 3.查詢語文成績好于英語成績的同學

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

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

- 5.查詢語文成績大于80且英語成績大于80的同學

- 6.查詢語文成績大于80或英語成績大于80的同學

- 7.觀察and和or的優(yōu)先級
and的優(yōu)先級高于or
- 8.查詢語文成績在[80,90]分的同學的語文成績

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

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

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

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

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

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

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

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

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

- 2.刪除英語成績倒數(shù)前三的同學的考試成績
先對英語成績進行升序排序,再限制刪除的條數(shù)。
?? 注意:delete不加where條件是個非常危險的操作,會把表中的所有記錄都刪除。
五、文章知識總結(jié)
一、Create(新增)
- 使用
INSERT INTO向數(shù)據(jù)表中插入數(shù)據(jù) - 支持:
- 單行插入
- 指定列插入
- 多行插入(推薦,效率更高)
- ?? 插入時必須保證 列數(shù)與值的個數(shù)一致
二、Retrieve(查詢)
查詢是數(shù)據(jù)庫中最常用的操作,重點掌握以下內(nèi)容:
基礎(chǔ)查詢
SELECT *(生產(chǎn)環(huán)境慎用)- 指定列查詢(推薦)
表達式查詢
- 列可以參與運算
- 可以使用
AS起別名
DISTINCT 去重
- 只有整行數(shù)據(jù)完全一致才會被認為重復(fù)
ORDER BY 排序
- 默認升序
ASC - 降序
DESC - 支持多字段排序(前面的優(yōu)先級更高)
- NULL 在升序中最小,在降序中最大
WHERE 條件過濾(重點)
- 支持比較運算符:
> >= < <= = != - 支持邏輯運算符:
AND、OR、NOT - 支持
BETWEEN、IN、LIKE、IS NULL - ??
AND優(yōu)先級高于OR - ??
WHERE不能使用別名
MySQL 執(zhí)行順序(高頻考點)
FROM → WHERE → SELECT → ORDER BY → LIMIT
理解執(zhí)行順序可以幫助我們:
- 明白為什么 WHERE 不能使用別名
- 理解排序為什么最后執(zhí)行
- 理解分頁為什么寫在最后
三、Update(修改)
- 使用
UPDATE ... SET ... WHERE ... - ?? 不加
WHERE會更新整張表(極度危險)
四、Delete(刪除)
- 使用
DELETE FROM ... WHERE ... - 可以結(jié)合
ORDER BY + LIMIT精準刪除 - ?? 不加
WHERE會刪除整張表數(shù)據(jù)
高頻易錯點總結(jié)
NULL不能使用=判斷,要使用IS NULLWHERE中不能使用SELECT定義的別名AND優(yōu)先級高于OR- 分頁公式:
s = (當前頁號 - 1) * 每頁條數(shù)
- 生產(chǎn)環(huán)境慎用:
SELECT *- 不帶
WHERE的UPDATE - 不帶
WHERE的DELETE
一句話總結(jié)
先確定數(shù)據(jù)來源(FROM)
再過濾數(shù)據(jù)(WHERE)
再選擇字段(SELECT)
再排序(ORDER BY)
最后限制條數(shù)(LIMIT)
掌握這條主線,MySQL 的 CRUD 操作基本就能熟練掌握。
到此這篇關(guān)于MySQL數(shù)據(jù)庫增刪改查的文章就介紹到這了,更多相關(guān)MySQL增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決MySQL錯誤碼:1054 Unknown column ‘**‘ in&n
這篇文章主要介紹了解決MySQL錯誤碼:1054 Unknown column ‘**‘ in ‘field list‘的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05



