日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...

發布時間:2025/3/15 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL的外鍵

什么是外鍵,很簡單保持數據一致性的一個約束鍵。如果你有兩張表,第一張是學生表,第二張表是一個成績表,我們來看看保持數據一致性,其實在Django等框架的模型中中也能做關聯獲取對象。

第一張表 成績表

第二張表 學生表

保持數據一致性

我們來看看,當鍵不一致的時候,數據是插不進去的哦,保證了數據一致性。

mysql> insert into student(sid,name) values("A0004","Tom");

ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`school`.`student`, CONSTRAINT `student_ibfk_1` FOREIGN KEY (`sid`) REFERENCES `score` (`sid`))

mysql> insert into student(sid,name) values("A0001","Tom");

Query OK, 1 row affected (0.00 sec)

mysql> insert into student(sid,name) values("A0002","Bill");

Query OK, 1 row affected (0.01 sec)

mysql> insert into student(sid,name) values("A0003","Jill");

Query OK, 1 row affected (0.00 sec)

高級查詢

還是用上面兩張表做例子

連接查詢

內連接

沒有on條件的時候就是笛卡爾積,有條件的時候按照條件執行,條件關鍵字on,使用where也可以,但是效率會低很多;

select * from student join score on student.sid=score.sid;

外鏈接

與內連接相似,但是條件不匹配的項會保留,不匹配字段填寫NULL,左和右指得的是以誰為主表 我們做個測試,為了體現不匹配的樣子,先向score插入一條數據

insert into score(sid,value) values("A0004",90);

內連接的狀態的

左連接

左表為主

select * from score left join student on student.sid=score.sid;

右連接

右表為主

select * from student right join score on student.sid=score.sid;

交叉連接

循環去每一條數據進行匹配,結果是笛卡爾積

select * from student cross join score;

#或者

select * from student,score;

自然連接

聯合查詢

將多次查詢(多條select語句), 在記錄上進行拼接(字段不會增加),就是這么簡單,但是注意,字段數量要一致,字段數量要一致,字段數量要一致,重要的事情說三遍。一般用于相同結構的多表查詢。

select id,name from student union select * from score;

子查詢

一般的from where exists后面都是子查詢 重點是from 后面可以接select語句、where后面也可以跟select語句,舉幾個例子

select * from (select sid from score) as a;

select * from score where sid in (select sid from student);

exists可以理解為一個函數,里面是一個條件,如果存在就是返回1,否則是0,exists放在where后面

去重查詢

SELECT DISTINCT column1,column2,... FROM table-name;

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的mysql关联查询去重_MySQL外键和高级查询(连接查询、联合查询、子查询、去重查询)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。