




已閱讀5頁,還剩21頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
數據庫原理及應用學位輔導以下幾大部分:第一部分:數據庫基本概念第二部分:關系代數第三部分:關系規范化第四部分:數據庫安全性控制第五部分:數據庫設計第六部分:SQL語句(重點)第七部分:sql server 2000第一部分:數據庫基本概念一、數據庫技術的發展階段1.手工管理階段人工管理數據不獨立,不共享,冗余度大。2.文件系統階段數據保存在文件中,訪問時通過操作系統來訪問數據文件。3.數據庫系統階段數據有了獨立性,數據共享,減少了數據冗余。數據庫管理系統(DBMS)用來管理和維護數據庫的系統軟件。數據庫管理系統的控制功能分為哪四種:1) 數據安全性控制2) 數據完整性控制3) 并發控制4) 數據恢復特點:1) 數據結構化的2) 數據獨立性高,共享性好3) 數據冗余度小。獨立性:數據獨立性分為兩種:數據物理獨立性和數據邏輯獨立性。物理獨立性:存儲結構發生變化,全局邏輯結構不變,從而應用程序不變。邏輯獨立性:全局邏輯結構發生變化,局部邏輯結構不變,從而應用程序不變。4) 有統一的控制功能二、數據庫系統的組成1.數據庫是存儲在計算機內、有組織的,可共享的數據集合。具有集成性、共享性等特點。2.軟件系統包括數據庫管理系統(DBMS)、操作系統等軟件。3.硬件系統4.用戶用戶分為終端用戶、應用程序員、系統分析員和數據庫管理員(DBA)三、數據庫系統的體系結構一般是指內部體系結構,三級模式和二級映象1三級模式1)內模式存儲模式,只有一個,叫物理級數據庫。2)模式概念模式,只有一個,叫概念級數據庫,它是數據庫全體數據的邏輯描述。全局邏輯結構。3)外模式用戶模式,視圖,局部邏輯結構,外模式有多個。叫用戶級數據庫內模式一個,模式一個,外模式多個。內模式與模式是對應。2二級映象1)模式/內模式一個,保證數據的物理獨立性。2)模式/外模式多個,保證數據的邏輯獨立性四、數據庫管理系統(DBMS)是一個系統軟件,用來管理數據庫的軟件,它是數據庫系統的核心部分。它包括以下功能:1 數據定義DDL定義模式,外模式,內模式。2)數據操縱功能DML查詢、添加、修改和刪除記錄。3)數據控制功能DCL4)數據庫運行和維護5)數據庫建立和維護6)數據通信接口五、數據模型1現實世界、信息世界和計算機世界1)實體2)屬性3)實體型4)實體集5)鍵屬性或屬性組6)域7)聯系*一對一,一對多,多對多2.計算機世界1)字段2)記錄3)關鍵字4)域3.數據模型三要素數據結構(靜態特性)、數據操作(動態特性)、完整性約束邏輯數據模型:4數據模型的分類這里數據模型的分類指的是邏輯模型。分為三類:1)層次模型使用樹結構描述實體以及實體之間的聯系,有且只有一個結點沒有父結點,叫根結點,其他結點有且只有一個父結點。典型代表是IBM的IMS系統。2)網狀模型使用有向圖結構描述實體以及實體之間的聯系。特點有一個以上的結沒有雙親,允許有兩個個以上的雙親結點。典型代表是DBTG系統。3)關系模型使用二維表結構描述實體以及實體之間的聯系。注意以上三種模型層次模型只能描述一對一,一對多的聯系,網狀模型可以描述一對一,一對多和多對多,關系模型只能描述一對一,一對多。/關系模型的代表:sql server 2000,oracle,db2,sysbase面向對象的數據模型。第二部分:關系代數一、廣義笛卡爾積是指一個關系與另一個關系沒有按條件進行相應的連接,且不去掉重復列和重復元組。即關系R(5個元組)和關系S有(6個元組)則關系R與關系S的笛卡爾積是30個元組。元組數是:r*s屬性個數:u1+u2二、關系的性質1.關系中的每個屬性都是不可分割的數據項,即原子項。2.關系中的每列不能重名,必須具有相同的數據類型。3.關系中不允許出現完全相同的元組4.關系中的行與列的順序可以任意的。三、關系的鍵與關系的完整性1.候選鍵一個屬性或屬性組能保證元組的惟一性,具有惟一性和最小性的特點。學號+姓名能否保證學生的惟一。但去掉姓名仍然惟一,2.關系鍵也叫關鍵字,主碼,主鍵,一個關系只有一個主鍵,從候選鍵中選擇一個作為添加、修改、刪除的變量。如果姓名不重復,則學生表中的候選鍵學號和姓名。則選擇學號作為學生關系的主碼。主屬性和非主屬性以及全碼)主屬性包含在主關系鍵中的屬性叫主屬性2)非主屬性:是指不包括在候選鍵中。3)全碼授課(學號,教師號)4關系的外鍵在關系R中是主鍵,而在關系S中不是主鍵,在S中叫外鍵。1) 外鍵是用來聯系兩個關系的。2) 主鍵的R是主表,S是子表或從表。3) S中外鍵列的值必須取自R中主鍵值。四、關系的完整性完整性就是保存數據的正確性、一致性和相容性,保證正確的數據存放到數據庫中。分為三種:1實體完整性是指主關系鍵的值不能為空和重復。主關系鍵來保證。2.參照完整性先建立和輸入主表,再建立和輸入從表。3.用戶自定義完整性對具體關系中的某列必須滿足的約束條件。性別,年齡,月份。五、關系代數關系模型是由二維表構成的,一個二維表都是一個關系。對關系的操作,操作的對象和結果都是關系。1關系運算的分類1)傳統的集合運算并集、交集、差集、廣義笛卡爾積2)專門的關系運算選取、投影、連接和除2運算符3傳統的集合運算如果兩個關系R和S要進行傳統的集合運算,要求兩個關系的結構必須是相容的。1)并運算關系R與關系S的的元組合并,組成一個新的關系,去掉重復元組。并運算的結構與原結構相同。2)交運算關系R與關系S的交,是指由屬于R也屬于S的元組構成。3)差運算關系R與關系S的差,是指屬于R而不屬于S的關系構成。R-S與S-R是不同的。R交S=R-(R-S)4)廣義笛卡爾積并集、交集、差集要求關系R與關系S必須是相容的,而笛卡爾積不考慮是否相容的。4.專門的關系運算分為選取、投影、連接和自然連接、除選取和投影是單目運算,連接和除是雙目運算。1)選取是根據一定的條件在給定的關系R中選擇若干個元組,組成一個新的關系。這種運算是對行的運算。F(R)如查詢學生中性別為男的元組。性別=男(學生)2)投影關系R的投影是從R中選擇若干列組成一個新的關系。列名或列號(R)如從學生關系中查找學號,姓名和性別。學號,姓名,性別(R)1,2,3(R)選擇和投影組合使用時,必須先選取再投影。查詢學生中性別為男的學號,姓名。學號,姓名 (性別=男(學生)3)連接分為:大于連接小于連接等值連接以上三種,都不去掉重復屬性。且大于連接和小于連接在實際中沒有意義。連接是一個雙目運算。格式為:RS FF表示連接條件關系R與S的連接,就是從關系R與關系S的廣義笛卡爾積中選擇滿足條件的元組。4)自然連接是最常用的一種連接,要求兩個關系具有公共屬性,它是一種去掉重復屬性值的等值連接。自然連接就是先進行笛卡爾積,再選擇,再投影。5)除二目運算,選擇,投影。R(A,b,c,d)S(C,D)M元-n元:RS=(A,B)考慮元組。必須都滿足的。RABCDA1B2C3D5A1B2C4D6A2B4C1D3A3B5C2D8SCDC3D5C4D6ABA1B2第二部分重點掌握關系的性質以各種鍵的概念、完整性和傳統的集合以及專門的關系運算,必須會寫關系代數表達式。第三部分:關系數據庫理論關系的規范化問題一、規范化存在的問題1不合理的關系存在的問題1)數據冗余2)插入異常3)更新異常4)刪除異常學生(學號,姓名,性別,系號,系名,課號,課名,成績)2合理的關系必須滿足的條件1)較小的數據冗余2)沒有插入異常3)沒有刪除異常4)沒有更新異常第3范式就滿足的。3)關系規范化的目的就是將一個不合理的關系經過分解使其達到一個較少的數據冗余和消除了各種異常的合理的關系模式。二、函數依賴一個關系中各屬性之間是相互聯系、相互制約的。屬性之間的關系用數據依賴來表示。數據依賴分為函數依賴,多值依賴和連接依賴。函數依賴是指1-3和bc范式。多值依賴是指4NF連接依賴是指5NF。1函數依賴的定義X-Y一般在討論函數依賴時,要先找出關系的主關系鍵。學生關系的主鍵:學號+課號(學號,課號)-成績學號-姓名,學號-性別,學號-系號,系號-系名,課號-課程名學號-課號2.函數依賴的說明1)平凡函數依賴和非平凡函數依賴如果x-y,Y是x的子集,則稱為平凡。如果x-y,y不是x的子集,則稱為非平凡依賴。2)函數依賴是一個關系R一直保持的一種依賴關系,不是某一個條件下才保證的。3)對于屬性之間的1:1,1:n和m:n的函數依賴如果為1:1,則x-y,y-x如果為1:n,則y-x,不是x-y如果為m:n,則x和y之間不存在函數依賴。4)函數依賴是在一定的語義范疇5)與時間無關三、函數依賴的邏輯蘊涵是從基本的函數依賴中導出的函數依賴。x-y,y-zx-z閉包:設F是函數依賴集,被F邏輯蘊涵的函數依賴的全體構成的集合,稱為函數依賴集的閉包。(學號,課號)-成績學號-姓名,學號-性別,學號-系號,系號-系名,課號-課程名F學號-系名四、完全函數依賴、部分函數依賴、傳遞函數依賴1.完全函數依賴:只有當決定因素是多個屬性的組合時,才討論是完全,否則一定是完全函數依賴。學號-姓名(學號,課號)-成績如果R中存在x-y,對于任何一個X的子集,都不決定y,則稱為y完全函數依賴于x。2.部分函數依賴是指當決定因素也是屬性組時,才討論。(學號,課號)-姓名如果R中存在x-y,對于給定一個x的子集,也能決定y,則稱則Y部分依賴于x。學號-姓名3.傳遞函數依賴如果關系R中,有函數依賴,x-y,y-z,則必有x-z,對于給定一個關系判斷是否有完全、部分、傳遞,必須先找出主關系鍵。五、范式范式:是指一個關系要達到的標準規范。根據一個關系滿足的標準把關系分為1NF,2NF,3NF,BCNF,4NF,5NF高一級范式必須先是低一級范式。11NF是指如果關系R中的所有屬性都是不可分割的數據項,則稱為R滿足第1NF。即第一范式要求關系的屬性必須是原子項。存在冗余和異常。2.2NF如果一個關系R是第一范式,如果非主屬性對主關鍵字不存在部分函數依賴,則關系R滿足第2范式。第2范式:就是消除部分函數依賴主鍵:學號和課號分解原則:“一事一地”的原則,即一個關系只表示一個實體或實體之間的聯系。學生(學號,姓名,性別,系號,系名)課程(課號,課程名)選課(學號,課號,成績)33NF關系R是第2范式,如果所有非主屬性對主關系鍵不存在傳遞函數依賴。則關系R滿足第3范式分解原則:“一事一地”學生(學號,姓名,性別,系號)系別(系號,系名)滿足第3范式的關系已經達到了合理關系的條件,即最小的數據冗余,消除了異常。4.BCNF如果一個關系R滿足第3NF,如果所有屬性對候選鍵都不存在部分和傳遞則,滿足BCNF.R(學號,姓名,課號,成績)條件是姓名不重復。候選鍵: 學號+課號,姓名+課號學號-姓名,姓名學號學生(學號,姓名)選課(學號,課號,成績)54NF4NF消除多值依賴6.5NF5NF消除連接依賴六、關系模式的分解分解的原則:一事一地。分解的條件:1) 分解必須保持函數依賴2) 分解要保證無損連接性3) 分解即要保持函數依賴,又要保證無損連接。第四部分 數據庫安全保護數據庫安全保護分為四種,數據庫安全性控制、數據完整性控制、并發控制和數據庫恢復一、 數據庫的安全性數據庫的安全性就是指防止非法用戶進入系統執行非法操作。1 一般控制方法1)用戶標識和鑒定2)用戶存取權限GRANT和revoke。系統權限,對象權限。數據庫對象:模式,非模式:模式對象:數據表、視圖、索引、存儲過程、觸發器等。非模式對象:表空間、數據文件、重做日志。表,表中的某列。3)視圖4)加密5)審計二、完整性控制是指保護數據庫中的數據正確性、有效性和相容性。工資只能是0-9構成。學號不允許重復和為空。班號只能取自班級表。數據的完整性控制包括三種:實體完整性、參照完整性、用戶自定義完整性1.完成性規則的組成由三部分構成:觸發條件,約束條件,違約響應。添加、修改檢查,刪除時,查詢不檢查。約束條件:規則,什么樣的滿足和不滿。違約響應:反應2.完整性約束條件的分類1.值約束和結構的約束值約束:如一個列定義為字符型、長度為6,數據類型、數據格式、取值范圍和空值。結構約束:實體完整性、參照完整性統計約束。2)靜態約束和動態約束靜態約束:值約束和結構約束都是靜態的。動態約束:從一種狀態轉換為另一種狀態應滿足的約束條件。三、并發控制與封鎖1并發控制是保證每個事務能夠得到正確的運行。一般都是指多個用戶操作時。2.事務是數據庫系統中執行的一個工作單元,是由用戶定義的一系列語句組成。三個命令:Begin transaction:開始事務Commit;提交事務Rollback:回滾事務。2 事務的性質ACID1)原子性一個事務是一個不可分的工作單位,事務在執行時,遵守“要么全做,要么不做”。2)一致性數據庫從一個狀態轉換為另一個狀態,必須滿足數據庫的完整性控制。3)隔離性事務與事務之間是獨立的,一事務的執行不影響另一個事務。4)持久性對數據庫的改變,成功提交后,改變是永久的。4.并發控制造成的不一致性1)丟失更新2)污讀3)不可重讀5.解決的方法1)封鎖封鎖分為共享鎖和排它鎖。死鎖和活鎖2)時標四、數據庫的恢復1定義當數據庫遭到破壞時,必須保證在較短的時間內將數據庫恢復到最近的正確狀態。2.原理和技術生成冗余數據,冗余重建1)登記日志文件數據文件.mdf,日志文件.ldf記錄著對數據庫的更新操作,不包括查詢。2)數據轉儲2.故障和恢復1)事務故障2)系統故障3)介質故障當數據庫恢復時,對尚未完成的事務執行rollback第五部分:數據庫設計一、 數據庫設計概述1.設計的任務數據庫設計就是在指定的具體環境下,根據用戶需求,構造最優的數據庫模式,并建立數據庫和應用系統,。2.數據庫設計的內容數據庫的結構設計,數據庫的行為設計前者靜態設計,后者是動態設計。二、數據庫設計的方法手工試湊法、直觀設計法、規范化設計法、計算機輔助設計法和自動化設計法,。規范化設計方法是最常用的一種數據庫設計方法。新奧爾良法。規范化設計方法有:1) 基于E-R模型的數據庫設計方法2) 基于3NF的數據庫設計方法3) 基于視圖的數據庫設計方法。三、數據庫設計的步驟數據庫設計按規范化設計方法分為六個步驟:需求分析階段概念結構設計階段邏輯結構設計階段物理設計階段數據庫實施階段數據庫運行和維護階段。四、需求分析階段數據庫設計的起點,最終影響到整數據庫的設計。1任務對現實世界進行詳細的調查研究,分析原系統,收集新資料,確定系統的邊界等。2.需求分析方法SA方法,自頂向下分析方法。有兩個圖:一個是數據流圖(DFD),數據字典(DD)數據流圖中使用命名的箭頭表示數據流,用圓表示處理,用矩形表示存儲。數據字典是對系統中數據進行詳細描述,由五個部分組成。數據項、數據結構、數據流、數據存儲、數據處理過程,。需求分析階段在調查研究的基礎上,撰寫需求分析說明書,在需求分析說明書中描述系統的功能及邊界,并繪制數據流圖和數據字典。五、概念結構設計在需求分析階段的基礎上,將需求分析得到的用戶需求抽象為信息結構,即概念模型。E-R模型:實體-聯系模型。1.E-R圖的組成主要由三個元素,實體、聯系和屬性。實體在E-R圖中使用矩形表示。聯系在E-R圖中使用菱形表示屬性在E-R圖中使用橢圓表示。且實體,聯系和屬性之間用線段連接。2.繪制E-R圖分兩步:1)繪制局部E-R圖如教學管理系統:系別:系號,系名,系主任班級:班號,班名,地址學生:學號,姓名,性別,年齡教師:職工號,姓名,性別,職稱,工資課程:課程號,課程名,學分語言義要求:一個系有多個班級,一個班有多名學生,一個學生只屬于一個班級,一個學生可以選多門課,選修時有成績,一門課由多個學生,一個教師講授多門課,一門課由多個教師講授。講授的課程有學期。試繪制E-R圖。屬性分為實體屬性和聯系屬性,實體的屬性在繪制E-R圖時直接放在某實體附近即可,如果是聯系的屬性必須放在聯系邊上,且與菱形連接。以上系統分為三個局部E-R圖。組織結構E-R,選課E-R圖,講授E-R圖。2)合并為全局E-R圖。E-R圖合并的沖突有:1)屬性沖突屬性值域沖突、屬性的取值單位沖突2)命名沖突同名異義,單位異名同義:房間。3)結構沖突同一實體在不同應用中有不同的抽象。同一實體不同應用時有不同的屬性六、邏輯結構設計一、任務在概念結構設計的基礎上,從E-R圖導出邏輯模型。步驟:1) 初始關系模式2) 規范化3) 評價與改進二、從E-R圖中導出關系模式的轉換原則1)每一個實體都轉換為一個關系模式。2)對于聯系的轉換原則:。如果是一對一的聯系,不生成第三方關系,只將任何一方的主鍵納入另一個作外鍵即可。如果是一對多的聯系,也不生成第三方,只把一方的關鍵字納入多方即可。如果是多對多的聯系,則生成第三方關系,第三方關系的屬性是雙方的主鍵和聯系的屬性。七、物理結構設計在邏輯模型的基礎上,選取一個最適合的應用環境創建物理結構。八、數據庫實施定義數據庫結構在指定的DBMS中。九、數據庫的運行和維護第六部分:SQLSQL語言是一種結構化查詢語言。不是標準查詢語言一、SQL的發展和特點1.發展1974年,SEQUEL,1976,1981,1982,SQL,SQL SERVER 2000,ORACLE。Sql86,sql89,sql92,sql32.特點1)簡單易學,符合英文語法2)集成性語言,四個功能。數據定義,數據查詢,數據操縱、數據控制。3)SQL即是自含式,又是宿主式。4)SQL是一種非過程化的語言二、SQL語言與三級模式的對應關系內模式對應于存儲文件,模式對應于基本表,外模式對應于視圖三、創建數據表1數據類型Int,decimal,char,nchar,varchar,nvarchar。Datetime,float。2.定義數據表的基本格式Create table 數據表名(列的定義,表約束)Create table bj(Bh char(4),Bm char(30)Xh char(2)列的定義:列名 數據類型(寬度,小數位) 列約束3.表的約束約束分為兩種,一種列約束,一種是表約束。列約束與列的定義在一起,用空格間隔,作為列定義的一部分。表約束,獨立于列的定義,與列的定義之間,間隔。表的約束一般應于涉及到多列使用。學號建立主鍵,學號和課號建立主鍵。1)空值約束默認為NULL,如果想不為空使用NOT NULL約束只能用于列約束,不能用于表約束。Create table 表名(學號 char(6) not null,姓名 char(8)2)主鍵約束不允許為空,重復值。格式:constraint 約束名 primary key(列名)如果作為列約束,列名可省,表約束列名不可省。Create table 學生(學號 char(6) primary key,姓名 char(8),Constraint aaa primary key(學號)Create table 選課(課號 char(2),學號 char(6),成績 int,Constraint bbb primary key(學號,課號)3)惟一約束Unique要求列值不重復,但允許為空。/可以是列約束,也可以是表約束Create table 學生(學號 char(6) primary key,姓名 char(8) unique,Constraint ccc unique(姓名)4)默認值約束列約束,關鍵字是default。Default 值Create table 學生(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) default 男)5)check約束用戶自定義完整性一般用來規定域的范圍,可以作列約束,也可以作表約束。Create table 學生(學號 char(6) primary key,姓名 char(8) not null unique,性別 char(2) default 男,年齡 int check(年齡 between 18 and 30)6)外鍵約束涉及到兩個數據表,先建立主表,再建立從表。且從表的列必須與主表的列類型一致,長度一致。Constraint 約束名 foreign key(從表列名) references 主表名(列名)如果為列約束,則constraint 約束名可省,從表列名可省。Create table 學生(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) check(性別=男 or 性別=女),班號 char(4) foreign key refernces 班級(班號)Create table 學生1(學號 char(6) primary key,姓名 char(8) not null,性別 char(2) check(性別=男 or 性別=女),班號 char(4) ,Constraint dddd foreign key(班號) refernces 班級(班號)4.修改數據表有三種方式Alter table 表名 方式1)add方式使用該方式可以增加列,也可以增加約束Alter table 學生 add 地址 char(50)Alter table 學生 add constraint eee check(年齡 between 20 and 60)2)alter方式用于修改列的寬度等。Alter table 表名 alter 列的定義Alter table 學生 alter 地址 char(40)不能更改列名3)drop 方式用來刪除列或約束Alter table 表名 drop column 列名Alter table 表名 drop constaint 約束名5.刪除數據表Drop table 表名三、索引的使用1.索引的作用加快查詢速度,保證行的惟一性2.索引的分類按照索引的存放位置,索引可分為聚集索引和非聚集索引,聚集索引只有一個,就是主鍵,非聚集索引可以有多個。如普通索引可惟一索引。如果一個數據表建立了主鍵約束就是建立了一個聚集索引,如果建立了惟一約束就是建立了一個非聚集索引。3.創建索引Create uniquecluster index 索引名 on 表名(列名 排序方式)Unique:表示創建一個惟一索引。Cluster:表示創始一個聚集索引,只有一個。如果沒有unique和cluster表示創建的就是非聚集的普通索引。在學生數據表中按性別創建惟一索引Create unique index xm on 學生(姓名 desc)索引不能修改,只能刪除再創建。在教師數據表,按性別建立索引,性別相同按工資降序索引。這種索引叫復合索引,涉及性別和工資。Create index xbgz on 教師(性別 ,工資 desc)4.刪除索引索引是屬于基本表,所以在刪除索引時必須指定表名.索引名。Drop index 表名.索引名四、數據查詢1.select命令格式Select distinct */列表列表 top n|top n percentFrom 表1 別名,表2 表名Where 查詢條件group by 分組字段 having 分組條件order by 排序字段此語句由五個子句構成分別是select子句,from子句,where子句,group by子句和order by子句。Select子句用來控制投影操作。可以表的基本列,也可以是計算列。from子句指定數據來源的數據表,可以來自一個數據表,也可以是多個數據表。Where子句,表示返回滿足一定條件的元組。這是對行的操作,也就是選取。Group by子句用來進行分組,當查詢是count,maX,min,sum,avg時一般都要分組。如果對分組后的結果集,再限制條件,必須使用having 分組條件。Order by 用來排序。2單表查詢1)不投影不選擇列使用*,沒有where條件。Select * from 學生2)投影Select 列名 from 表名Select 學號,姓名 from 學生3)去掉重復元組Select distinct 性別 from 學生4)帶條件的查詢涉及到運算符:算術運算符: = = != 查詢工資在3000元以上的教師姓名Select 姓名 from 教師 Where 工資3000特殊運算符:Between,表示范圍。如查詢工資2500元至4000元之間的。Select * from 教師Where 工資 between 2500 and 4000Like匹配通配符:_和%通配任何多個字符,_通配一個。找姓張的學生的學號和姓名。Select 學號,姓名 from 學生Where 姓名 like 張%In運算符表示一定范圍的In是否在一個集合中。Not in都是用來子查詢中。查詢選修了c1或c2課程的學生的學號Select 學號 From 選課Where 課號 in (c1,c2)5)投影有可能是計算列可以在select子句中放入表達式作為計算列,并同時可以給列起別名。學生數據表中有出生日期,求學號,姓名和年齡。Getdate()Select 學號,姓名,year(getdate()-year(出生日期) as 年齡From 學生6)空值測試Is null和is not null。空值表示不確定的值,不是空格,也不是0。查詢沒有參加考試的學生的學號和課號。Select 學號,課號From 選課Where 成績 is null7)統計函數Count(*/列名)統計記錄數Sum(列名)求和Avg(列名)求平均值Max(列名)求最大值Min(列名)求最小值求課號為c1的最高分,最低分,總和和平均分。Select max(成績) as 最高分,min(成績) as 最低分,sum(成績) as 總分,avg(成績) as 平均分 From 選課Where 課號=c1一般用到五個統計函數必須要分組,但要考慮是否是不同類型的數據。Count對空值不統計。統計c1號課號的人數Select count(*) as 人數From 選課Where 課號=c18)分組查詢按某列或某幾列在行的方向上進行分組,當在查詢的語義中規定對某列或幾列進行統計計算時一般暑阿進行分組,如求每個部門的人數,每門課程的選課人數,每個學生的選課門數等。求男女生人數。Select 性別,coun(*) as 人數From 學生Group by 性別求各門課程的選課人數。Select 課號,coun(*) 人數From 選課Group by 課號當對分組再進一步限制條件時,必須使用having 分組條件。注意以上的五個函數只能出現在select子句和having中。絕對不允許出現在where中。如查詢選課門數在5門以上的學生的學號和門數。Select 學號,count(*) as 門數From 選課Group by 學號 having count(*)=59)排序Order by 字段 asc/desc ,2連接查詢當查詢的數據來源于兩個或兩個以上的數據表時,數據表之間必須建立連接。連接可以放在from后,也可以放在where條件中與其他條件用and連接。第一種放在from后可以實現以下幾種連接Inner join:內聯接Left join:左連接Right join:右連接Full join :完全連接Cross join:交叉連接(笛卡爾積)一般用到的都是內聯接連接條件書寫格式為:From 表1 inner join 表2 on 表1.字段名=表2.字段名其中字段名是同名屬性。第二種主在where后From 表1,表2Where 表1.字段名=表2.字段名 and 其他條件如查詢計算機本科07班學生的學號,姓名和班名。從投影上看,從選擇上看,從查詢的語義上看。Select 學號,姓名,班名From 班級,學生Where 班級.班號=學生.班號 and 班名=計算機本科07Select 學號,姓名,班名From 班級 inner join 學生 on 班級.班號=學生.班號Where 班名=計算機本科07注意一點:當兩個名都有同名屬性時,則在屬性名前一定要加上表名:即表名.字段名4.子查詢和相關子查詢1)子查詢也叫嵌套子查詢,即在一個select語句的where條件中還有select語句。外層查詢與內層查詢沒有聯系,外層查詢的結果取決與內層查詢返回的值。執行過程是:先執行子查詢,再執行外層查詢。運算符主要有= = (select max(工資) from 教師,系別 where 教師.系號=系別.系號 and 系名=計算機系) In 等價于=anyall大于所有的。2)相關子查詢運行只有兩個,EXISTS和not exists不返回值,子查詢的投影也不是字段,只是一個*,表示子查詢中是否有行返回,有則真,否則為假。且外層與內層子查詢有聯系,且聯系語句放在子查詢中。如查詢選修課程的學生的學號和姓名。Select 學號,姓名 from 學生Where 學號 in (select 學號 from 選課)Select 學號,姓名 From 學生Where exists (select * from 選課 where 學生.學號=選課.學號)5.并集運算UnionSelect語句UnionSelect語句UnionSelect 語句四、數據操縱添加、修改、刪除1插入數據三種:1)插入全部數據Insert into 表名 values(表達式)表達式的個數必須與表中的列數相同,且一一對應,類型一致,2)插入部分數據Insert into 表名(列名) values(表達式)3)插入多行數據Inset into 表名Select語句2.修改記錄(更新)1)更新涉及一個表Update 表名 set 列名=表達式,Where 條件如果沒有條件,則更新所有記錄。2)更新涉及多個表在對數據進行更新時,要求只能更新一個數據表,如果涉及到多個表必須在where中使用子查詢。將少數民族的學生的各科成績加5分。Update 選課 set 成績=成績+5Where 學號 in (select 學號 from 學生 where 民族漢)3.刪除記錄1)刪除涉及一個數據表Delete from 表名 where 條件如果沒有條件,則刪除所有記錄。2)刪除涉及多個數據表必須用到子查詢。如將沒有選課學生的刪除。Delete from 學生 where 學號 not in(select 學號 from 選課)五、視圖1.視圖的概念視圖是數據庫的外模式,它是一個虛擬表,在數據庫中只存放視圖的定義,凡是對視圖的操作都反映到基本表中。它的數據來源都是基本表。2創建視圖Create view 視圖名(列名)As Select語句對于創建視圖的select語句不能使用order by 和distinct關鍵字視圖的數據可以來自多個數據表,列也可以是計算列。Create view v_1AsSelect 學生.學號,姓名,性別From 學生,選課Where 學生.學號=選課.學號Select * from v_12.修改Alter view 視圖名As 子查詢3.刪除視圖視圖是數據庫的對象,所有刪除視圖時與表無關。Drop view 視圖名4.查詢視圖凡是用到基本表的地方,都可以使用視圖Select * from v_15.更新視圖凡是對視圖的更新都將反映到基本表中,但涉及到計算列的或視圖的來源是多個數據表,則視圖是不可更新的。6.使用視圖的優點1)有利于數據保密2)簡化查詢操作3)保證數據的邏輯獨立性六、數據控制權限:就是在數據庫中設置的允許用戶對數據對象操作的權力。在SQL server中權限分為兩種:系統權限:是指用戶能夠對數據庫系統進行操作的權力,如創建數據表、創建視圖、修改數據表、創建索引等。對象權限:即用戶對數據庫對象的操作權力,如select,insert,update,delete數據。,角色:是權限的集合。1系統權限的授予與收回1)授予Grant 系統權限To 用戶名/pulbicWith admin option將系統權限授予指定用戶,并可以將得到的權限授予其他用戶。Grant create table,create viewTo user12)收回Revoke 系統權限From 用戶名/publicRevoke create tableFrom user12.對象權限的授予和收回Grant 對象權限(列名),On 對象名To 用戶名With grant optionGrant select,update,delete,insertOn 學生To user1Grant update(學號,姓名)On 學生To user22)收回Revoke 對象權限On 對象名From 用戶名第七部分 sql server 2000和程序設計一、系統數據庫有四個,master,model,msdb,tempdbMaster:系統中最重要的數據庫,存放著所有的系統信息。Model:是創建數據庫的模板。Msdb:用于備份,恢復等計劃控制的。,Tempdb:臨時數據庫。/二、實例數據庫Pubs和northwind三、數據文件和日志文件數據文件:用來保存數據庫的各種對象及數據的。可以有多個,但只有一個數據文件叫主數據文件,擴展名為.mdf,其他數據文件叫次數據文件,擴展名
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產企業動火管理制度
- 生產環境監測管理制度
- 生產現場模具管理制度
- 生產經營資源管理制度
- 生產設備異常管理制度
- 生產車間出勤管理制度
- b超設備管理制度
- pe投資管理制度
- 不收紅包管理制度
- 專家小院管理制度
- 復合性潰瘍的健康宣教
- 山東電動伸縮雨棚施工方案
- 新媒體營銷技術與應用PPT完整全套教學課件
- 第5章紅外教學課件
- 卡氏肺孢子蟲肺炎
- 大足縣某水庫除險加固工程施工組織設計
- 基于單片機數字電壓表電路設計外文文獻原稿和譯文
- JJG 1149-2022電動汽車非車載充電機(試行)
- 2023版浙江評審衛生高級專業技術資格醫學衛生刊物名錄
- GB/T 1689-1998硫化橡膠耐磨性能的測定(用阿克隆磨耗機)
- GB/T 16823.3-2010緊固件扭矩-夾緊力試驗
評論
0/150
提交評論