數(shù)據(jù)庫原理及應用-(第12章-SQL語句)_第1頁
數(shù)據(jù)庫原理及應用-(第12章-SQL語句)_第2頁
數(shù)據(jù)庫原理及應用-(第12章-SQL語句)_第3頁
數(shù)據(jù)庫原理及應用-(第12章-SQL語句)_第4頁
數(shù)據(jù)庫原理及應用-(第12章-SQL語句)_第5頁
已閱讀5頁,還剩106頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

SQL語句計算中心王婧概述SQL:StructuredQueryLanguage

結構化查詢語言理論基礎:基于關系代數(shù)和關系演算概述優(yōu)勢在于:

語法簡潔,功能極為強大和全面,自推出以來,便被廣泛采用,歷經(jīng)多次改進、完善以及標準化工作,其地位更加穩(wěn)固,現(xiàn)已成為關系數(shù)據(jù)庫的標準語言。概述幾乎所有的關系數(shù)據(jù)庫管理系統(tǒng),都毫無例外的支持SQL語言,而且在不同的數(shù)據(jù)庫管理系統(tǒng)中,SQL語言的差別很小,所以,只要掌握了標準SQL語言,就可以應用到任何其他關系數(shù)據(jù)庫管理系統(tǒng)上。目錄12.1SQL概述12.2數(shù)據(jù)查詢12.3數(shù)據(jù)定義12.4數(shù)據(jù)操縱12.1SQL概述SQL語言誕生不過短短的二十幾年,為何能這么快的風靡世界,成為數(shù)據(jù)庫世界的第一語言呢??與它優(yōu)異特性是分不開的12.1.1SQL的歷史和未來展望SQL的前身是1972年提出的SQUARE語言1974年Boyce和Chamberlin首先提出了SQL結構化查詢語言1975年至1979年在IBM公司和關系數(shù)據(jù)庫系統(tǒng)SystemR上逐步實現(xiàn)12.1.1SQL的歷史和未來展望1986年10月ANSI(美國國家標準化委員會)公布了第一個SQL語言標準,這個標準被命名為SQL86標準。1987年ISO(國際標準化組織)采納了他作為國際標準。12.1.1SQL的歷史和未來展望此后,經(jīng)過不斷的完善和擴充,ISO于1989年推出了SQL89標準,這個標準增加了完整性標準。1992年,ISO又頒布了SQL2標準,亦稱為SQL92標準目前新的SQL標準SQL3已經(jīng)呼之欲出。12.1.1SQL的歷史和未來展望現(xiàn)狀:

SQL語言有著堅強的理論基礎,其形式簡潔,功能豐富等諸多優(yōu)點,從一開始就受到各大數(shù)據(jù)庫廠商的重視,許多數(shù)據(jù)庫采用SQL作為數(shù)據(jù)庫語言或者為自己的產(chǎn)品添加SQL接口。12.1.1SQL的歷史和未來展望未來展望:

SQL已經(jīng)成為關系數(shù)據(jù)庫標準語言,并且還在不斷改進和完善,不斷吸收新的數(shù)據(jù)庫概念,在數(shù)據(jù)庫語言中的地位可以說是如日中天。12.1.2SQL數(shù)據(jù)庫結構及其基本概念用戶1用戶2用戶3用戶4視圖2視圖1基本表4基本表3基本表2基本表1存儲文件3存儲文件2存儲文件1SQL用戶視圖基本表存儲文件外模式概念模式內(nèi)模式12.1.3SQL特點1、語法簡潔,使用方便

SQL語法十分簡潔,適用于不同層次的計算機用戶。總共只有九個簡單的動詞,卻包含了從數(shù)據(jù)定義、數(shù)據(jù)操作到訪問數(shù)據(jù)控制、數(shù)據(jù)查詢這四個對數(shù)據(jù)庫操作的主要功能。12.1.3SQL特點下表列出了這九個動詞和它們分別所屬功能功能動詞數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)操作UPDATE,DELETE,INSERT數(shù)據(jù)控制GRANT,REVOTE數(shù)據(jù)查詢SELECT其中,SELECT是SQL語言最強大的功能之一,只要巧妙組合,就可以完成所需查詢?nèi)蝿?2.1.3SQL特點2、非過程化查詢

所謂非過程化查詢,是指用戶在對數(shù)據(jù)庫進行查詢操作時,不必關心或指出程序如何去或怎么去完成查詢,而只需要告訴程序做什么就行了。

12.1.3SQL特點用戶不必關心許多與查詢具體實現(xiàn)過程中有關細節(jié),如訪問路徑、訪問方式等,而專注于關心自己所需要的查詢。12.1.3SQL特點網(wǎng)狀模型和層次模型的數(shù)據(jù)操作語言都是過程化的,其使用難度大,因而應用范圍受到限制。12.1.3SQL特點相反,作為關系數(shù)據(jù)庫標準語言的SQL語言,由于其高度的非過程化而極大地方便了用戶的使用,獲得了用戶的青睞。12.1.3SQL特點3、完備而強大的功能

