资料库核心理论与实务-图文_第1页
资料库核心理论与实务-图文_第2页
资料库核心理论与实务-图文_第3页
资料库核心理论与实务-图文_第4页
资料库核心理论与实务-图文_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

资料库核心理论与实务_图文.ppt目的關聯模式定義嚴謹簡潔,但好用性和執行效率必須被考量IBMSYSTEMR(DB2)根據關聯模式、關聯代數、關聯邏輯計算法提出SEQUEL語言

ANSI和ISO共同制訂資料庫電腦語言的標準,依SEQUEL為藍本,命名為SQLSQL/86SQL/89(完整限制語法)SQL/92或SQL2(包括四層:entrylevel、transitionallevel、intermediatelevel、和fulllevel)SQL99/SQL3(物件導向與資料倉儲)本章介紹SQL99的基本語法,有些DBMS所支援的SQL語法與本章所介紹的有一些差異,但基本觀念雷同2Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的關聯模式為了好用性和執行效率,SQL的資料模式與關聯模式有以下差別:SQL利用較通俗的名詞來稱呼關聯模式所定義的嚴謹數學名詞不稱關聯(Relation),改稱資料表(Table)不稱序列值(Tuple),改稱記錄(Record)或列(Row)不稱屬性(Attribute),改稱欄位(Field)或行(Column)

SQL的資料表可以不需定義主鍵SQL的資料表中可以有兩筆記錄是一模一樣的資料表中的記錄是有次序的SQL提供了三種語言:資料定義語言(DDL)資料處理語言(DML)資料控制語言(DCL)3Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)CREATETABLE讓使用者定義一個資料表,包括資料表名稱欄位完整限制CREATETABLEMember (mIdCHAR(8)NOTNULL, pIdCHAR(10)NOTNULL, nameVARCHAR(8)NOTNULL, birthdayDATE, phone VARCHAR(10), addressVARCHAR(40), emailVARCHAR(20), introducerCHAR(8),

PRIMARYKEY(mId), UNIQUE(pId),

FOREIGNKEY(introducer)REFERENCESMember(mId) ONDELETE

SETNULL

ONUPDATE

CASCADE);4Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)SQL所提供的定義域型態INT

DECIMAL(i,j)DECIMAL(3,1)DECIMAL(2)DECIMALCHAR(n)VARCHAR(n)BIT(n)VARBIT(n)5Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)(Cont.)DATE

標準的日期欄位是yyyy-mm-ddTIME

標準的時間欄位是hh:mm:ssTIME(2)(13:25:50:30)TIMEWITHTIMEZONE(13:20:50+08:00)TIMESTAMP(或稱DATETIME)2003-07-1013:27:50BLOB:表示是儲存大型的二元型態物件CLOB:表示是儲存大型的文字型態物件6Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)自訂定義域(CREATEDOMAIN)CREATEDOMAINPID_TYPECHAR(10);CREAEDOMAINSALES_TYPEINT

CHECK(SALES_TYPE>100);作用在單一欄位的完整限制:定義該欄位時一併設定

NOTNULL:不得為空值。DEFAULT:設定預設值

7Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)作用在數個欄位的完整限制:PRIMARYKEY:用來設定一資料表的主鍵UNIQUE:該欄位值為唯一,通常是用來設定次要鍵FOREIGNKEY:用來設定外部鍵一筆記錄被刪除或其主鍵值被修改時,其相對應的外部鍵值會受影響。FOREIGNKY裡的語法可以設定這些外部鍵值的處理方式E.g. FOREIGNKEYpNoREFERENCESProduct(pNo)

FOREIGNKEYpNoREFERENCESProduct8Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(CREATETABLE)(Cont.)設定處理方式如下:ONDELETERESTRICT(為預設處理方式)一筆記錄只有沒被參考時才可被刪除ONDELETE

