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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql关联查询语句

發布時間:2023/12/2 数据库 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql关联查询语句 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL關聯查詢

  • 前言
    • 內連接
      • 等值內連接
        • where子句
        • on子句
        • using子句
        • 自然連接
      • 非等值內連接
    • 外連接
      • 左外連接
      • 右外連接
      • 全外連接
    • 交叉連接

前言

MySQL中當查詢數據來自多張表時需要用到關聯查詢,其中關聯查詢又分為內連接、外連接、交叉連接。
創建兩張表,分別是學生表、課程表。建表語句如下:

create table employee(empNo INT PRIMARY KEY,eName varchar(10) not NULL,job varchar(10),salary VARCHAR(10),dempNo VARCHAR(10) not NULL );create table demp(dempNo VARCHAR(10) PRIMARY KEY,dempName VARCHAR(10) not NULL ); insert into demp VALUES('1','采購部'),('2','運營部'),('3','開發部'),('4','運維部'); insert INTO employee VALUES(1,'張三','采購','2000','1'),(2,'李四','采購','2000','1'),(3,'王五','采購','3000','1'),(4,'趙六','運營','3000','2'),(5,'田七','開發','6000','3'); alter TABLE employee ADD INDEX(dempNo); alter table demp add INDEX(dempNo);

內連接

內連接又分為等值內連接與非等值內連接。其中等值內連接涉及where子句、on子句、using子句以及自然連接。

等值內連接

where子句

查詢每個員工的編號、姓名、薪資、部門名稱。

select employee.empNo,employee.eName,employee.salary,demp.dempName from employee,demp WHERE employee.dempNo=demp.dempNo;

結果:

on子句

查詢員工姓名、薪水、部門名稱

select e.eName,e.salary,d.dempName FROM demp d inner JOIN employee e ON e.dempNo=d.dempNo;

using子句

查詢員工姓名、薪水、部門名稱

select e.eName,e.salary,d.dempName from demp d INNER JOIN employee e USING(dempNo);

自然連接

以左右兩表相同字段作為關聯條件,會自動去掉重復字段。

select e.eName,e.salary,d.dempName FROM demp d NATURAL JOIN employee e;

非等值內連接

> < != between and都屬于非等值條件。

select e.empNo,e.eName,e.dempNo,d.dempName from employee e,demp d WHERE e.dempNo=d.dempNo AND e.empNo BETWEEN 1 AND 3;

外連接

外連接主要分為左外連接、右外連接、全外連接。

左外連接

在內連接的基礎上保證左表的數據都有,右表的字段用null補充,同樣的字段會重復出現。

select * FROM demp d LEFT JOIN employee e on d.dempNo=e.dempNo;

右外連接

在內連接的基礎上保證右表的數據都有,左表的字段用null補充,同樣的字段會重復出現。

select * from employee d RIGHT JOIN demp e on d.dempNo=e.dempNo;

全外連接

在內連接基礎上保證左右表的數據都有,是左連接和有連接的并集

select * from employee e full JOIN demp d on e.dempNo=d.dempNo;

需要關注的是,mysql中并不支持全外連接,想要實現全外連接可以通過union。

交叉連接

左表每條記錄與右表每條記錄首尾相連,創建數據庫demp表中有4條數據,employee表中有5條數據,即查詢結果共有4*5=20條記錄。

select * from demp d CROSS JOIN employee e;

over;

總結

以上是生活随笔為你收集整理的mysql关联查询语句的全部內容,希望文章能夠幫你解決所遇到的問題。

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