多數(shù)非關系數(shù)據(jù)庫的數(shù)據(jù)庫語言都只能適應這種數(shù)據(jù)庫的一種模式,因而常常要為不同的模式設置不同的語言。

12.1.3SQL特點而關系數(shù)據(jù)庫語言SQL集數(shù)據(jù)定義語言(DDL),數(shù)據(jù)操作語言(DML)以及控制于一身,跨越了數(shù)據(jù)庫的三級模式,可以用它方便的進行數(shù)據(jù)模式的修改或其他數(shù)據(jù)操作。12.1.3SQL特點4、易移植性

SQL語言的適應性很好,它既是自含性語言,又可以作為嵌入式語言嵌入宿主語言中與宿主語言的語句進行交互。12.1.3SQL特點在關系數(shù)據(jù)庫管理系統(tǒng)中,SQL可以在交互環(huán)境下供終端用戶使用如:VisualFoxPro6.0就可以在命令窗口中直接鍵入Select-SQL命令進行查詢。12.1.3SQL特點在高級語言如:Fortran、Cobol、Pascal、C中,也可以嵌入SQL語言,與程序語句進行交互。12.1.3SQL特點值得注意的是,新一代的RAD工具(RapidApplicationDevelopment,快速應用程序開發(fā)工具),如Borland的Delphi、C++

builder、Microsoft的VisualBasic等都提供了對SQL語言完整而強大的支持。12.1.3SQL特點5、計算機實現(xiàn)的難度

關系數(shù)據(jù)庫以二維表來表達關系。SQL主要是對這些二維表進行操作。而二維表的許多操作如投影運算、連接等都與矩陣運算有關,因而其效率比起網(wǎng)狀和層次模型DML較低,不過隨著SQL對自身在計算機實現(xiàn)方面不斷改進和計算機硬件技術飛速發(fā)展,這種差別已經(jīng)越來越小。12.2數(shù)據(jù)查詢SELECT語句是SQL語言唯一的查詢語言,它是SQL語言的核心,擔當了SQL查詢的所有任務。掌握了SELECT查詢語句就等于掌握了SQL語言的精髓。12.2數(shù)據(jù)查詢格式如下:

SELECT[ALL|DISTINCT]A1,A2…AnFROMR1,R2,….Rm[WHEREF1][GROUPBYC1][HAVINGF2][ORDERBYC2][ASC|DESC]12.2數(shù)據(jù)查詢其中:

A1,A2,….An表示目標屬性列

R1,R2,….Rm表示基本表或視圖名

F1、F2為條件表達式(P200常用運算符)

C1、C2為列名(即分組字段名)

ALL表示選擇所有符合條件的記錄,而不管它們是否重復

DISTINCT則顯示只列出相同元組的第一個12.2數(shù)據(jù)查詢GroupBy:查詢結果是表按<分組字段名>

分組的記錄集。

Having:將指定表滿足<條件表達式>,并按

<分組字段名>結果組成的記錄集,它必須與GroupBy一同使用。12.2數(shù)據(jù)查詢OrderBy:查詢結果是否按某一字段值排序

Asc:查詢結果按某一字段值升序排列

Desc:查詢結果按某一字段值降序排列12.2數(shù)據(jù)查詢例:學生選課和成績數(shù)據(jù)管理(三個關系表)學號姓名性別年齡系別SnoSnameSsexSageSdepa學號課程編號成績SnoCnoGrade課程編號課程名稱任課教師CnoCnameTeacher學生情況表(Student)成績表(Sc)課程表(Course)12.2.1簡單查詢簡單查詢是基于單表的查詢格式:

Select[All|Distinct]<字段名1>|<函數(shù)>12.2.1簡單查詢例:從Student表中查詢學生的學號、姓名、年齡和性別的信息。12.2.1簡單查詢

答:

SELECT

Sno,Sname,Sage,SsexFROMSTUDENT12.2.1簡單查詢查詢結果:12.2.2條件查詢條件查詢是添加了條件子句,對記錄進行篩選格式:

