先舉一個例子,在Northwind數據庫中,如果要查看一個訂單是由哪個雇員簽訂的,簽訂的時間是什麼時候,買了什麼產品,價格是多少,由誰來送貨,送貨的地址是什麼等內容,那麼就要從產品、訂單、訂單明細、雇員和運貨商五個表中查詢記錄,其查詢代碼如下:
SELECT 訂單.訂單ID, 雇員.姓氏, 雇員.名字, 產品.產品名稱,
訂單明細.單價, 訂單明細.數量, 訂單明細.折扣, 運貨商.公司名稱,
訂單.貨主名稱, 訂單.貨主地址, 訂單.貨主城市, 訂單.訂購日期,
訂單.發貨日期
FROM 訂單 INNER JOIN
訂單明細 ON 訂單.訂單ID = 訂單明細.訂單ID INNER JOIN
雇員 ON 訂單.雇員ID = 雇員.雇員ID INNER JOIN
產品 ON 訂單明細.產品ID = 產品.產品ID INNER JOIN
運貨商 ON 訂單.運貨商 = 運貨商.運貨商ID
如果要查詢具體某一個訂單的詳細內容,還要在其後增加一個“WHERE 訂單.訂單ID =”的語句。
如果經常需要查詢相同的字段內容(只是條件不同,如上例中可能只是訂單的ID號不同而已),那麼每次都重復地寫這麼一大串相同的代碼,無疑會增加工作量和影響工作效率。
再看一下圖9.1,其顯示出來的界面與在SQL Server Management Studio中打開一個表的界面是否十分相似?如果將這個查詢的結果集視為一個表,那麼這個表就是一個視圖,下面是將該查詢結果創建成視圖的代碼:
CREATE VIEW 訂單詳細視圖
AS
SELECT 訂單.訂單ID, 雇員.姓氏, 雇員.名字, 產品.產品名稱,
訂單明細.單價, 訂單明細.數量, 訂單明細.折扣, 運貨商.公司名稱,
訂單.貨主名稱, 訂單.貨主地址, 訂單.貨主城市, 訂單.訂購日期,
訂單.發貨日期
FROM 訂單 INNER JOIN
訂單明細 ON 訂單.訂單ID = 訂單明細.訂單ID INNER JOIN