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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 的 外连查询

發(fā)布時間:2024/4/18 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 的 外连查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:外連查詢包含左聯(lián)查詢和右聯(lián)查詢,下面先介紹左聯(lián)查詢:?

第一部分:左連查詢

mysql> select * from employee; +-----+------+--------+------+------+--------------------+ | num | d_id | name | age | sex | homeaddr | +-----+------+--------+------+------+--------------------+ | 1 | 1001 | 張三 | 26 | 男 | 北京市海淀區(qū) | | 2 | 1001 | 李四 | 24 | 女 | 北京市昌平區(qū) | | 3 | 1002 | 王五 | 25 | 男 | 湖南省長沙市 | | 4 | 1004 | Aric | 15 | 男 | England | +-----+------+--------+------+------+--------------------+ 4 rows in set (0.00 sec)mysql> select * from department; +------+-----------+--------------+-------------+ | d_id | d_name | function_ | address | +------+-----------+--------------+-------------+ | 1001 | 科研部 | 研發(fā)產(chǎn)品 | 3號樓5層 | | 1002 | 生產(chǎn)部 | 生產(chǎn)產(chǎn)品 | 5號樓1層 | | 1003 | 銷售部 | 策劃銷售 | 5號樓1層 | +------+-----------+--------------+-------------+ 3 rows in set (0.00 sec)

下面的這段代碼到底錯在哪里呢??

mysql> select num,name,age,sex,d_name,department.d_id,address,homeaddr from employee left john department on employee.d_id = department.d_id;

其實,就是單詞拼寫錯誤,不是john,而是join

比如:

mysql> select d_name,num,employee.d_id,age,sex,homeaddr,address from employee left join department on department.d_id = employee.d_id; +-----------+-----+------+------+------+--------------------+-------------+ | d_name | num | d_id | age | sex | homeaddr | address | +-----------+-----+------+------+------+--------------------+-------------+ | 科研部 | 1 | 1001 | 26 | 男 | 北京市海淀區(qū) | 3號樓5層 | | 科研部 | 2 | 1001 | 24 | 女 | 北京市昌平區(qū) | 3號樓5層 | | 生產(chǎn)部 | 3 | 1002 | 25 | 男 | 湖南省長沙市 | 5號樓1層 | | NULL | 4 | 1004 | 15 | 男 | England | NULL | +-----------+-----+------+------+------+--------------------+-------------+ 4 rows in set (0.00 sec)

顯然,左連接查詢的語法是:

select 屬性字段 from 表名1 left join 表名2 on? 表名1.屬性 = 表名2.屬性

可以仿照英語語法記憶,from ....? left join? ... on?

mysql> select num,age,department.d_id from department left join employee on department.d_id = employee.d_id; +------+------+------+ | num | age | d_id | +------+------+------+ | 2 | 24 | 1001 | | 1 | 26 | 1001 | | 3 | 25 | 1002 | | NULL | NULL | 1003 | +------+------+------+ 4 rows in set (0.00 sec)

下面來一個內(nèi)連查詢的例子,體會區(qū)別:

mysql> select employee.d_id,age,name,address from employee,department -> where employee.d_id=department.d_id; +------+------+--------+-------------+ | d_id | age | name | address | +------+------+--------+-------------+ | 1001 | 26 | 張三 | 3號樓5層 | | 1001 | 24 | 李四 | 3號樓5層 | | 1002 | 25 | 王五 | 5號樓1層 | +------+------+--------+-------------+ 3 rows in set (0.00 sec)

自己體會,內(nèi)連查詢就是同時查詢兩個表的字段,代碼特點是from后有用逗號分割的兩個表,但是外連查詢是固定句型from ...left join ... on ...=...,比內(nèi)連查詢語法復(fù)雜些。

左連接查詢能查出表1的所有記錄,而表2的匹配記錄才可以查出。

第二部分:右連查詢

右連接查詢和左連接查詢正好相反,左連接查詢用詞left,而右連接查詢用right,左連接查詢能查詢左表(表1)的所有記錄,而右連接查詢能查詢右表(表2)的所有記錄:

mysql> select function_,name,employee.d_id,d_name,homeaddr from employee right join department on employee.d_id = department.d_id; +--------------+--------+------+-----------+--------------------+ | function_ | name | d_id | d_name | homeaddr | +--------------+--------+------+-----------+--------------------+ | 研發(fā)產(chǎn)品 | 李四 | 1001 | 科研部 | 北京市昌平區(qū) | | 研發(fā)產(chǎn)品 | 張三 | 1001 | 科研部 | 北京市海淀區(qū) | | 生產(chǎn)產(chǎn)品 | 王五 | 1002 | 生產(chǎn)部 | 湖南省長沙市 | | 策劃銷售 | NULL | NULL | 銷售部 | NULL | +--------------+--------+------+-----------+--------------------+ 4 rows in set (0.00 sec)

仍然是select from ...right join ...on ...=....

mysql> select function_,name,department.d_id,d_name,homeaddr from employee rightjoin department on employee.d_id = department.d_id; +--------------+--------+------+-----------+--------------------+ | function_ | name | d_id | d_name | homeaddr | +--------------+--------+------+-----------+--------------------+ | 研發(fā)產(chǎn)品 | 李四 | 1001 | 科研部 | 北京市昌平區(qū) | | 研發(fā)產(chǎn)品 | 張三 | 1001 | 科研部 | 北京市海淀區(qū) | | 生產(chǎn)產(chǎn)品 | 王五 | 1002 | 生產(chǎn)部 | 湖南省長沙市 | | 策劃銷售 | NULL | 1003 | 銷售部 | NULL | +--------------+--------+------+-----------+--------------------+ 4 rows in set (0.00 sec)

上面的2個查詢看起來一樣,只是employee.d_id換成了department.d_id,卻都顯示了一個d_id,由此,右連接查詢公共字段使用表2字段,左連接查詢公共字段盡量使用表1字段,否則可能不顯示。

總結(jié)

以上是生活随笔為你收集整理的mysql 的 外连查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。