Select[All|Distinct]<字段名1>|<函數(shù)>From<表或查詢>[Where<條件表達式>][OrderBy<排序選項>[Asc][Desc]12.2.2條件查詢例1:查詢所有男學生的學號、姓名、年齡以及系別。12.2.2條件查詢

答:

SELECTSNO,SNAME,SAGE,SDEPA

FROMSTUDENT

WHERESSEX=‘男’12.2.2條件查詢查詢結果:12.2.2條件查詢例2:查詢所有年齡小于19歲而性別為女的外語系的學生的學號和姓名

12.2.2條件查詢答:

SELECTSNO,SNAMEFROMSTUDENT

WHERESSEX=‘女’

ANDSAGE<19ANDSDEPA=‘外語系’12.2.2條件查詢查詢結果:12.2.2條件查詢例3:查詢所有性別為女或者年齡小于19歲的女學生的學號,姓名及系別屬性12.2.2條件查詢答:

SELECTSNO,SNAME,SDEPAFROMSTUDENT

WHERESSEX=‘女’

ORSAGE<1912.2.2條件查詢查詢結果:12.2.2條件查詢例4:查詢所有計算機系學生的所有屬性列12.2.2條件查詢答:

SELECT*FROMSTUDENT

WHERESDEPA=‘計算機系’12.2.2條件查詢查詢結果:12.2.2條件查詢例5:查詢男學生的學號、姓名和出生年,并且按照學號升序排列12.2.2條件查詢答:

SELECTSNO,SNAME,2000-SAGEFROMSTUDENTWHERESSEX=‘男’OrderBySNOAsc

12.2.2條件查詢查詢結果:多表查詢兩個乃至多個表中獲得所需的查詢信息,這就需要多表查詢多表查詢例:列出全部學生的名字和他們所選修科目的名稱和成績多表查詢答:

SELECTSTUDENT.SNAME,

COURSE.CNAME,SC.GRADEFROMSTUDENT,COURSE,SC

WHERESTUDENT.SNO=SC.SNOANDSC.CNO=COURSE.CNO多表查詢連接查詢和嵌套查詢都屬于多表查詢12.2.3連接查詢連接查詢基于多表的查詢查詢結果通過選擇<字段名>對字段進行選擇,依照Where子句的<條件表達式>對記錄進行篩選,而且可以通過Order子句對查詢進行重新排序12.2.3連接查詢格式:Select[all|Distinct]<字段名1>|<函數(shù)>From<表或查詢>[[Left][Right]Join<表或查詢>On<條件表達式>][Where<條件表達式>][OrderBy<排序選項>[Asc][Desc]]12.2.3連接查詢例1:查詢所有選修了課程編號為“20012”學生的學號、姓名和系別屬性12.2.3連接查詢答:SELECTSTUDENT.SNO,STUDENT.SNAME,STUDENT.SDEPAFROMSTUDENTJOINSCONSTUDENT.SNO=SC.SNOANDSC.CNO=“20012”

12.2.3連接查詢例2:查詢所有沒有選修課程編號為“20012”的學生的學號、姓名和系別屬性12.2.3連接查詢答:

SELECTSTUDENT.SNO,STUDENT.SNAME,STUDENT.SDEPADISTINCTFROMSTUDENTJOINSC

ONSC.SNO=STUDENT.SNOANDCNO<>’20012’12.2.4嵌套查詢嵌套查詢也是基于多表的查詢這類查詢結果基于一個表,通過選擇<字段名>

對字段進行選擇,但Where子句的<條件表達式>是另一個表或多個表的查詢結果,以此對記錄進行篩選,而且可以通過Order子句對查詢進行重新排序12.2.4嵌套查詢格式:

Select[All|Distinct]<字段名1>|<函數(shù)>From<表或查詢>[Where<條件表達式>[OrderBy<排序選項>[Asc][Desc]嵌套的特點是:Where子句的<條件表達式>中包含一個Select子句12.2.4嵌套查詢例1:查詢所有選修了課程編號為“20012”學生的學號、姓名和系別屬性(嵌套查詢)12.2.4嵌套查詢答:

SELECTSNO,SNAME,SDEPAFROMSTUDENTWHERESNOIN(SELECTSNOFROMSCWHERECNO=‘20012’)12.2.4嵌套查詢例2:查詢所有沒有選修課程編號為“20012”

的學生的學號、姓名和系別屬性(嵌套查詢)12.2.4嵌套查詢答:

SELECTSNO,SNAME,SDEPAFROMSTUDENTWHERESNOIN(SELECTSNOFROMSCWHERECNO<>’20012’)12.2.5分組計算查詢分組計算是基于單表、多表的查詢通過選擇<字段名>對字段進行選擇,還可以通過Group分組,利用計算函數(shù)獲取新的字段,依照Where子句的<條件表達式>可以對記錄進行篩選,而且可以通過Order子句對查詢進行重新排序12.2.5分組計算查詢格式:Select[All|Distinct]<字段名>|<函數(shù)>From<表或查詢>[Where<條件表達式>][GroupBy<分組字段名>[Having<條件表達式>]][OrderBy<排序選項>[Asc][Desc]]12.2.5分組計算查詢例1:求外語系女學生的總人數(shù)和平均成績12.2.5分組計算查詢答:

SELECTCOUNT(*),AVG(SAGE)

FROMSTUDENTWHERESDEPA=‘外語系’

ANDSSEX=‘女’12.2.5分組計算查詢查詢結果:12.2.5分組計算查詢例2:查詢每門課的編號及選修這門課的學生人數(shù)12.2.5分組計算查詢答:

SELECTCNO,COUNT(SNO)FROMSC

GROUPBYCNO12.2.5分組計算查詢查詢結果:12.2.5分組計算查詢例3:查詢平均成績超過70分的科目,并且將結果按課程號升序排列12.2.5分組計算查詢答:

SELECTCNO,AVG(GRADE)

FROMSC

GROUPBYCNO

HAVINGAVG(GRADE)>70

ORDERBYCNOASC12.2.5分組計算查詢查詢結果:12.2.6查詢結果處理使用Select語句進行查詢,將默認其查詢結果輸出狀態(tài),結果自動在顯示器上輸出若想使查詢結果多樣化,可在Select語句中加入Into子句,使查詢結果有所變化12.2.6查詢結果處理格式:Select[All|Distinct]<字段名>|<函數(shù)>From<表或查詢>[[Left][Right]Join<表或查詢>On<條件表達式>][Where<條件表達式>][GroupBy<分組字段名>[Having<條件表達式>]][OrderBy<排序選項>[Asc][Desc]][Into<目標>]

12.2.6查詢結果處理輸出目標輸出形式INTOARRER輸出到數(shù)組INTOCURSOR輸出到臨時表INTODBF輸出到表12.2.6查詢結果處理例:將查詢結果生成為一個文件12.2.6查詢結果處理操作步驟:

1)在命令窗口中,鍵入如下命令:

SELECTSNO,SNAME,SSEXFROMSTUDENTINTODBFNEWSTUDENT2)單擊“文件”菜單中的“打開”命令12.2.6查詢結果處理3)在彈出的對話框中的文件類型里選擇.DBF

