sql表的關聯
『壹』 SQL資料庫關聯是什麼怎麼用
使用外聯接
僅當至少有一個同屬於兩表的行符合聯接條件時,內聯接才返回行。內聯接消除與另一個表中的任何行不匹配的行。而外聯接會返回
FROM
子句中提到的至少一個表或視圖的所有行,只要這些行符合任何
WHERE
或
HAVING
搜索條件。將檢索通過左向外聯接引用的左表的所有行,以及通過右向外聯接引用的右表的所有行。完整外部聯接中兩個表的所有行都將返回。
Microsoft®
SQL
Server™
2000
對在
FROM
子句中指定的外聯接使用以下
SQL-92
關鍵字:
LEFT
OUTER
JOIN
或
LEFT
JOIN
RIGHT
OUTER
JOIN
或
RIGHT
JOIN
FULL
OUTER
JOIN
或
FULL
JOIN
SQL
Server
支持
SQL-92
外聯接語法,以及在
WHERE
子句中使用
*=
和
=*
運算符指定外聯接的舊式語法。由於
SQL-92
語法不容易產生歧義,而舊式
Transact-SQL
外聯接有時會產生歧義,因此建議使用
SQL-92
語法。
使用左向外聯接
假設在
city
列上聯接
authors
表和
publishers
表。結果只顯示在出版商所在城市居住的作者(本例中為
Abraham
Bennet
和
Cheryl
Carson)。
若要在結果中包括所有的作者,而不管出版商是否住在同一個城市,請使用
SQL-92
左向外聯接。下面是
Transact-SQL
左向外聯接的查詢和結果:
USE
pubs
SELECT
a.au_fname,
a.au_lname,
p.pub_name
FROM
authors
a
LEFT
OUTER
JOIN
publishers
p
ON
a.city
=
p.city
ORDER
BY
p.pub_name
ASC,
a.au_lname
ASC,
a.au_fname
ASC
『貳』 如何設置SQL資料庫表與表的關聯關系
如果是 父子關系, 或者 一對多 關系。
可以通過 創建外鍵的方式, 在 父表 與 子表之間, 創建一個關聯關系。
例如:
-- 創建測試主表. ID 是主鍵.
CREATE TABLE test_main (
id INT NOT NULL,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 創建測試子表.
CREATE TABLE test_sub (
id INT NOT NULL,
main_id INT ,
value VARCHAR(10),
PRIMARY KEY(id)
);
-- 插入測試主表數據.
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
-- 插入測試子表數據.
INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE');
INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO');
SQL> -- 創建外鍵(默認選項)
SQL> ALTER TABLE test_sub ADD CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main;
Table altered.
SQL>
SQL> -- 測試刪除主表數據. 將出錯 ORA-02292: 違反完整約束條件
SQL> DELETE
2 test_main
3 WHERE
4 ID = 1;
DELETE
*
ERROR at line 1:
ORA-02292: integrity constraint (HR.MAIN_ID_CONS) violated - child record found