MySQL必知必會 第十五章 聯結表

2021-10-03 22:06:42 字數 2040 閱讀 8830

例子:

​ 假如有乙個包含產品目錄的資料庫表,其中每種類別的物品佔一行。對於每種物品要儲存的資訊包括描述和**,以及生產該產品的**商資訊。現在,假如有由同一**商生產的多種物品,那麼在何處儲存**商資訊呢?

​ 可建立兩個表,乙個儲存**商資訊,另乙個儲存產品資訊。vendors表包含所有**商資訊,每個**商佔一行,每個**商具有唯一的標識。此標識為主鍵,可以是**商id或任何其他的唯一值。

​ products表只儲存產品資訊,它除了儲存**商id外不儲存其他**商資訊。vendors表的主鍵又叫作products的外來鍵,它將兩個表關聯。

關係表的設計就是要保證把資訊分解成多個表,一類資料乙個表。各個表通過某些常用的值互相關聯。

外來鍵:為某個表中的一列,它包含另乙個表的主鍵值,定義了兩個表之間的關係。

可伸縮性:能夠適應不斷增加的工作量而不失敗。設計良好的資料庫或應用程式稱為可伸縮性好。

等值聯結,也稱內部聯結:基於兩個表之間的相等測試.

select vend_name,prod_name,prod_price

from vendors,products

where vendors.vend_id=products.vend_id

order

by vend_name,prod_name

select vend_name,prod_name,prod_price

from vendors a ,products b

where a.vend_id=b.vend_id

order

by vend_name,prod_name

select vend_name,prod_name,prod_price

from vendors a ,products b

where a.vend_id=b.vend_id

#沒有order by語句也能連線

在聯結兩個表時,實際上做的是將第乙個表中的每一行與第二個表中的每一行配對。where子句作為過濾條件,只包含那些匹配給定條件的行.如果沒有where,第乙個表中的每行將與第二個表中的每行進行配對,而不管邏輯上是否可以在一起.

​ 笛卡爾積:由沒有聯結條件的表關係返回的結果.檢索出的行的數目將是第乙個表中行數乘以第二個表的行數.

上述等值聯結即為內部聯結.

另一種寫法

select vend_name,prod_name,prod_price

from vendors a

inner

join products b

on a.vend_id=b.vend_id

select prod_name,vend_name,prod_price,quantity 

from orderitems a,products b,vendors c

where b.vend_id=c.vend_id

and a.prod_id=b.prod_id

and order_num=

20005

#找訂購產品tnt2的客戶列表

#方法一

select cust_name,cust_contact

from customers

where cust_id in

(select cust_id from orders where order_num in

(select order_num from orderitems where prod_id=

'tnt2'))

#方法二

select cust_name,cust_contact

from customers a,orders b,orderitems c

where b.order_num=c.order_num

and a.cust_id=b.cust_id

and c.prod_id=

'tnt2'

第十五章預習

public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...

SQL 必知必會第十五課 插入資料

插入完整的行 insert into customers values 1000000006 toy land 123 any street new york ny 11111 usa null null 繁瑣卻更加保險的方法 insert into customers cust id,cust n...

learn with python 第十五章 繼承

第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...