目錄
🌿前言:
🌿增-C-Create-新增
🧊單行數據+全列插入
🍋?🟩語法:
🍋?🟩演示:
🧊指定列插入
🍋?🟩語法:
🍋?🟩演示:
🧊多行插入
🍋?🟩語法:
🍋?🟩演示:
🌿刪-D-Delete-刪除
🧊語法
🧊以下面這個表為例
🧊刪除name為馬克的數據行
🧊刪除語文成績倒數前3的數據行
🧊注意:delete語句不支持寫入limit偏移量和limit? offset
🍋?🟩例如:?編輯
🌿查-R-Retrieve-查詢,檢索
🧊全列查詢
🍋?🟩全列查詢基礎語法:
🍋?🟩演示:
🧊指定列查詢:
🍋?🟩語法:
🍋?🟩演示:
🍋?🟩題1:查詢字段為表達式
🔎演示:
🍋?🟩題2:常量表達式
🔎演示1:
🔎演示2:
🍋?🟩題3:計算每個同學的所有成績
🔎演示:
🍋?🟩為查詢結果指定別名
🔎演示1:
🔎演示2:
🔎演示3
🔎演示4
🧊結果去重查詢
🍋?🟩錯誤示例:
🍋?🟩對數學成績進行去重查詢
🔎演示:
🍋?🟩對id和數學成績進行去重
🔎演示:
🧊排序查詢
🍋?🟩語法
🍋?🟩對語文成績進行升序查詢
🍋?🟩對語文成績進行降序查詢
🍋?🟩沒有對語文成績指定升序還是降序查詢
🍋?🟩使用表達式及別名進行排序
🔎計算總分,然后升序排序(使用表達式)
🔎計算總分,然后升序排序(使用別名)
🧊條件查詢(where-SQL語句執行順序)
🍋?🟩使用where條件的語法
🍋?🟩查詢語文成績<=90的學生
🍋?🟩查詢語文成績<=英語成績的學生(兩個 列 | 字段 是可以比較的)
🍋?🟩查詢總分在200以下的學生
🧊模糊查詢
🍋?🟩演示1:
🍋?🟩總演示:
🧊分頁查詢
🍋?🟩語法1:
🍋?🟩語法2:
🍋?🟩一般寫法
🍋?🟩偏移量也可以不寫,默認就是0
🍋?🟩使用offset關鍵字
🌿改-U-Update-更新
🧊語法:
🧊演示:
🍋?🟩將白月魁的數學成績改成100(原先是90分)
🍋?🟩將數學成績為85的學生都改成數學成績為100
🍋?🟩要改動的數據行,不只是改一列,而是要改動多列的數據
🌿運算符
🧊依據此下表:
🧊演示:
🍋?🟩and
🍋?🟩or
🍋?🟩not(取反的意思)
🍋?🟩注意點:
🧊拓展
🍋?🟩如果我們要在一個區間進行查詢呢?
🔎演示1:
🔎演示2:
🍋?🟩可如果我們要查詢的是某個成績剛好是多少分的同學呢?
🔎演示:
🌿前言:
這是一篇對我而言比較重要的文章,因為剛入職的程序員大多數都是做這些CRUD的,我會用些簡白的話來講好這里的知識點,也方便我日后回顧吧
為了能更直白的講解這些語法,我創建了一個學生表,CRUD的相關操作都依靠此表進行!
🌿增-C-Create-新增
🧊單行數據+全列插入
🍋?🟩語法:
insert? ?into? 表名(字段1,字段2,字段3~~~)? ? ?values(數值1,數值2,數值3~~~)
也可以省略寫成
insert? ?into? 表名? ?values(數值1,數值2,數值3~~~)
🍋?🟩演示:
🧊指定列插入
🍋?🟩語法:
insert? ?into? 表名(任意一個字段)? ? ?values(與任意字段相對應的值)
注意:只寫任意個字段,其他沒寫的字段對應的數值就會為NULL
🍋?🟩演示:
🧊多行插入
🍋?🟩語法:
insert? ?into? 表名(字段1,字段2,字段3~~~)? ? ?values(數值1,數值2,數值3~~~),(數值1,數值2,數值3~~~),(數值1,數值2,數值3~~~)~~~~~
🍋?🟩演示:
🌿刪-D-Delete-刪除
🧊語法
delete from 表名? ?where 條件? ?order?by? ?列? ?asc | desc? limit(偏移量,要查詢幾條)
刪除操作較為簡單,我就舉上2個例子吧
🧊以下面這個表為例
🧊刪除name為馬克的數據行
🧊刪除語文成績倒數前3的數據行
🧊注意:delete語句不支持寫入limit偏移量和limit? offset
🍋?🟩例如:
大家需要注意下,select語句支持寫入limit偏移量和limit? offset,而delete語句不支持!!
🌿查-R-Retrieve-查詢,檢索
🧊全列查詢
🍋?🟩全列查詢基礎語法:
select * from 表名
🍋?🟩演示:
🧊指定列查詢:
🍋?🟩語法:
select? ? ?字段1,字段2~~~? ? from? 表名
🍋?🟩演示:
🍋?🟩題1:查詢字段為表達式
把所有學生的語文成績+10
🔎演示:
🍋?🟩題2:常量表達式
🔎演示1:
🔎演示2:
🍋?🟩題3:計算每個同學的所有成績
🔎演示:
注意:NULL與任何數運算都為NULL
🍋?🟩為查詢結果指定別名
🔎演示1:
🔎演示2:
🔎演示3
🔎演示4
🧊結果去重查詢
🍋?🟩錯誤示例:
這個我想的先查id,name,然后再對數學進行去重查詢,然后這個SQL語法報錯,說明這樣不行,也就是正常查尋和去重查詢不能放在一個語句里,會報錯,這點須注意下
🍋?🟩對數學成績進行去重查詢
🔎演示:
按照先后順序來,后面的就給去重了,那么我們要思考下,如果有兩個甚至是N個相同的呢,是只去重一個,還是N個呢?
所以我故意插入了數學成績為90的
這是整體的數據
然后我們對數學進行去重查詢時,發現,兩個相同的都不見了
這說明當我們去重某個字段時,如果有N個對的數相同(也就是2N個數里兩兩相同),就會去重N個數,保留唯一的N數據
🍋?🟩對id和數學成績進行去重
🔎演示:
我們發現,這些數據一條都沒去重,這是因為我們指定了id和math的去重,就規定了他們都要相同才能符合去重的語法!!
🧊排序查詢
🍋?🟩語法
select *? ?from 表名 order by? 要排序的列? ? ? asc(升序)? |? desc(降序)
這里也可以不要 * ,看你自己想查詢出來后咋樣顯示,我這里是顯示整張表
那個要排序的列,無論是升序還是降序,都會對那條整個行進行排序上的影響,但不影響真實數據
🍋?🟩對語文成績進行升序查詢
🍋?🟩對語文成績進行降序查詢
🍋?🟩沒有對語文成績指定升序還是降序查詢
如果沒有對語文成績指定升序還是降序查詢,SQL語法默認升序查詢
🍋?🟩使用表達式及別名進行排序
🔎計算總分,然后升序排序(使用表達式)
演示:
🔎計算總分,然后升序排序(使用別名)
演示:
再次提醒,NULL和任何數值運算都為NULL
🧊條件查詢(where-SQL語句執行順序)
🍋?🟩使用where條件的語法
select? * from 表名 where? 列名|表達式? 運算符? 條件
🍋?🟩查詢語文成績<=90的學生
🍋?🟩查詢語文成績<=英語成績的學生(兩個 列 | 字段 是可以比較的)
🍋?🟩查詢總分在200以下的學生
如果我們想使用別名呢,
我們發現,明明我們已經起了個別名,為啥錯了?其實這是因為SQL語句執行的順序
為啥這個沒報錯???
好吧,SQL語句的執行順序是這樣的
1.先執行from,確定好表
2.執行where子句,過濾不符合條件的
3.執行select和from之間的子句
4.執行order by 子句
那么我們回到上面的這個語句
SQL語句執行順序在這個語句的執行順序
首先確定好了一個student的表,然后執行where子句的條件,可是total是誰?SQL語句不知道,因為需要執行完這個才執行select和from子句,而我們初始化別名就是在這一步,就是這個道理,
就相當于,一個陌生人叫你的名字并讓你免費給他一筆大的錢數,你會理他嗎?是不是不會,這個也是同樣的道理,SQL語句忽然發現有個total的陌生人,他就得報錯!
🧊模糊查詢
%? 和? ?_
? %? 表示任意,一個 _? 表示一個字符
🍋?🟩演示1:
不管用哪個,已知的字符不是最左邊就得是最右邊
我這里想查找白月魁這個學生,可是“月”不是最邊上的字符,所以查不到,為空
🍋?🟩總演示:
🧊分頁查詢
🍋?🟩語法1:
?select 列名 from 表名 where 條件 order by 列? ?{升序asc|降序desc}???limit 偏移量,顯示條數;
🍋?🟩語法2:
?select 列名 from 表名 where 條件 order by 列? ?{升序asc|降序desc}???limit 顯示條數 offset偏移量;
🍋?🟩一般寫法
🍋?🟩偏移量也可以不寫,默認就是0
🍋?🟩使用offset關鍵字
🌿改-U-Update-更新
修改(更新)和查詢的語法不同,需要重點記憶
🧊語法:
update? ? 表名? ? set? ? 要改的列(像math=90)? ? ? where條件等等
🧊演示:
🍋?🟩將白月魁的數學成績改成100(原先是90分)
🍋?🟩將數學成績為85的學生都改成數學成績為100
這樣所以數學成績為85的學生都改成數學成績為100了,
所以update set這個語句不只是改動一條數據行,可以改動任何數量的符合條件的數據行
🍋?🟩要改動的數據行,不只是改一列,而是要改動多列的數據
中間加個? ,符號就行
🌿運算符
🧊依據此下表:
🧊演示:
🍋?🟩and
🍋?🟩or
🍋?🟩not(取反的意思)
🍋?🟩注意點:
優先級:? ?not > and > or
🧊拓展
🍋?🟩如果我們要在一個區間進行查詢呢?
比如要在數學成績在80<=X<=90的區間查詢(between配合運算符)
🔎演示1:
注意這個左右都是閉區間!!!
🔎演示2:
🍋?🟩可如果我們要查詢的是某個成績剛好是多少分的同學呢?
比如,要查詢數學成績剛好是72,78,85的學生
🔎演示:
完結!!!