MySql連接查詢精解
出於對知識的總結和分享,對常見的查詢做了練習和總結。
數據准備,包括兩個表,tuser和ttable。tuser和ttable為1對多關系。
tuser表結構如下:
名稱 www.2cto.com
類型
備注
id
Integer
主鍵
name
Varchar(50)
用戶名稱
password
Varchar(50)
用戶密碼
Sex
Varchar(20)
用戶性別
ttable表機構如下:
名稱
類型
備注
id
Integer
主鍵
name
Varchar(50)
名稱
userid
Integer
用戶id
建表語句:
[sql]
<span style="font-size:18px;">Create table tuser(id Integer primary key,
name varchar(50),
password varchar(50),
sex varchar(20)
);
Create table ttable(id Integer primary key,
name varhcar(50),
userid Integer
); www.2cto.com
</span>
插入數據語句
[sql]
<span style="font-size:18px;">Insert into tuser(id, name, password,sex)values(1,’中文’,’測試’,’m’);
Insert into tuser(id, name, password,sex)values(2,’中文’,’測試’,’m’);
Insert into ttable(id,name, userid)values(1,’1’,1);
Insert into ttable(id,name, userid)values(2,’2’,2);
Insert into ttable(id,name, userid)values(3,’2’,2);
</span>
1、 左外連接
select * from ttablet left join tuser u on t.userid=2 and t.userid=u.id;結果如下:
以左側表(ttable)為基礎,滿足條件數據全部查詢出來,右表(tuser)不滿足條件出現null補齊
2、右外連接
select * from ttable t right join tuser u on t.userid=2 and t.userid=u.id出現如下結果: www.2cto.com
以右表為基礎(tuser)滿足條件的數據全部查詢出來,左表(ttable)不滿足條件出現null補齊
3、內連接
select * from ttable,tuser;出現結果如下:
以笛卡爾積的方式展現。設A、B為集合,用A中的元素x作第一元素,B中的元素y作第二元素,構成有序對,所有這樣的有序對組成的集合,叫做A和B的笛卡兒積,記做A×B。
在數據庫中,設有關系A為 <學號、姓名> ,具體內容為{ <1,張三> , <2,李四> };關系B為 <學號、年齡> ,具體內容為{ <1,20> <2,22> }。
則A×B={ <1,張三,1,20> , <1,張三,2,22> , <2,李四,1,20> , <2,李四,2,22> }
如果再做第一列=第三列的選擇,再做只保留第一、第二、第三列的投影,即得{ <1,張三,20> , <2,李四,22> }這樣,通過關系代數的三個運算,我們查到了每個人的年齡。
作者 柳波