文件類型,大家會發(fā)現(xiàn)多出了一個“NEWSTUDENT.DBF”文件,這是剛剛用

SQL查詢生成的文件,它是一個自由表。12.3數(shù)據(jù)定義

SQL語句除了能夠創(chuàng)建查詢外,還能夠進行表結構的定義,能夠完成對表結構的設計及維護。12.3.1表結構的定義格式:

CreateTable<表名>([<字段名1>]類型(長度)[,[<字段名2>]類型(長度)…])功能:

創(chuàng)建一個以<表名>為名,以指定的字段屬性定義的數(shù)據(jù)表12.3.1表結構的定義例:定義一個包括學號(Sno,)、姓名(Sname)、性別(Ssex)、年齡(Sage)和系別(Sdepa)

共五個屬性的學生(Student)表12.3.1表結構的定義答:

CREATETABLEStudent(SnoCHAR(8)NOTNULLUNIQUE,

SnameCHAR(8)NOTNULL,

SsexCHAR(2),SageINT,

SdepaCHAR(20))12.3.2表結構的修改“修改命令”格式:AlterTable<表名>Alter<字段名1>類型(長度)[Alter<字段名2>類型(長度)…]功能:修改以<表名>為名的表的部分字段的屬性12.3.2表結構的修改例:修改Student表中字段的屬性答:

AlterTABLEStudentAlterSageSMALLINT12.3.2表結構的修改“刪除命令”格式:

AlterTable<表名>Drop<字段名1>[Drop<字段名2>…]功能:刪除以<表名>為名的表的部分字段12.3.2表結構的修改例:在Student表中刪除性別(Ssex)屬性答:

ALTERTABLEStudentDROP

Ssex12.3.2表結構的修改“增加字段命令”格式:AlterTable<表名>Add<字段名1>類型(長度)[Add<字段名2>類型(長度)…]功能:給以<表名>為名的表增加部分字段12.3.2表結構的修改例:在Student表中增加籍貫(Shome)屬性答:

ALTERTABLEStudent

ADD

SsexCHAR(2)12.4數(shù)據(jù)操縱SQL語句除了可以進行數(shù)據(jù)查詢、數(shù)據(jù)定義之外,還可以完成有關表記錄的插入、更新、刪除等相關操作包括三種操作:數(shù)據(jù)插入、修改、刪除分別使用命令:INSERT、UPDATE、DELETE12.4.1插入數(shù)據(jù)格式:InsertInto<表名>(<字段名1>[,<字段名2>…])Values(<表達式1>[,<表達式2>…])功能:在表中追加一個新的記錄12.4.1插入數(shù)據(jù)例1:在STUDENT表中增加一個學生(99215001,顧荃,1

溫馨提示

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

評論

0/150

提交評論