SETNULL一筆記錄被刪除時,所有參考它的外部鍵值全部變成空值ONDELETESETDEFULT一筆記錄被刪除時,所有參考它的外部鍵值全部變成預設值ONDELETECASCADE一筆記錄被刪除時,所有參考它的記錄全部跟著被刪除ONUPDATERESTRICT(為預設處理方式)一筆記錄的主鍵值只有沒被參考時才可被修改ONUPDATECASCADE一筆記錄的主鍵值被修改時,所有參考它的外部鍵值全部跟著修改9Copyright黃三益2003資料庫核心理論與實務黃三益2007CREATETABLEMember (mIdCHAR(8)NOTNULL, pIdVARCHAR(10)NOTNULL, nameVARCHAR(8)NOTNULL, birthdayDATE, phoneVARCHAR(10), addressVARCHAR(40), emailVARCHAR(20), introducerCHAR(8),

PRIMARYKEY(mId), UNIQUE(pId),

FOREIGNKEY(introducer)REFERENCESMember(mId) ONDELETE

SETNULL

ONUPDATE

CASCADE);CREATETABLECart (mIdCHAR(8)NOTNULL, cartTimeTIMESTAMP,NOTNULL, tNo CHAR(5),

PRIMARYKEY(mId,cartTime), FOREIGNKEY(tNo)REFERENCESTransaction(tNo) ONUPDATE

CASCADE, FOREIGNKEY(mId)REFERENCESMember(mId) ONDELETE

CASCADE

ONUPDATE

CASCADE);CREATETABLETransaction (tNoCHAR(5)NOTNULL, transMIdCHAR(8)NOTNULL, transTimeTIMESTAMP

NOTNULL, methodVARCHAR(5)NOTNULL, bankIdVARCHAR(14)NOTNULL, bankNameVARCHAR(20), cardIdVARCHAR(10), cardTypeVARCHAR(10) dueDateDATE,

PRIMARYKEY(tNo),

FOREIGNKEY(transMid)REFERENCESMember(mId));CREATETABLEAuthor (pNoCHAR(6)NOTNULL, nameVARCHAR(8)NOTNULL,

PRIMARYKEY(pNo,name),

FOREIGNKEY(pNo)REFERENCESProduct(pNo));線上購物系統資料庫的SQL定義10Copyright黃三益2003資料庫核心理論與實務黃三益2007CREATETABLEBrowse (mIdCHAR(8)NOTNULLDEFAULT'a0910001', pNoCHAR(6)NOTNULL, browseTimeTIMESTAMPNOTNULL,

PRIMARYKEY(mId,pNo,browseTime),

FOREIGNKEY(mId)REFERENCESMember(mId) ONDELETE

SETDEFAULT

ONUPDATE

CASCADE,

FOREIGNKEY(pNo)REFERENCESProduct(pNo));CREATETABLEOrder (pNoCHAR(6)NOTNULL, mIdCHAR(8)NOTNULL, cartTimeTIMESTAMP

NOTNULL, amountINT

DEFAULT1,

PRIMARYKEY(pNo,mId,cartTime),

FOREIGNKEY(pNo)REFERENCESProduct(pNo),

FOREIGNKEY(mId,cartTime)REFERENCESCart(mId,cartTime));CREATETABLEProduct (pNoCHAR(6)NOTNULL, pNameVARCHAR(10), unitPriceDECIMAL(10,2), catalogVARCHAR(20),

PRIMARYKEY(pNo), CONSTRAINTUnitPrice_Check CHECK(unitPrice>100));CREATETABLERecord (tNoCHAR(5)NOTNULL, pNoCHAR(6)NOTNULL, salePriceDECIMAL(10,2)NOTNULL, amountINTNOTNULL,

PRIMARYKEY(tNo,pNo),

FOREIGNKEY(tNo)REFERENCESTransaction(tNo),

FOREIGNKEY(pNo)REFERENCESProduct(pNo));11Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-1參考線上購物系統資料庫綱目,請問在資料表Member裡,有哪些欄位可以為空值?主鍵和次要鍵各為何?考慮第四章圖4-4的資料庫,如果名為'Jennifer'的會員記錄被刪除,請問哪些會員的introducer欄位值會受到影響?怎樣的影響?Ans:可為空值的欄位有:birthday,phone,address,email,introducer主鍵:mId次要鍵:pId受影響的會員有2筆記錄:mId為a0910001,name為JennymId為c0927777,name為Su兩者的'介紹人'欄位會被設定為空值(NULL)。

12Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-2參考線上購物系統資料庫綱目的Transaction綱目,假設當一會員記錄被刪除時,我們希望其交易記錄也一併刪除,而當會員編號改變時,其交易記錄的transMid欄位也跟著修改。請問Transaction綱目定義該做怎樣的修改?Ans:CREATETABLETransaction(…FOREIGNKEY(transMid)REFERENCESMember(mId)ONDELETECASCADE

ONUPDATE

CASCADE)

