聯結基本知識通過聯結,可以根據表之間的邏輯關係,從兩個或多個表中檢索資料。聯結查詢是關係型資料庫的一個重要特點,同時也是區別於其他類型資料庫管理系統的一個主要標誌。聯結的文法格式使用from子句聯結from first_table join_type second_table [ON (join_condition)]
- join_type:執行的聯結類型,可以分為交叉聯結、內部聯結,外部聯結
- join_condition:用於指定聯結條件
使用where子句聯結
from fist_table , second_table where (join_condition)
- 是ANSI SQL:1989規定的文法格式,聯結表之間使用逗號分隔,但是僅支援交叉聯結和內部聯結
交叉聯結(cross join)交叉聯結是聯結查詢的第一個階段,它對兩個表進行笛卡爾乘積。即將第一個表中的每一行與第二個表的所有行進行聯結,因此產生的結果集大小等於第一個表的行數乘以第二個表的行數。樣本建表語句
DROP TABLE IF EXISTS `employees`;CREATE TABLE `employees` (`empid` int(11) NOT NULL AUTO_INCREMENT,`emp_name` varchar(100) NOT NULL,PRIMARY KEY (`empid`)) ENGINE=MyISAM;INSERT INTO employees(emp_name)VALUES ("wangzhengyi"),("chenshan"),("lulu");DROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` (`oid` int(11) NOT NULL AUTO_INCREMENT,`empid` int(11) NOT NULL,`season` varchar(100) NOT NULL,`money` int(11) NOT NULL,PRIMARY KEY (`oid`)) ENGINE=MyISAM;INSERT INTO orders(empid,season,money)VALUES ("1","season 1",2000),("1","season 2",2000),("1","season 2",2000),("2","season 1",1000),("2","season 2",1000);
樣本查詢語句
select * from employees cross join orders;
內部聯結(Inner join)內部聯結(inner join)是屬於典型的聯結運算,使用=,<>等比較子進行條件聯結。內部聯結使用聯結查詢的前兩個階段,即笛卡爾積和ON篩選器。內部聯結僅擷取兩個表中與聯結條件匹配的記錄內部聯結文法格式
等值進行內部聯結不等值進行內部聯結目前項目中暫時沒用到過不等值的內部連結,暫時不提了未完待續今天寫sql語句的時候,突然對錶的聯結有些生疏,複習了一下基礎知識,參考了<<鋒利的SQL>>,但是由於時間關係和自身目前的興趣點不在sql語句這塊,只是粗率的介紹了一下,以後會進一步完善的。