MySQL增刪查改、多表查詢的操作大全
一、增刪查改
1.添加數(shù)據(jù)
insert into 表名(字段名1,字段名2...) values(值1,值2...);
2.修改數(shù)據(jù)
update 表名 set 字段名1=值1, 字段名2=值2 where ...;
3.刪除數(shù)據(jù)
delete from 表名 where...
4.查詢數(shù)據(jù)
4.1 條件查詢
select [distinct] 字段名1,字段名2 from 表名 where...

4.2 聚合函數(shù)
select 聚合函數(shù)(字段列表) from 表名

4.3 分組查詢
select 字段列表 from 表名 [where 條件] group by 分組字段 [having 分組后過濾條件]
其中having是分組之后進(jìn)行過濾的,所以相較于where在分組之前進(jìn)行過濾,having可以對(duì)聚合函數(shù)過濾。
select gender, avg(age) from emp where age>18 group by gender having avg(age)>20
4.4 排序查詢
select 字段列表 from 表名 [where 條件] order by 字段1 排序方式1, 字段2 排序方式2;
ASC:升序(默認(rèn)值)DESC:降序
多字段排序時(shí),先對(duì)第一個(gè)字段排序,第一個(gè)字段相同時(shí)再對(duì)第二個(gè)字段排序。
4.5 分頁查詢
select 字段列表 from 表名 [where 條件] limit 起始索引, 查詢行數(shù);
起始索引從0開始,起始索引=(查詢頁碼-1)×每頁的行數(shù)
如果查詢的是第一頁數(shù)據(jù),起始索引可以省略,簡(jiǎn)寫為limit 查詢行數(shù)
二、多表查詢
1.笛卡爾積
多表查詢時(shí)如果沒有指定條件那么查詢結(jié)果就是笛卡爾積。例如A表有2條數(shù)據(jù),B表有4條數(shù)據(jù),那么笛卡爾積就是2×4=8條數(shù)據(jù)。
select * from a,b;

2.內(nèi)連接
內(nèi)連接查詢的是兩張表的交集部分。也就是說當(dāng)表A/表B中的數(shù)據(jù)在表B/表A中沒有匹配項(xiàng)時(shí)不會(huì)輸出。

隱式內(nèi)連接:select a.name, b.name from a, b where a.b_name=b.name;
顯式內(nèi)連接:select a.name, b.name from a inner join b on a.b_name=b.name;
3.外連接
左外連接查詢的是左表所有數(shù)據(jù)+兩張表的交集。右外連接查詢的是右表所有數(shù)據(jù)+兩張表的交集。也就是說當(dāng)表A中的數(shù)據(jù)在表B中沒有匹配項(xiàng)時(shí)使用左外連接也會(huì)輸出,當(dāng)表B中的數(shù)據(jù)在表A中沒有匹配項(xiàng)時(shí)使用右外連接也會(huì)輸出。

左外連接:select a.name, b.name from a left join b on a.b_name=b.name;
右外連接:select a.name, b.name from a right join b on a.b_name=b.name;
在實(shí)際開發(fā)中,想要哪張表的所有信息就以該表作為主表。
4.自連接
自連接查詢的是同一張表,例如同一張表記錄了id和領(lǐng)導(dǎo)id,那么查詢所有員工的信息及其領(lǐng)導(dǎo)信息就需要用自連接。自連接可以用內(nèi)連接也可以用外連接,具體看需求。自連接需要對(duì)表起別名,因?yàn)樾枰闯蓛蓮埍怼?/strong>
select * from emp a, emp b left join on a.manager_id=b.id;
5.聯(lián)合查詢
聯(lián)合查詢可以把多次查詢的結(jié)果在行上合并起來,形成一個(gè)新的結(jié)果集。
select * from emp where salary>5000 union all select * from emp where age>50
union還會(huì)將查詢結(jié)果合并之后去重。
6.子查詢
6.1 列子查詢
子查詢返回的是1列n行數(shù)據(jù),常用操作符:
in:在子查詢集合內(nèi)滿足其一not inany: 在子查詢集合內(nèi)滿足其一,一般配合>號(hào)使用all:子查詢集合內(nèi)滿足所有,一般配合>號(hào)使用
6.2 行子查詢
子查詢返回的是1行n列數(shù)據(jù),常用操作符:
=<>:不等于in:在子查詢集合內(nèi)滿足其一not in
6.3 表子查詢
子查詢返回的是n行n列數(shù)據(jù),常用操作符:
in:在子查詢集合內(nèi)滿足其一
select * from emp where (job, salary) in (子查詢select job, salary from …)
到此這篇關(guān)于MySQL增刪查改、多表查詢的操作大全的文章就介紹到這了,更多相關(guān)mysql增刪查改、多表查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL定位并優(yōu)化慢查詢sql的詳細(xì)實(shí)例
mysql記錄下查詢超過指定時(shí)間的語句,被稱為慢查詢,下面這篇文章主要給大家介紹了關(guān)于MySQL定位并優(yōu)化慢查詢sql的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
MYSQL如何查詢成績(jī)?yōu)榍?名的學(xué)生
這篇文章主要介紹了MYSQL如何查詢成績(jī)?yōu)榍?名的學(xué)生問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
MySQL誤刪數(shù)據(jù)恢復(fù)之Binlog回放+全量備份+延遲從庫的三種方案實(shí)戰(zhàn)
這篇文章主要介紹了MySQL數(shù)據(jù)誤刪后的恢復(fù)流程,詳細(xì)介紹了誤刪場(chǎng)景、恢復(fù)方案及預(yù)防措施,覆蓋了從止血到恢復(fù)的全過程,強(qiáng)調(diào)了全量備份與Binlog增量回放的重要性,需要的朋友可以參考下2026-06-06
Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析
這篇文章主要給大家介紹了關(guān)于Mysql優(yōu)化技巧之Limit查詢的優(yōu)化分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
MySQL統(tǒng)計(jì)函數(shù)GROUP_CONCAT使用陷阱分析
這篇文章主要介紹了MySQL統(tǒng)計(jì)函數(shù)GROUP_CONCAT使用中的陷阱,結(jié)合實(shí)例形式分析了GROUP_CONCAT用于統(tǒng)計(jì)時(shí)的長(zhǎng)度限制問題與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-06-06