;13Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(DROPTABLE)DROPTABLE是用來刪除資料表定義一資料表被刪除時,另一資料表中參考到該資料表的部分就變的沒有意義了。所以SQL語法裡容許你在刪除資料表定義時設定該如何處理這種狀況DROPTABLEProductRESTRICT資料表Product的定義只有在其未被參考到時才能被刪除DROPTABLEProductCASCADE資料表Product的定義被刪除時,所有參考到這些定義的部分(如外部鍵定義)也一併被刪除14Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-3參考線上購物系統資料庫綱目,請問以下SQL指令的執行結果會對資料庫綱目造成何種影響?DROPTABLETransactionCASCADE;DROPTABLECartRESTRICT;Ans:資料表Transaction定義被刪除時,其他資料表定義裡參考到資料表Transaction的部分(包括Cart的tNo外部鍵定義和Record的tNo外部鍵定義)也一併被刪除。當其他資料表定義裡都沒有參考到Cart時,才可刪除Cart資料表定義。以圖6-1的資料庫綱目來說,這個刪除不會成功,因為資料表Order有一個外部鍵(mId,cartTime)是參考到Cart。15Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(ALTERTABLE)ALTERTABLE是用來修改資料表定義欄位定義的新增、刪除和修改的語法如下ALTERTABLEMemberADDdegreeVARCHAR(10);ALTERTABLEMemberDROPaddressCASCADE;ALTERTABLEOrderALTERamountDROPDEFAULT;ALTERTABLEOrderALTERamountSETDEFAULT100;16Copyright黃三益2003資料庫核心理論與實務黃三益2007SQL的資料定義語言

(ALTERTABLE)完整限制的修改包括完整限制的刪除和新增為了能正確刪除完整限制,首先要給完整限制一個名稱ALTERTABLEProductDROPCONSTRAINTUnitPrice_Check;CREATETABLEBrowse(…CONSTRAINTmIdFK

FOREIGNKEY(mId)REFERENCESMember(mId)ONDELETE

SETDEFAULT

ONUPDATE

CASCADE,…)ALTERTABLEBrowseDROPCONSTRAINTmIdFK;ALTERTABLEBrowseADDCONSTRAINTNewMIdFk

FOREIGNKEY(mId)REFERENCESMember(mId)

