1. 程式人生 > >表連線_資料準備

表連線_資料準備

到目前為止,我們講解的資料查詢都是針對單張資料表的,但是在真實的業務系統中,各個表之間都存在這種聯絡,很少存在不與其他表存在關聯關係的表,而在實現業務功能的時候也經常需要從多個表中進行資料的檢索,而進行多表檢索最常用的技術就是表連線。

為了更容易的執行本章中的例子,必須首先建立所需要的資料表,因此下面列出要用到資料表的建立SQL語句:


MYSQL,MSSQLServer,DB2:

CREATE TABLE T_Customer (FId INT NOT NULL ,FName VARCHAR(20) NOT NULL ,FAge INT,PRIMARY KEY (FId)) Oracle: CREATE TABLE T_Customer (FId NUMBER (10) NOT NULL ,FName VARCHAR2(20) NOT NULL ,FAge NUMBER (10),PRIMARY KEY (FId)) MYSQL,MSSQLServer,DB2: CREATE TABLE T_OrderType (FId INT NOT NULL ,FName VARCHAR(20) NOT NULL,PRIMARY KEY (FId)) Oracle: CREATE TABLE T_OrderType (FId NUMBER (10) NOT NULL ,FName VARCHAR2(20) NOT NULL,PRIMARY KEY (FId)) MYSQL,DB2: CREATE TABLE T_Order (FId INT NOT NULL ,FNumber VARCHAR(20) NOT NULL ,FPrice DECIMAL(10,2),FCustomerId INT,FTypeId INT,PRIMARY KEY (FId)) MSSQLServer: CREATE TABLE T_Order (FId INT NOT NULL ,FNumber VARCHAR(20) NOT NULL ,FPrice NUMERIC(10,2),FCustomerId INT, FTypeId INT,PRIMARY KEY (FId)) Oracle: CREATE TABLE T_Order (FId NUMBER (10) NOT NULL ,FNumber VARCHAR2(20) NOT NULL ,FPrice NUMERIC(10,2),FCustomerId NUMBER (10), FTypeId INT,PRIMARY KEY (FId)) 

請在不同的資料庫系統中執行相應的SQL語句。其中表T_Customer儲存的是客戶資訊,FId為主鍵、FName為客戶姓名、FAge為客戶年齡;表T_OrderType儲存的是訂單型別,FId為主鍵、FName為型別名;表T_Order為儲存的是訂單資訊,FId為主鍵、FNumber為訂單號、FPrice為價格、FCustomerId為客戶的主鍵。

為了更加直觀的驗證本章中函式使用方法的正確性,我們需要在兩張表中預置一些初始資料,請在資料庫中執行下面的資料插入SQL語句:


INSERT INTO T_Customer(FId,FName,FAge)VALUES(1,"TOM",21); INSERT INTO T_Customer(FId,FName,FAge)VALUES(2,"MIKE",24); INSERT INTO T_Customer(FId,FName,FAge)VALUES(3,"JACK",30); INSERT INTO T_Customer(FId,FName,FAge)VALUES(4,"TOM",25); INSERT INTO T_Customer(FId,FName,FAge)VALUES(5,"LINDA",NULL); INSERT INTO T_OrderType(FId,FName)VALUES(1,"MarketOrder"); INSERT INTO T_OrderType(FId,FName)VALUES(2,"LimitOrder"); INSERT INTO T_OrderType(FId,FName)VALUES(3,"Stop Order"); INSERT INTO T_OrderType(FId,FName)VALUES(4,"StopLimit Order"); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(1,"K001",100,1,1); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(2,"K002",200,1,1); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(3,"T003",300,1,2); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(4,"N002",100,2,2); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(5,"N003",500,3,4); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(6,"T001",300,4,3); INSERT INTO T_Order(FId,FNumber,FPrice,FCustomerId, FTypeId)VALUES(7,"T002",100,NULL,1);