mysql与java连接查询_【java】MySQL数据库之连接查询
連接查詢
首先來認識一個叫笛卡爾積 (cartesian product) 的東東,也可以叫直積。
假設我們有一個集合 A = {a, b}, 還有一個集合B = {0, 1, 2} ,那么這兩個兩集合的笛卡積為:{{a, 0}, {a, 1}, {a, 2}, {b, 0}, {b, 1}, {b,2}}。
就是兩個集合中的元素可能存在的所有組合方式而形成的新的集合!
我是這么理解的,太具體的解釋,歡迎伙伴們去百度哈!
現在我們用代碼來測試演示一下:
create table one(
one_id int,
one_date char(1),
public_field int
);
insert into one values(1, 'a', 10),(2, 'b', 20),(3, 'c', 30);
create table two(
two_id int,
two_date char(1) not null default 't',
public_field int
);
insert into two values(2, 'B', 20),(3, 'C', 30),(4, 'D', 40);
select one.*, two.* from one, two;
這個就是表one 和 表 two 的所有元素可能出現的組合就是笛卡爾積!
內連接查詢
三種語法:
select * from tableA , tableB where tabA.column=tabB.column;
select * from tableA inner join tableB on tabA.column=tabB.column;
select * from tableA cross join tableB on tabA.column=tabB.column;
內連接
只有在連接的表內數據都存在的情況下,才會做連接。內連接是把二個表連接成一個結果集,在這個結果集中僅包含那些滿足條件的記錄行。
select one.*,two.* from one , two where one.one_id=two.two_id;
select one.*,two.* from one inner join two on one.one_id=two.two_id;
select one.*,two.* from one cross join two on one.one_id=two.two_id;
這三種語法都可以實現內連接查詢
外連接查詢
如果存在不能匹配的數據,也會進行連接,不過此時 mysql 會幫我們虛擬一條不存在的記錄,字段值都是為 null,幫我們完成整個連接記錄。
分為:
左外連接 : left join on, left outer join on;
右外連接 :right join on, right outer join on;
語法:
select * from tableA left join tableB on tabA.column=tabB.column;
select * from tableA right join tableB on tabA.column=tabB.column;
區別在于:
左外連接 :
返回左表的所有數據,并且在右表中不能匹配的列值,其字段用空值null表示。
select one.*,two.* from one left join two on one.one_id=two.two_id;
left join – where null
返回和右表不匹配的所有數據行。
select one.*,two.* from one left join two on one.one_id=two.two_id where two.two_id is null;
right join :
右外連接 : 返回右表的所有數據,并且在左表中不能匹配的列值,其字段用空值表示。
select one.*,two.* from one right join two on one.one_id=two.two_id;
right join – where null
返回和右表不匹配的所有數據行。
select one.*,two.* from one right join two on one.one_id=two.two_id where one.one_id is null;
我們來看一下這個外鏈接在實際項目中的是如何使用的
select a.name,a.province,a.city,a.phone,b.employee_name,b.job_title from office a inner join employee b on a.office_id=b.office_id;
select count(b.employee_id),a.name from office a inner join employee b on a.office_id=b.office_id group by a.name;
select count(employee_id),office_id from employee group by office_id;
這樣一對比是不是就看出我們的連接查詢的用處了呢?
好的今天就分享到這里了
寶寶們回去要記得練習一下呦!
愛你們么么噠
!
總結
以上是生活随笔為你收集整理的mysql与java连接查询_【java】MySQL数据库之连接查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4.0.13 mysql 注入_Wind
- 下一篇: uniapp 获取图片的高度_uni-a