ONDELETECASCADEONUPDATECASCADE;若是忘了先給完整限制一個名稱,則需找出系統所給定的該完整限制編號(e.g.,透過SHOWCREATETABLE指令),再據以修改17Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-5參考線上購物系統資料庫綱目,請將資料表Order的完整限制加上名稱AnsCREATETABLEOrder(pNoCHAR(10)NOTNULL,mIdCHAR(10)NOTNULL,cartTimeTIMESTAMP

NOTNULL,amountINT

DEFAULT0,PRIMARYKEY(pNo,mId,cartTime),CONSTRAINTpNoFk

FOREIGNKEY(pNo)REFERENCESProduct(pNo),CONSTRAINTmIdFk

FOREIGNKEY(mId,cartTime)REFERENCESCart(mId,cartTime));18Copyright黃三益2003資料庫核心理論與實務黃三益2007商用DBMS的SQL資料定義語言外部鍵設定時,有些DBMS不支援ONUPDATE或部分ONDELETE語法有些DBMS對於關鍵字(比如ORDER)拿來當資料表名稱或欄位名稱時須加上雙引號”(如Oracle和SQLServer),有些則需加上特殊引號`(比如MySQL)詳細差異請參考書本第四節第四小節19Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法SQL的查詢句基本格式如下: SELECT<屬性串列> FROM<資料表串列>WHERE<條件>Q1:找出所有定價超過500的商品之編號、名稱和定價關聯代數

pNo,pName,unitPrice(

unitPrice>500Product)關聯邏輯計算式{p.pNo,p.pName,p.unitPrice|Product(p),p.unitPrice>500}SQLSELECTpNo,pName,unitPriceFROMProductWHEREunitPrice>500;20Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(Cont.)列出「系統分析理論與實務」的作者姓名 Product(商品編號pNo,商品名稱pName,定價unitPrice,種類catalog) Author(商品編號pNo,創作者名稱name)SELECTnameFROMProduct,AuthorWHEREpName='系統分析理論與實務'ANDProduct.pNo=Author.pNo;系統分析理論與實務21Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(Cont.)列出所有購買過”系統分析理論與實務”的會員之會員編號和會員姓名Product(商品編號pNo,商品名稱pName,定價unitPrice,種類catalog)Record(交易編號tNo,商品編號pNo,交易數量amount,售價salePrice)Transaction(交易編號tNo,會員編號transMid,交易方式method,…..)Member(會員編號mId,

姓名name,會員IDpId,……)SELECTmId,nameFROMProduct,Record,Transaction,MemberWHEREpName='系統分析理論與實務'ANDProduct.pNo=Record.pNoANDRecord.tNo=Transaction.tNoANDtransMid=mId;系統分析理論與實務22Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-6請找出“陳水扁”所寫過的所有書之商品編號和書名Ans:SELECTProduct.pNo,pNameFROMProduct,AuthorWHEREname='陳水扁'ANDAuthor.pNo=Product.pNoANDcatalog='Book';23Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(別名)使用資料表名稱的縮寫較簡潔SELECTmId,nameFROMProductASP,RecordASR,TransactionAST,MemberWHEREpName='系統分析理論與實務'ANDP.pNo=R.pNoANDR.tNo=T.tNoANDtransMid=mId;同一資料表出現兩次,且角色不同Q4:對於會員編號為'b0905555'的會員,列出其姓名以及所(直接)介紹的會員之會員編號和姓名24Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(別名)(Cont.)I: Member(會員編號mId,會員姓名name,會員IDpId,……,介紹人introducer)M: Member(會員編號mId,會員姓名name,會員IDpId,……,介紹人introducer)其相對應的SQL查詢句如下:SELECTI.name,M.mId,M.nameFROMMEMBERASI,MEMBERASMWHEREI.mId='b0905555'ANDI.mId=M.introducer;b090555525Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(別名)AS除了可用在資料表的別名外,也可用來更改屬性名稱將Q4所傳回的屬性名稱分別改成introducer_name,member_id和member_nameSELECTI.nameASintroducer_name,M.mIdASmember_id,M.nameASmember_nameFROMMEMBERASI,MEMBERASMWHEREI.mId='b0905555'ANDI.mId=M.introducer;26Copyright黃三益2003資料庫核心理論與實務黃三益2007練習6-7請找出會員編號為'b0905555'的會員之介紹者,並列出該會員之姓名和其介紹者的會員編號和姓名Ans:SELECTM.name,I.mId,I.nameFROMMEMBER

AS

M,MEMBER

AS

IWHEREM.mId='b0905555'ANDM.introducer=I.mId;27Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法星號(*):取出資料表的所有屬性SELECT*FROMProduct;沒有WHERE子句:沒有條件設限SELECTmId,nameFROMMember;DISTINCT:重複的記錄只保留一筆SELECTDISTINCTnameFROMMember;欄位值的比較:<、>、<=、>=、!=或<>、ISNULL:是否空值BETWEEN:區間SELECT*FROMProductWHEREunitPriceBETWEEN100AND999;28Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(Cont.)LIKE比較子:比較文字欄位的部分字串值%表示任意字串_代表任意字元SELECT*FROMMemberWHEREaddressLIKE'%高雄市%';SELECT*FROMMemberWHEREpIdLIKE

'_2%';29Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(Cont.)Date和Time的型態值不易直接表達,所以一般是將之轉成字串,或將字串轉成日期時間型態,再做比較範例(Oracle)SELECTmId,name,birthdayFROMMemberWHEREbirthday>=to_date('19700101','yyyymmdd');或SELECTmId,name,birthdayFROMMemberWHERE

to_char(birthday,'yyyymmdd')>='19700101';30Copyright黃三益2003資料庫核心理論與實務黃三益2007基本的SQL查詢語法(Cont.)ORDERBY:設定查詢結果資料表裡記錄的排列次序DESC代表由大到小ASC代表由小到大(預設)SELECTmId,pId,nameFROMMemberORDERBYname;SELECTmId,pId,nameFROMMemberORDERBYnameDESC;在傳回欄位值前,也可用先做一些簡單的運算SELECTpNo,name,0.9*unitPriceFROMProduct;31Copyright黃三益2003資料庫核心理論與實務黃三益2007商用DBMS的SQL基本查詢語法有些DBMS沿襲SQL89舊制,別名之前不需加AS,如下:SELECT

I.name,M.mId,M.nameFROMMEMBERI,MEMBERMWHERE

I.mId='b0905555'AND

I.mId=M.introducer;有些DBMS對於日期時間欄位值的比較不需任何轉換函式。比如可用以下查詢句找出出生於1970年以後的會員資訊SELECTmId,name,birthdayFROMMemberWHEREbir

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论