美到窒息的古風句子:婚姻是難度最高的愛情課件_第1頁
美到窒息的古風句子:婚姻是難度最高的愛情課件_第2頁
美到窒息的古風句子:婚姻是難度最高的愛情課件_第3頁
美到窒息的古風句子:婚姻是難度最高的愛情課件_第4頁
美到窒息的古風句子:婚姻是難度最高的愛情課件_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章SQLSQL概述SQL數(shù)據(jù)定義功能SQL數(shù)據(jù)查詢功能SQL數(shù)據(jù)修改功能SQL數(shù)據(jù)控制功能嵌入式SQLSQL概述(Ⅰ)歷史1974年,由Boyce和Chamber提出。1975-1979年,在SystemR上實現(xiàn),由IBM的SanJose研究室研制,稱為Sequel,現(xiàn)在稱為SQL(StructuredQueryLanguage)。標準化有關組織ANSI(AmericanNaturalStandardInstitute)ISO(InternationalOrganizationforStandardization)有關標準SQL-86:“數(shù)據(jù)庫語言SQL”SQL概述(Ⅱ)SQL-89:“具有完整性增強的數(shù)據(jù)庫語言SQL”,增加了對完整性約束的支持。SQL-92:“數(shù)據(jù)庫語言SQL”,是SQL-89的超集,增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強的完整性、安全性支持等。即SQL2.SQL-3:正在討論中的新的標準,將增加對面向對象模型的支持。SQL語言的應用情況:Oracle、Sybase、Informix、Ingres、DB2、SQLServer、Rdb等大型數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)了SQL語言;Dbase、Foxpro、Acess等PC機數(shù)據(jù)庫管理系統(tǒng)部分實現(xiàn)了SQL語言;SQL概述(Ⅲ)高度非過程化用戶只需提出“做什么”,無須告訴“怎么做”,不必了解存取路徑。兩種使用方式,統(tǒng)一的語法結構SQL既是自含式語言(用戶使用),又是嵌入式語言(程序員使用)。語言簡潔,易學易用SQL語言的基本概念SQL語言支持關系數(shù)據(jù)庫的三級模式結構.SQL視圖1視圖2存儲文件2存儲文件1基本表4基本表3基本表2基本表1外模式模式內模式基本概念基本表:本身獨立存在的表,SQL中一個關系就對應一個表,一個(或多個)基本表對應一個存儲文件.存儲文件:文件的實際存放情況,對用戶是透明的.視圖:由一個或幾個基本表導出的表,是虛表.示例關系DEPT(DNO,DNAME,DEAN)S(Sno,SNAME,SEX,AGE,D#)COURSE(Cno,CN,PCno,CREDIT)SC(Sno,Cno,SCORE)PROF(Pno,PNAME,AGE,D#,SAL)Teach(Pno,Cno)域數(shù)據(jù)類型char(n):長度為n的定長字符串。varchar(n):最大長度為n的可變長字符串。int,smallint:整數(shù)類型。numeric(p,s):p(精度),小數(shù)點左邊和右邊可以存儲的十進制數(shù)字的最大個數(shù),s(小數(shù)位數(shù)),小數(shù)點右邊可以存儲的十進制數(shù)字的最大個數(shù);同decimal(p,s)。float:用于表示浮點數(shù)字數(shù)據(jù)的近似數(shù)字數(shù)據(jù)類型。datetime:代表日期和一天內的時間的日期和時間數(shù)據(jù)類型。其他:money,bit,基本表的定義(Ⅱ)示例

createtablePROF (PNOchar(10), PNAMEchar(20)notnull, SAL int, AGEint, DNOchar(10),

primarykey(PNO),

foreignkey(DNO)referencesDEPT(DNO),

check(SAL>0))基本表的定義(Ⅳ)撤消基本表定義(drop)格式 droptable表名示例

droptable

DEPTDANGER

撤消基本表后,基本表的定義、表中數(shù)據(jù)、索引、以及由此表導出的視圖的定義都被刪除。WHAT’STHEMEANOF

CASCADE?數(shù)據(jù)庫的建立與撤消

有的數(shù)據(jù)庫系統(tǒng)支持多庫。建立一個新數(shù)據(jù)庫createdatabase數(shù)據(jù)庫名撤消一個數(shù)據(jù)庫dropdatabase數(shù)據(jù)庫名指定當前數(shù)據(jù)庫use數(shù)據(jù)庫名SQL數(shù)據(jù)定義特點SQL中,任何時候都可以執(zhí)行一個數(shù)據(jù)定義語句,隨時修改數(shù)據(jù)庫結構。而在非關系型的數(shù)據(jù)庫系統(tǒng)中,必須在數(shù)據(jù)庫的裝入和使用前全部完成數(shù)據(jù)庫的定義。若要修改已投入運行的數(shù)據(jù)庫,則需停下一切數(shù)據(jù)庫活動,把數(shù)據(jù)庫卸出,修改數(shù)據(jù)庫定義并重新編譯,再按修改過的數(shù)據(jù)庫結構重新裝入數(shù)據(jù)。數(shù)據(jù)庫定義不斷增長(不必一開始就定義完整)。數(shù)據(jù)庫定義隨時修改(不必一開始就完全合理)??蛇M行增加索引、撤消索引的實驗,檢驗其對效率的影響。SQL數(shù)據(jù)查詢功能SQL數(shù)據(jù)查詢基本結構單表查詢連接查詢嵌套查詢集合查詢SELECT語句的一般格式SQL數(shù)據(jù)查詢基本結構基本結構

select <目標表達式>[,<目標表達式>]

from <表名或者視圖名>[,<表名或者視圖名>]

where<條件表達式>含義: 根據(jù)where子句的條件表達式,從from子句指定的表或視圖找出滿足條件的元組,再按SELECT子句中的目標列表達式,選出元組中的屬性值形成結果表。單表查詢-選擇表中的若干列

查詢指定列通過指定SELECT子句的<目標表達式>來完成例1查詢全體學生的學號和姓名。

SELECTSno,SnameFROMStudent例2查詢全體學生的姓名、學號、年齡。

SELECTSname,Sno,SageFROMStudent

單表查詢-選擇表中的若干列查詢全部列“*”:表示“所有的屬性”。例3給出所有學生的信息。

select*等價于selectSno,Sname,Ssex,Sage,Sdept

from StudentfromStudent查詢經(jīng)過計算的值select子句的<目標表達式>可以是表達式例4給出所有學生的姓名及其出生年份。

selectSNAME,2005-Sage

from Student單表查詢-選擇表中的若干元組消除取值重復的行例6查詢選修了課程的學生學號

select

SnoselectDISTINCTSno

from SCfromSC如果沒有指定distinct,則缺省為ALL,即保留重復行查詢滿足條件的元組查詢滿足指定條件的元組可以通過WHERE子句來實現(xiàn)。WHERE子句常用的查詢條件如下表所示:取消重復行單表查詢-選擇表中的若干元組查詢滿足條件的元組單表查詢-選擇表中的若干元組(2)確定范圍例10查詢年齡在20~23歲之間的學生姓名、系別、年齡selectSname,Sdept,SagefromStudentwhereSageBETWEEN20AND23例11查詢年齡不在20~23歲之間的學生姓名、系別、年齡selectSname,SagefromStudentwhereSageNOTBETWEEN20AND23單表查詢-選擇表中的若干元組(3)確定集合謂詞IN可以用來查找屬性值屬于指定集合的元組例12查詢信息系(IS)、數(shù)學系(MA)和計算機系(CS)學生的姓名和性別selectSname,SsexfromStudentwhereSdeptin(‘IS’,’MA’,’CS’)例13查詢既不是信息系、數(shù)學系,也不是計算機系的學生姓名和性別:selectSname,SagefromStudentwhereSdeptNOTIN(‘IS’,’MA’,’CS’)單表查詢-選擇表中的若干元組(3)字符匹配謂詞LIKE可以用來進行字符串的匹配。其一般語法格式:[NOT]LIKE‘<匹配串>’[ESCAPE‘<換碼字符>’]含義:查找指定的屬性列值與<匹配串>相匹配的元組例14查詢姓名為李勇的學生的詳細情況select*select*fromstudentfromstudentwheresnamelike‘李勇’wheresname=‘李勇’匹配串可以是一個完整的字符串,也可以含有通配符%和_。其中:例16查詢姓“歐陽”且全名為三個漢字的學生的姓名selectSnamefromStudentwhereSnamelike‘歐陽_’

如果用戶要查詢的字符串本身就含有%或_,這時就要使用ESCAPE’<轉義字符>’斷語對通配符進行轉義例17查詢DB_design的課程的課程號和學分selectCno,CcreditfromCoursewhereCnamelike‘db\_design’escape‘\’單表查詢-選擇表中的若干元組單表查詢-選擇表中的若干元組例18查詢以“DB_”開頭,且倒數(shù)第三個字符為i的課程的詳細情況select*fromCoursewhereCnamelike‘DB\_%i__’ESCAPE‘\’(5)涉及空值的查詢例19某些學生選修課程后沒有參加考試,所以有選課記錄,但沒有考試成績。查詢缺少成績的學生的學號和相應的課程號selectSno,CnofromSCwhereScoreISNULL例20查詢所有有成績的學生學號和課程號selectSno,CnofromSCwhereScoreISNOTNULL單表查詢-選擇表中的若干元組(6)多重條件查詢例21查詢計算機系年齡在20歲以下的學生姓名selectSnamefromstudentwhereSdept=‘cs’andSage<20例22查詢信息系(IS)、數(shù)學系(MA)和計算機系(CS)學生的姓名和性別selectSname,SsexfromStudentwhereSdept=‘IS’ORSdept=‘MA’ORSdept=‘CS’用ORDERBY子句對查詢結果按照一個或多個屬性列的升序()ASC)或降序(DESC)例24查詢選修了C03號課程的學生的學號及其成績,查詢結果按分數(shù)的降序排列

