《六章基本的SQLP讲课教案》由会员分享,可在线阅读,更多相关《六章基本的SQLP讲课教案(38页珍藏版)》请在金锄头文库上搜索。
1、Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-1,第六章 基本的SQL,目的 SQL的關聯模式 SQL的資料定義語言 CREATE TABLE DROP TABLE ALTER TABLE 基本的SQL查詢 SELECTFROMWHERE SQL的更新 INSERT UPDATE DELETE,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-2,目的,關聯模式定義嚴謹簡潔,但好用性和執行效率必須被考量 IBM SYSTEM R (DB2)根據關聯模式、關聯代數、關聯邏輯計算
2、法提出 SEQUEL語言 ANSI和ISO共同制訂資料庫電腦語言的標準, 依SEQUEL為藍本,命名為SQL SQL/86 SQL/89 (完整限制語法) SQL/92或SQL2 (包括四層:entry level、transitional level、intermediate level、和full level ) SQL99/SQL3 (物件導向與資料倉儲 ) 本章介紹SQL99的基本語法,有些DBMS所支援的SQL語法與本章所介紹的有一些差異,但基本觀念雷同,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-3,SQL的關聯模式,
3、為了好用性和執行效率,SQL的資料模式與關聯模式有以下差別: SQL 利用較通俗的名詞來稱呼關聯模式所定義的嚴謹數學名詞 不稱關聯(Relation),改稱資料表(Table) 不稱序列值(Tuple),改稱記錄(Record)或列(Row) 不稱屬性(Attribute),改稱欄位(Field)或行(Column) SQL的資料表可以不需定義主鍵 SQL的資料表中可以有兩筆記錄是一模一樣的 資料表中的記錄是有次序的 SQL提供了三種語言: 資料定義語言(DDL) 資料處理語言(DML) 資料控制語言(DCL),Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的
4、核心理論與實務第三版,6-4,SQL的資料定義語言 (CREATE TABLE ),CREATE TABLE讓使用者定義一個資料表,包括 資料表名稱 欄位 完整限制,CREATE TABLE Member (mId CHAR(8) NOT NULL, pId CHAR(10) NOT NULL, name VARCHAR(8) NOT NULL, birthday DATE, phone VARCHAR(10), address VARCHAR(40), email VARCHAR(20), introducer CHAR(8), PRIMARY KEY (mId), UNIQUE (pId)
5、, FOREIGN KEY(introducer) REFERENCES Member(mId) ON DELETE SET NULL ON UPDATE CASCADE);,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-6,SQL的資料定義語言 (CREATE TABLE )(Cont.),DATE 標準的日期欄位是yyyy-mm-dd TIME 標準的時間欄位是hh:mm:ss TIME(2) (13:25:50:30 ) TIME WITH TIME ZONE (13:20:50+08:00) TIMESTAMP(或稱DATE
6、TIME) 2003-07-10 13:27:50 BLOB:表示是儲存大型的二元型態物件 CLOB:表示是儲存大型的文字型態物件,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-7,SQL的資料定義語言 (CREATE TABLE ),自訂定義域 ( CREATE DOMAIN) CREATE DOMAIN PID_TYPE CHAR(10); CREAE DOMAIN SALES_TYPE INTCHECK (SALES_TYPE 100) ; 作用在單一欄位的完整限制:定義該欄位時一併設定 NOT NULL:不得為空值。 DEF
7、AULT:設定預設值,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-8,SQL的資料定義語言 (CREATE TABLE ),作用在數個欄位的完整限制: PRIMARY KEY:用來設定一資料表的主鍵 UNIQUE:該欄位值為唯一,通常是用來設定次要鍵 FOREIGN KEY:用來設定外部鍵 一筆記錄被刪除或其主鍵值被修改時,其相對應的外部鍵值會受影響。FOREIGN KY裡的語法可以設定這些外部鍵值的處理方式 E.g. FOREIGN KEY pNo REFERENCES Product(pNo) FOREIGN KEY pNo
8、REFERENCES Product,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-9,SQL的資料定義語言 (CREATE TABLE )(Cont.),設定處理方式如下: ON DELETE RESTRICT (為預設處理方式) 一筆記錄只有沒被參考時才可被刪除 ON DELETE SET NULL 一筆記錄被刪除時,所有參考它的外部鍵值全部變成空值 ON DELETE SET DEFULT 一筆記錄被刪除時,所有參考它的外部鍵值全部變成預設值 ON DELETE CASCADE 一筆記錄被刪除時,所有參考它的記錄全部跟著被刪除
9、 ON UPDATE RESTRICT (為預設處理方式) 一筆記錄的主鍵值只有沒被參考時才可被修改 ON UPDATE CASCADE 一筆記錄的主鍵值被修改時,所有參考它的外部鍵值全部跟著修改,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-10,CREATE TABLE Member (mId CHAR(8) NOT NULL, pId VARCHAR(10) NOT NULL, name VARCHAR(8) NOT NULL, birthday DATE, phone VARCHAR(10), address VARCHAR
10、(40), email VARCHAR(20), introducer CHAR(8), PRIMARY KEY (mId), UNIQUE (pId), FOREIGN KEY (introducer) REFERENCES Member(mId) ON DELETE SET NULL ON UPDATE CASCADE); CREATE TABLE Cart (mId CHAR(8) NOT NULL, cartTime TIMESTAMP, NOT NULL, tNo CHAR(5), PRIMARY KEY (mId, cartTime), FOREIGN KEY (tNo) REFE
11、RENCES Transaction(tNo) ON UPDATE CASCADE, FOREIGN KEY (mId) REFERENCES Member(mId) ON DELETE CASCADE ON UPDATE CASCADE);,CREATE TABLE Transaction (tNo CHAR(5) NOT NULL, transMId CHAR(8) NOT NULL, transTime TIMESTAMP NOT NULL, method VARCHAR(5) NOT NULL, bankId VARCHAR(14) NOT NULL, bankName VARCHAR
12、(20), cardId VARCHAR(10), cardType VARCHAR(10) dueDate DATE, PRIMARY KEY (tNo), FOREIGN KEY (transMid) REFERENCES Member(mId); CREATE TABLE Author (pNo CHAR(6) NOT NULL, name VARCHAR(8) NOT NULL, PRIMARY KEY (pNo, name ), FOREIGN KEY (pNo) REFERENCES Product (pNo);,線上購物系統資料庫的SQL定義,Copyright 黃三益 2003
13、 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-11,CREATE TABLE Browse (mId CHAR(8) NOT NULL DEFAULT a0910001, pNo CHAR(6) NOT NULL, browseTime TIMESTAMP NOT NULL, PRIMARY KEY (mId, pNo, browseTime ), FOREIGN KEY (mId) REFERENCES Member(mId) ON DELETE SET DEFAULT ON UPDATE CASCADE, FOREIGN KEY (pNo) REFERENCES
14、Product (pNo); CREATE TABLE Order (pNo CHAR(6) NOT NULL, mId CHAR(8) NOT NULL, cartTime TIMESTAMP NOT NULL, amount INT DEFAULT 1, PRIMARY KEY (pNo ,mId, cartTime ), FOREIGN KEY (pNo) REFERENCES Product (pNo), FOREIGN KEY (mId, cartTime) REFERENCES Cart (mId, cartTime); CREATE TABLE Product (pNo CHAR
15、(6) NOT NULL, pName VARCHAR(10), unitPrice DECIMAL(10,2), catalog VARCHAR(20), PRIMARY KEY (pNo ), CONSTRAINT UnitPrice_Check CHECK (unitPrice 100);,CREATE TABLE Record (tNo CHAR(5) NOT NULL, pNo CHAR(6) NOT NULL, salePrice DECIMAL(10,2) NOT NULL, amount INT NOT NULL, PRIMARY KEY (tNo,pNo), FOREIGN
16、KEY (tNo) REFERENCES Transaction (tNo), FOREIGN KEY (pNo) REFERENCES Product (pNo);,Copyright 黃三益 2003 資料庫核心理論與實務黃三益2007 資料庫的核心理論與實務第三版,6-12,練習6-1,參考線上購物系統資料庫綱目,請問在資料表Member裡, 有哪些欄位可以為空值? 主鍵和次要鍵各為何? 考慮第四章圖4-4的資料庫,如果名為Jennifer的會員記錄被刪除,請問哪些會員的introducer欄位值會受到影響?怎樣的影響? Ans: 可為空值的欄位有: birthday, phone, address, email, introducer 主鍵: mId 次要鍵: pId 受影響的會員有2筆記錄: mId為a0910001, name為Jenny mId為c0927777, name為Su 兩者的介紹人欄位會被設定為空值(NULL)。