selectSno,ScorefromSCwherecno=‘c03’orderbyscoredesc排序的時候對空值的處理若按升序排,空值的元組最后顯示;若按降序排,空值的元組最先顯示單表查詢-對查詢結果排序單表查詢-對查詢結果排序例25查詢全體學生情況,查詢結果按所在系的系號排列,同一系中的學生按年齡降序排列。SELECT*FROMSTUDENTORDERBYSdept,SagedescSQL中常用的集函數(shù):

COUNT([DISTINCT|ALL]*)統(tǒng)計元組個數(shù)

COUNT([DISTINCT|ALL]<列名>)統(tǒng)計一列中值的個數(shù)

SUM([DISTINCT|ALL]<列名>)計算一列值的總和

AVG([DISTINCT|ALL]<列名>)計算一列值的平均值

MAX([DISTINCT|ALL]<列名>)求一列值的最大值

MIN([DISTINCT|ALL]<列名>)求一列值的最小值注意:指定DISTINCT,表示取消指定列的重復值;不指定或者指定ALL,表示不取消重復值例26查詢學生人數(shù)

SELECTCOUNT(*)FROMSTUDENT單表查詢-使用集函數(shù)例27查詢選修了課程的學生人數(shù)SELECTCOUNT(DISTINCTSNO)FROMSC例28計算C01號課程的學生平均成績SELECTAVG(SCORE)FROMSCWHERECNO=‘C01’例29查詢選修了C01課程的學生最高分數(shù)SELECTMAX(SCORE)FROMSCWHERECNO=‘C01’單表查詢-使用集函數(shù)關于集函數(shù)的思考思考:查詢有選修C01或者C02課程的學生人數(shù)

查詢既選修了C01又選修了C02課程的學生人數(shù)selectcount(distinctsno)fromscwherecno='c01'orcno='c02'selectcount(sno)fromscwherecno='c01'andsnoin(selectsnofromscwherecno='c02')關于集函數(shù)的思考思考:查詢至少選修了兩門課的學生學號

selectsnofromscgroupbysnohavingcount(cno)>=2思考:統(tǒng)計每個系的人數(shù),要求結果按人數(shù)的升序排序單表查詢-對查詢結果分組使用GROUPBY子句將查詢結果按

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論