版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一章數(shù)據(jù)庫(kù)基礎(chǔ)1數(shù)據(jù)庫(kù)系統(tǒng):是由數(shù)據(jù)庫(kù)及其管理軟件組成的系統(tǒng),常常把數(shù)據(jù)庫(kù)有關(guān)的硬件和軟件系統(tǒng)成為數(shù)據(jù)庫(kù)系統(tǒng),DBMS的英文全稱DataBaseManagementSystem概念模型是指人對(duì)現(xiàn)實(shí)世界的認(rèn)識(shí),抽象成信息數(shù)據(jù)模型是指將現(xiàn)實(shí)世界轉(zhuǎn)換成計(jì)算機(jī)能認(rèn)識(shí)的信息SQL是英文全稱是StrueturedQueryLanguage數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)就是數(shù)據(jù)的倉(cāng)庫(kù),由表、關(guān)系以及操作對(duì)象組成數(shù)據(jù):是描述事物的符號(hào)記錄(數(shù)字、文字、圖形、圖像、聲音等)數(shù)據(jù)庫(kù)的作用存儲(chǔ)大量數(shù)據(jù),方便檢索和訪問保持?jǐn)?shù)據(jù)信息的一致、完整共享和安全通過組合分析,產(chǎn)生新的有用信息數(shù)據(jù)庫(kù)經(jīng)歷的三個(gè)階段及特點(diǎn)1) 人工管理階段:數(shù)據(jù)不保存;使用應(yīng)用程序管理數(shù)據(jù);數(shù)據(jù)不共享;數(shù)據(jù)不具有獨(dú)立性。2) 文件系統(tǒng)階段:數(shù)據(jù)可以長(zhǎng)期保存;由文件系統(tǒng)管理數(shù)據(jù);共享性差,數(shù)據(jù)冗余大;數(shù)據(jù)獨(dú)立性差。3) 數(shù)據(jù)庫(kù)系統(tǒng)階段:數(shù)據(jù)結(jié)構(gòu)化;數(shù)據(jù)共享性高;數(shù)據(jù)獨(dú)立性強(qiáng);數(shù)據(jù)粒度??;獨(dú)立的數(shù)據(jù)操作界面;統(tǒng)一管理和控制.?dāng)?shù)據(jù)模型的分類層次模型網(wǎng)絡(luò)模型關(guān)系模型用二維表結(jié)構(gòu)表達(dá)實(shí)體集的模型E-R圖三個(gè)主要部分1) 1.實(shí)體集:在E-R圖中用長(zhǎng)方形來表示實(shí)體集,實(shí)體是實(shí)體集的成員。2) 聯(lián)系:在E-R圖中用菱形來表示聯(lián)系,聯(lián)系與其涉及的實(shí)體集之間以直線連接,并在直線端部標(biāo)上聯(lián)系的種類,(1:1,1:N,M:N)。3) 屬性:在E-R圖中用橢圓形來表示實(shí)體集和聯(lián)系的屬性,對(duì)于主鍵碼的屬性,在屬性名下劃一橫線。繪制E-R圖所需的圖形1) 長(zhǎng)方形框 實(shí)體集(考慮問題的對(duì)象)2) 菱形框 聯(lián)系(實(shí)體集間聯(lián)系)3) 橢圓形框 實(shí)體集和聯(lián)系的屬性4) 直線 連接相關(guān)的聯(lián)系和實(shí)體,并可標(biāo)上聯(lián)系的種類E-R圖設(shè)計(jì)原則:真實(shí)性;避免冗余;簡(jiǎn)單性三大范式第一范式:在關(guān)系模型中的每一個(gè)具體關(guān)系R中,如果每個(gè)屬性都是不可再分的,則稱關(guān)系(R)屬于第一范式(1NF)屬于第一范式,且每一個(gè)非主屬性都完R第二范式:如果關(guān)系模式全依賴于主碼,則稱關(guān)系R是屬于第二范式的第三范式:如果關(guān)系模式R為2NF,并且R中的每個(gè)非主屬性不傳遞依賴于R的主碼,則稱關(guān)系R是屬于第三范式的若要求分解保持函數(shù)依賴,那么模式分解一定能夠達(dá)到BCNF第二章數(shù)據(jù)庫(kù)的安裝常見的數(shù)據(jù)庫(kù)類型:Access、SQLserver2000、2005、2008,Oracle數(shù)據(jù)庫(kù)等數(shù)據(jù)庫(kù)管理員的工作是:配置數(shù)據(jù)庫(kù)服務(wù)器環(huán)境;管理數(shù)據(jù)庫(kù)的邏輯對(duì)象結(jié)構(gòu);配置數(shù)據(jù)庫(kù)的對(duì)象權(quán)限;制定數(shù)據(jù)庫(kù)的性能優(yōu)化策略;數(shù)據(jù)庫(kù)的備份還原策略;數(shù)據(jù)庫(kù)的異構(gòu)協(xié)同結(jié)構(gòu)SQLServer2008的版本Express適用于無連接的客戶端或獨(dú)立應(yīng)用程序Workgroup適用于工作組或分支機(jī)構(gòu)操作的數(shù)據(jù)庫(kù)Standard部門級(jí)應(yīng)用程序的數(shù)據(jù)庫(kù)服務(wù)器Enterprise高度可伸縮和高度可用的企業(yè)級(jí)數(shù)據(jù)庫(kù)DeveloperEnterprise版,但是只授予開發(fā)和測(cè)試用許可Web 供托管公司提供低成本、高伸縮的托管服務(wù),只收取低廉的每月許可費(fèi)Mobile用于智能手持式設(shè)備的精簡(jiǎn)數(shù)據(jù)庫(kù)12.掌握SQLServer2008數(shù)據(jù)庫(kù)的安裝與卸載不同的數(shù)據(jù)庫(kù)之間若想互相使用數(shù)據(jù)可以采取導(dǎo)入導(dǎo)出的方式進(jìn)行,則應(yīng)選擇典型安裝SQLServer2008希望完全安裝.第三章數(shù)據(jù)庫(kù)的管理T-SQL語言分類DDL(數(shù)據(jù)定義語言)—create(創(chuàng)建)-alter(修改)—drop(刪除)DQL(數(shù)據(jù)查詢語言)-select(查詢)DML(數(shù)據(jù)操作語言)-insert(插入)-update(更新)-delete(刪除)DCL(數(shù)據(jù)控制語言)-revoke(撤銷)-deny(拒絕)-grant(同意、授權(quán))master數(shù)據(jù)庫(kù),記錄所有系統(tǒng)級(jí)信息,記錄其他所有數(shù)據(jù)庫(kù)的信息的系統(tǒng)數(shù)據(jù)庫(kù)model數(shù)據(jù)庫(kù)創(chuàng)建其他所有數(shù)據(jù)庫(kù)的模板的系統(tǒng)數(shù)據(jù)庫(kù)msdb數(shù)據(jù)庫(kù)與sqlserver代理,與計(jì)劃任務(wù)和作業(yè)等相關(guān)的系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)庫(kù)運(yùn)行時(shí)的臨時(shí)的信息的系統(tǒng)數(shù)據(jù)庫(kù)tempdb數(shù)據(jù)庫(kù)文件主數(shù)據(jù)文件(.mdf):—個(gè)數(shù)據(jù)庫(kù)有且只有一個(gè)輔助數(shù)據(jù)文件(.ndf):根據(jù)需要自由選擇,當(dāng)數(shù)據(jù)庫(kù)很大時(shí),可以選擇多個(gè)日志文件(.ldf):用于存儲(chǔ)恢復(fù)數(shù)據(jù)庫(kù)所需的事務(wù)日志信息數(shù)據(jù)庫(kù)數(shù)據(jù)文件結(jié)構(gòu)中,最小的存儲(chǔ)單位是頁數(shù)據(jù)庫(kù)數(shù)據(jù)文件結(jié)構(gòu)中,管理空間的基本單位是區(qū)SQLSERVER數(shù)據(jù)庫(kù)中,每個(gè)表最多有1024個(gè)列標(biāo)識(shí)表中唯一的實(shí)體是主鍵為數(shù)據(jù)表創(chuàng)建索引的目的是提高查詢的檢索性能存儲(chǔ)過程是一組預(yù)先定義并(編譯)的Transact-SQL語句掌握數(shù)據(jù)庫(kù)的創(chuàng)建及修改(圖形化及代碼)修改數(shù)據(jù)庫(kù)包括:擴(kuò)展、收縮、分離附加、刪除語法1) 修改數(shù)據(jù)庫(kù)名Alterdatabase原數(shù)據(jù)庫(kù)名Modifyname=新數(shù)據(jù)庫(kù)名例子:【例】將數(shù)據(jù)庫(kù)book的名字改為booksalterdatabasebookmodifyname=books2) 修改文件屬性Alterdatabase數(shù)據(jù)庫(kù)名Modifyfile(name二'邏輯名',size二修改后的大小,maxsize二修改后的大小,filegrowth二修改后的大小)Go例子:把初始大小由原來5mb增大為12mbalterdatabasebooksmodifyfile(name='book_data',size=12mb)go添加日志文件Alterdatabase數(shù)據(jù)庫(kù)名Addlogfile(name=‘邏輯名',filename=‘文件的存放路徑',size二日志文件的初始大小,maxsize二日志文件的最大大小,filegrowth二日志文件的增長(zhǎng)方式)Go例子:【例】向shop數(shù)據(jù)庫(kù)中添加一個(gè)日志文件alterdatabaseshopaddlogfile(name='shop_log2',filename='c:\shop_log2.ldf',size=10mb,maxsize=20mb,filegrowth=10%)go刪除空文件Alterdatabase數(shù)據(jù)庫(kù)名Removefile文件的邏輯名例子:刪除文件shop_data2alterdatabaseshopremovefileshop_data24)添加輔助數(shù)據(jù)文件alterdatabase數(shù)據(jù)庫(kù)名addfile(name二‘邏輯名',filename二‘文件存放的路徑',size二初始大小,maxsixe二最大大小,filegrowth二增長(zhǎng)方式)Go例子:向數(shù)據(jù)庫(kù)shop中添加一個(gè)輔助數(shù)據(jù)文件alterdatabaseshopaddfile(name='shop_data3',filename='c:\shop_data3.ndf',size=5mb,maxsize=10mb,filegrowth=10%)go5)創(chuàng)建/刪除數(shù)據(jù)庫(kù)Createdatabase數(shù)據(jù)庫(kù)名onprimary(—數(shù)據(jù)文件name二‘邏輯名’,filename二‘文件的存放路徑’,size二數(shù)據(jù)文件的初始大小,maxsize二數(shù)據(jù)文件的最大大小,filegrowth二文件的增長(zhǎng)方式)logon(--日志文件name二‘邏輯名',filename二‘文件的存放路徑’,size=數(shù)據(jù)文件的初始大小,maxsize二數(shù)據(jù)文件的最大大小,filegrowth二文件的增長(zhǎng)方式)go例子:創(chuàng)建一個(gè)名為book的數(shù)據(jù)庫(kù),其初始值大小為5MB,最大大小為50MB,允許數(shù)據(jù)庫(kù)自動(dòng)增長(zhǎng),增長(zhǎng)方式是按10%比例增長(zhǎng);日志文件初始為2MB,最大可增長(zhǎng)到5MB,按1MB增長(zhǎng)。createdatabasebookonprimaryname=‘book_data',filename='c:\book_data.mdf',size=5mb,maxsize=50mb,filegrowth=10%)logon(name=‘book_Log',filename='c:\book_log.ldf',size=2mb,maxsize=5mb,filegrowth=1mb)6)刪除數(shù)據(jù)庫(kù)Dropdatabase數(shù)據(jù)庫(kù)名例子:刪除數(shù)據(jù)庫(kù)shopdropdatabaseshop打開或切換數(shù)據(jù)庫(kù)的命令是use數(shù)據(jù)庫(kù)名DBCC的可用空間的命令是10%,保留northwind收縮數(shù)據(jù)庫(kù).ShrinkDatabase('northwind',10)第四章數(shù)據(jù)表的操作在SQLserver中創(chuàng)建表的極限:每個(gè)數(shù)據(jù)庫(kù)可以有20億個(gè)表,每個(gè)表有1024個(gè)列,每個(gè)列可以有8064字節(jié)數(shù)據(jù)類型種數(shù)據(jù)類int,bigint,smallint,整數(shù)tinyint精確數(shù)decimal,numericfloat,real近似數(shù)money,smallmoney貨datetime,smalldatetime日期和時(shí)char,varchar,varchar(mNon-Unicode字x),textUnicodenchar,nvarchar,nvarchar(max),ntext二進(jìn)制binary,varbinary,varbinary(max)圖像imageuniqueidentifier全局標(biāo)識(shí)符xmlXml特bit,cursor,timestamp,sysname,table,sql_variant字符類型字符、數(shù)字、特殊符號(hào)char(): 固定長(zhǎng)度,以空格填補(bǔ)多余長(zhǎng)度空間varchar(): 可變長(zhǎng)長(zhǎng)度,不以空格填補(bǔ)多余長(zhǎng)度空間nchar(): unicode固定長(zhǎng)度nvarchar():unicode可變長(zhǎng)長(zhǎng)度unicode國(guó)際標(biāo)準(zhǔn)碼:雙字節(jié)模式(固定每個(gè)字符16bit)一個(gè)漢字占兩個(gè)字節(jié)(16bit)一個(gè)字母占兩個(gè)字節(jié)(16bit)電話號(hào)碼應(yīng)當(dāng)采用字符格式的數(shù)據(jù)類型來存儲(chǔ)int數(shù)據(jù)類型存儲(chǔ)占幾個(gè)字節(jié)4smallint數(shù)據(jù)類型存儲(chǔ)占幾個(gè)字節(jié)2tinyint數(shù)據(jù)類型存儲(chǔ)占幾個(gè)字節(jié) 1bigint數(shù)據(jù)類型存儲(chǔ)占幾個(gè)字節(jié)8DECIMAL]p[s]的形式,p和s代表什么p代表總位數(shù),s代表小數(shù)位數(shù)數(shù)據(jù)類型char每個(gè)字符占幾個(gè)字節(jié)1數(shù)據(jù)類型nchar每個(gè)字符占幾個(gè)字節(jié)2每個(gè)字符占幾個(gè)字節(jié)varchar數(shù)據(jù)類型數(shù)據(jù)類型nvarchar每個(gè)字符占幾個(gè)字節(jié)2datetime數(shù)據(jù)類型的范圍是表示的是1753年1月1日到9999年12月31日4.語法:1) 創(chuàng)建表createtable表名2) 修改表altertable表名3)刪除表drop/deletetable表名4)將查出的信息放入新表Select*into新表名from舊表名5)添加的信息必須滿足現(xiàn)有表結(jié)構(gòu)Insertinto現(xiàn)有表select*from舊表名drop和delete、truncate的區(qū)別:drop是刪除表,而delete和truncate是刪除表中記錄5.數(shù)據(jù)操作語言DMLselect從表或視圖中檢索數(shù)據(jù)insert將數(shù)據(jù)插入到表或視圖中update修改表或視圖中的數(shù)據(jù) Updategradesetscore=score+5wherescore>=55andscore<=60delete從表或視圖中刪除數(shù)據(jù) deletefrom表名where條件Deletefromstudentwhere性別二'女’刪除student表的命令是droptablestudent條件“年齡BETWEEN40AND50”表示年齡在40至50之間,且包括40歲和50歲詳解:模式查找like'_a%',like'_[a-e]%',like‘010「0]%[A,B,C]%'SQLServer中自己建立的stuDB數(shù)據(jù)庫(kù)屬于用戶數(shù)據(jù)庫(kù)數(shù)據(jù)冗余是指存在重復(fù)的數(shù)據(jù)附加數(shù)據(jù)庫(kù)的操作是把已經(jīng)存在于磁盤上的數(shù)據(jù)庫(kù)文件恢復(fù)為數(shù)據(jù)庫(kù)創(chuàng)建好數(shù)據(jù)庫(kù)接著要?jiǎng)?chuàng)建數(shù)據(jù)表主鍵是用來實(shí)施實(shí)體完整性約束,一個(gè)表只能有一個(gè)主鍵修改表名為Table1的字段Fieldl長(zhǎng)度,原為Char(10)要求用SQL增加長(zhǎng)度為char(20),AltertableTable1AltercolumnField1char(20)在employees表中添加一個(gè)memo字段,數(shù)據(jù)類型char(30)的命令是altertableemployeesaddmemochar(30)基礎(chǔ)查詢第五章.select語法結(jié)構(gòu)基本語法:select字段名From目標(biāo)表Where條件【例】查詢學(xué)生成績(jī)數(shù)據(jù)庫(kù)(student_score)學(xué)生情況表(Member)中的所有列。usestudent_scoreselect*fromMemberWhere條件限定語法的用法基本語法:use數(shù)據(jù)庫(kù)名Select字段名From目標(biāo)名Where字段名二“內(nèi)容”Go【例】查詢Member表中Mname為馬德保的相關(guān)信息usestudent_scoreselect*fromMemberwhereMname二'馬德保'golike模糊查詢3.基本語法:select字段名From目標(biāo)名Where目標(biāo)名like條件【例】查找學(xué)生姓名以‘劉'開頭的所有學(xué)生信息usestudent_scoreselect*fromMemberwhereMnamelike'劉%'go%代表所有可能的情況3)%的使用%N%表示包含NN%表示N開頭%N表示N結(jié)尾4)“「代表不、不是、不以的意思Or/and/not的邏輯運(yùn)算【例】將Mname以'劉'開頭,或總學(xué)分為60,且專業(yè)名為網(wǎng)絡(luò)互連的學(xué)生Mnameusestudent_scoreselectMname,Mtotalscore,MMajorfromMemberwhereMnamelike'劉%'orMTotalscore=60網(wǎng)絡(luò)互連andMMajor二'goBetween???and在…范圍之內(nèi)【例】查找總學(xué)分為60和70之間的學(xué)生所有信息usestudent_scoreselect*fromMemberwhereMTotalScorebetween60and70go6.In=or或【例】查找總學(xué)分為70和80的所有學(xué)生信息usestudent_scoreselectfromMemberwhereMtotalscorein('70','80') whereMtotalscorenotin(‘70',‘80')go6.1snull為空的查詢【例】查詢所在地區(qū)為空的學(xué)生姓名usestudent_scoreselectMaera,MnamefromMemberwhereMaeraisnullgo7.0rderby排序:asc升序;desc降序【例】查找學(xué)生的總學(xué)分以升序排列,出生日期以降序排列的學(xué)生姓名和學(xué)號(hào)usestudent_scoreselectMname,Mbirth,Mtotalscore,MIDfromMemberorderbyMtotalscoreasc,Mbirthdescgodistinct數(shù)據(jù)過濾和消除重復(fù)記錄【例】查詢student_score數(shù)據(jù)庫(kù)中Member表中的總學(xué)分,但是不能有重復(fù)usestudent_scoreselectdistinctMtotalscorefromMemberorderbyMtotalscoregoTop和top…withties的用法【例】求學(xué)分最高的5位學(xué)生的信息,并且返回與第5并列的學(xué)生信息usestudent_scoreselecttop5withtiesMID,MtotalscorefromMemberorderbyMtotalscorego注:withties必須與orderby連用as取別名【例】在student_score數(shù)據(jù)庫(kù)中的Member表中對(duì)Mname取別名為a,專業(yè)名為b,并在補(bǔ)一列為性別,并取別名為cusestudent_scoreselectMnameasa,MMajorasb,‘性別'ascfromMembergo第六章高級(jí)查詢聯(lián)接定義:根據(jù)各個(gè)數(shù)據(jù)庫(kù)表之間的邏輯關(guān)系從二個(gè)或多個(gè)數(shù)據(jù)表中檢索數(shù)據(jù)聯(lián)接分類內(nèi)連接:基本內(nèi)連接、多表連接、自連接外連接:左外連接、右外連接、全外連接交叉連接左外連接、右外連接、全外連接的含義leftouterjoin左外連接(join左邊的表),結(jié)果集中除了包括滿足連接條件的行外,還包括左表所有行rightouterjoin右外連接(join右邊的表),結(jié)果集中除了包括滿足連接條件的行外,還包括右表所有行fullouterjoin全外連接,結(jié)果集中除了包括滿足連接條件的行外,還包括兩個(gè)表的所有行內(nèi)連接概述1)用…innerjion…on…語句進(jìn)行連接Jion指定需要連接的數(shù)據(jù)表On指定連接條件(inner可省略)【例】查找選修了01課程且成績(jī)?cè)?0分以上的學(xué)生編號(hào)和成績(jī)usestudent_scoreselectM.MID,S.scorefromMemberMjoinScoreSonM.MID=S.MIDwhereCID='01'andscore>=30go外連接語法:select字段名1,字段名2…字段nFrom表1leftouterjoin表2from表1rightouterjoin表2from表1fullouterjoin表2Go【例】查找所有學(xué)生信息及其考試成績(jī),若該生未參加任何考試,也列出其信息usestudent_scoreselectM.*,S.CID,S.scorefromScoreSrightjoinMemberMonM.MID=S.MIDgo6.交叉連接語法:select字段1,字段2From表1crossjoin表2Go【例】返回Member表和Score表所有可能記錄的組合usestudent_scoreselectM.MID,M.Mname,CID,ScorefromMemberMcrossjoinScoreSgo在WHERE子句中包含一個(gè)形如SELECT-FROM-WHERE的查詢塊,此查詢塊稱為子查詢SQL中消除重復(fù)的記錄命令是distinct第七章函數(shù)函數(shù):是一段特殊的程序代碼,它能對(duì)查詢結(jié)果進(jìn)行一定的操作函數(shù)的作用:就是使用戶不必書寫太多的程序代碼即可完成復(fù)雜的操作日期時(shí)間函數(shù)類型包括系統(tǒng)函數(shù)、字符串函數(shù)、2.SQLServer函數(shù)、聚合函數(shù)等系統(tǒng)函數(shù)對(duì)SQLServer服務(wù)器和數(shù)據(jù)庫(kù)對(duì)象進(jìn)行操作,返回服務(wù)器配置和數(shù)據(jù)庫(kù)對(duì)象數(shù)值等信息CURRENT_TIMESTAMP()可返回系統(tǒng)當(dāng)前日期和時(shí)間,類型為datetimeHOST_NAME()返回主機(jī)名稱SYSTEM_USER返回當(dāng)前系統(tǒng)用戶USER_NAME()返回id標(biāo)識(shí)指定的用戶名稱db_name()返回當(dāng)前會(huì)話的數(shù)據(jù)庫(kù)名稱聚合函數(shù)功能Sum() 計(jì)算表達(dá)式所有值之和必須是數(shù)值,數(shù)字類型【例】求選修01課程的學(xué)生的總成績(jī)。usestudent_scoreselectsum(score)as'課程01總成績(jī)'fromScorewhereCID='01goAvg() 計(jì)算表達(dá)式的平均值【例】求選修10課程的學(xué)生的平均成績(jī)。usestudent_scoreselectavg(score)as'課程10平均成績(jī)'fromScorewhereCID='10'goCount(列名)計(jì)算表達(dá)式中非空值的數(shù)量【例】求學(xué)生的總成績(jī)usestudent_scoreselectcount()as‘學(xué)生總成績(jī)'fromMembergocount(*) 計(jì)算表達(dá)式中所有值的數(shù)量【例】求學(xué)生的總?cè)藬?shù)usestudent_scoreselectcount(*)as‘學(xué)生總?cè)藬?shù)'fromMembergoMin() 計(jì)算表達(dá)式的最小值【例】求選修00課程的學(xué)生的最低分usestudent_scoreselectmin(score)as'課程00的最低分'fromScorewhereCID='00'goMax() 計(jì)算表達(dá)式的最大值課程的學(xué)生的最高分11【例】求選修usestudent_scoreselectmax(score)as'課程11的最高分'fromScorewhereCID='11'go邏輯運(yùn)算符:notorand第八章數(shù)據(jù)的完整性數(shù)據(jù)庫(kù)完整性:是指存儲(chǔ)在數(shù)據(jù)庫(kù)中數(shù)據(jù)的一致性和標(biāo)準(zhǔn)性數(shù)據(jù)完整性的類型1)域(列)完整性:指定對(duì)列的一組有效值并決定是否允許有空值。也可以通過在一列中限定數(shù)據(jù)類型,格式和可能值的范圍來強(qiáng)制數(shù)據(jù)完整性。2) 實(shí)體(行)完整性:要求表中所有的行具有唯一的標(biāo)識(shí)符,例如主關(guān)鍵字值。3) 參照完整性:確保維持主關(guān)鍵字和外部關(guān)鍵字的關(guān)系約束的概念:確保在列中輸入有效的值并維護(hù)表之間的關(guān)系。約束的類型完整性類型約束類型說明指定列的默認(rèn)值域DEFAULT指定列的允許值CHECK指定是否允許NULLNULL唯一標(biāo)識(shí)每一行PRIMARYKEY實(shí)體.UNIQUE防止非主鍵重定義值必須與此表FOREIGNKEY引主鍵匹配的default功能:執(zhí)行insert語句時(shí)將默認(rèn)值自動(dòng)插入約束所在的列語法:altertable表名addconstraint約束名default(默認(rèn)值)for字段名go【例】修改數(shù)據(jù)庫(kù)student_score中的Menber表,將性別的默認(rèn)值設(shè)置為'男'usestudent_scorealtertableMemberaddconstraintdf_sexdefault('男’)forMsexgocheck功能:check(檢查約束),每次執(zhí)行Insert/update語句時(shí),該約束要校驗(yàn)數(shù)據(jù)的合法性語法:altertable表名addconstraint約束名)條件check(go【例】修改數(shù)據(jù)庫(kù)student_score中的Score表,使成績(jī)限制在0~100之間usestudent_scorealtertableScoreaddconstraintck_cjcheck(score>=0andscore<=100)go7.primarykey功能:primarykey(主鍵約束),一個(gè)表中只有能一個(gè)pk,不能有空值,不能有重復(fù)值;pk所在列的值能夠唯一標(biāo)識(shí)此行;能與fk關(guān)聯(lián),pk所在表為主表;同時(shí)創(chuàng)建一個(gè)與PK約束名的簇索引。語法:altertable表名addconstraint約束名primarykey(字段名)go【例】修改數(shù)據(jù)庫(kù)student_score中的kc表,將課程號(hào)設(shè)置為主鍵usestudent_scorealtertableCourseaddconstraintpk_kchprimarykey(CID)go8.Unique功能:unique(唯一約束),指定在同一列中的兩行不能有相同的值,只能有一行為空值,該約束自動(dòng)創(chuàng)建一個(gè)與約束同名的非簇索引,在插入/修改時(shí)自動(dòng)執(zhí)行。語法: altertable表名addconstraint約束名unique(字段名)go【例】修改數(shù)據(jù)庫(kù)student_score中的Course表,將課程名設(shè)置為unique約束usestudent_scorealtertableCourseaddconstraintun_kcmunique(Cname)go9.FOREIGNKEY功能:參照完整性確保維持主關(guān)鍵字(在主表中)和外部關(guān)鍵字(在輔表中)的關(guān)系。語法:altertable表名1addconstraint約束名foreignkey(字段名)references表名2(字段名)go【例】修改數(shù)據(jù)庫(kù)student_score中的Score表,將課程號(hào)設(shè)置為外鍵usestudent_scorealtertableScoreaddconstraintfk_kchforeignkey(CID)referencesCourse(CID)go10.刪除約束語法:altertable表名dropconstraint約束名【例】刪除Menber表的fk_xh約束。usestudent_scorealtertableScoredropconstraintfk_xhgo第九章視圖視圖;是從一個(gè)或多個(gè)表(或視圖)導(dǎo)出的虛表。對(duì)于數(shù)據(jù)庫(kù)用戶來說,視圖似乎是一個(gè)真實(shí)的表,它具有一組命名的數(shù)據(jù)列和行。但是,與真實(shí)的表不同,在視圖中沒有存儲(chǔ)任何數(shù)據(jù),僅僅是一種較簡(jiǎn)單的訪問數(shù)據(jù)庫(kù)里其他表中數(shù)據(jù)的方式,因此稱它為“虛表”。視圖只能建立在當(dāng)前正在使用的數(shù)據(jù)庫(kù)中視圖的優(yōu)點(diǎn)聚焦數(shù)據(jù),創(chuàng)建可以控制的環(huán)境,將需要的、常規(guī)的、適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)在視圖中。隱藏?cái)?shù)據(jù)庫(kù)的復(fù)雜性簡(jiǎn)化對(duì)用戶的許可管理數(shù)據(jù)庫(kù)擁有者只允許用戶通過視圖查詢數(shù)據(jù),保護(hù)了底層基本表的設(shè)計(jì)結(jié)構(gòu)提高性能存儲(chǔ)復(fù)雜查詢、分割數(shù)據(jù)輸出數(shù)據(jù)給其他應(yīng)用程序視圖創(chuàng)建是應(yīng)注意的情況只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建視圖。如果視圖引用的基表或者視圖被刪除,則該視圖不能再被使用,直到創(chuàng)建新的基表或者視圖。如果視圖中某一列是函數(shù)、數(shù)學(xué)表達(dá)式、常量或者來自多個(gè)表的列名相同,則必須為列定義名稱。當(dāng)通過視圖查詢數(shù)據(jù)時(shí),SQLServer要檢查以確保語句中涉及的所有數(shù)據(jù)庫(kù)對(duì)象存在,而且數(shù)據(jù)修改語句不能違反數(shù)據(jù)完整性規(guī)則。視圖的名稱必須遵循標(biāo)識(shí)符的規(guī)則,且對(duì)每個(gè)用戶必須是唯一的2.語法;創(chuàng)建視圖視圖名1)createview【例】創(chuàng)建v1視圖,包括作者為馬德保的書籍ISBN,名稱,及單價(jià)usebookgocreateviewv1asselectisbn,bookname,unitpricefrombookinfowhereauthor二'馬德保'godropview視圖名刪除視圖【例】刪除名為v2的視圖dropviewv2alterview視圖名修改視圖【例】修改v1視圖,包括出版社為工業(yè)出版社的書籍ISBN,作者及單價(jià)usebookgoalterviewv1asselectisbn,author,unitpricefrombookinfowherepublisher二'工業(yè)出版社’goexecsp_helptext視圖名查看視圖定義【例】查看視圖v1:execsp_helptextv1update視圖名 更新視圖【例】將vl視圖中書名為“WindowsServer2008活動(dòng)目錄”的單價(jià)增加10。usebookgoupdatevlsetunitprice=unitprice+l0wherebookname='WindowsServer2008活動(dòng)目錄'go第十章索引建立索引目的:是希望提高SQLServer數(shù)據(jù)檢索的速度索引的分類聚集索引對(duì)表進(jìn)行物理排序的索引是聚集索引非聚集索引唯一索引建立索引的原則3.1)定義主鍵數(shù)據(jù)列一定要建立索引2)定義外鍵數(shù)據(jù)列上一定建立索引3)對(duì)于經(jīng)常查詢的數(shù)據(jù)列最好建立索引4)對(duì)于需要在指定范圍內(nèi)快速或頻繁查詢的數(shù)據(jù)列5) 經(jīng)常用在where子句中的數(shù)據(jù)列6) 對(duì)于那些查詢中很少涉及的列,重復(fù)值較多的列不要建立索引7) 對(duì)于定義為text、image和bit數(shù)據(jù)類型的列不要建立索引4.語法;創(chuàng)建索引Createunique索引名修改索引alterunique索引名刪除索引dropunique索引名例如:在xscj數(shù)據(jù)庫(kù)中的xs表上創(chuàng)建名為ix_name的非聚集索引、唯一索引,該索引基于“姓名”列創(chuàng)建語法是CreateuniquenonclusteredIndexix_nameonxs(姓名)更新索引統(tǒng)計(jì)信息的命令是updatestatistics對(duì)表進(jìn)行數(shù)據(jù)操作可能會(huì)導(dǎo)致表碎片的產(chǎn)生,而碎片會(huì)導(dǎo)致讀取額外頁,從而造成數(shù)據(jù)查詢性能的降低,可以使用(dbccshowcontig)語句掃描表當(dāng)表或視圖上的聚集索引和非聚集索引頁上存在碎片時(shí),可以使用進(jìn)行碎片整理(dbccindexdefrag).第十一章存儲(chǔ)過程存儲(chǔ)過程的類型系統(tǒng)存儲(chǔ)過程(名字以“sp_”為前綴,存儲(chǔ)在master里)本地存儲(chǔ)過程(存儲(chǔ)在用戶定義的數(shù)據(jù)庫(kù)中)擴(kuò)展存儲(chǔ)過程(名字都以“xp_”為前綴,存儲(chǔ)在master里)臨時(shí)存儲(chǔ)過程(名字以#開頭)語法:l)Creatprocedure存儲(chǔ)過程名 創(chuàng)建存儲(chǔ)過程【例】創(chuàng)建名為p_book_info的存儲(chǔ)過程,該存儲(chǔ)過程查詢所有書籍的信息usebookgocreateprocedurep_book_infoasselect*frombookinfoorderbyISBN2)Execprocedure存儲(chǔ)過程名 執(zhí)行存儲(chǔ)過程【例】p_order_detail可以通過以下方式執(zhí)行execp_order_detail修改存儲(chǔ)過程 存儲(chǔ)過程名3)Alterprocedure【例】修改p_order_detail,返回訂單id,用戶姓名,用戶地址,書籍單價(jià),書籍名稱及訂單數(shù)量alterprocedurep_order_detailasselecto.orderdetailid,u.username,u.addr,b.unitprice,b.bookname,o.quantityfromorderdetailasojoinuserinfoasuono.userid=u.useridjoinbookinfoasbono.isbn=b.isbngo4)Dropprocedure存儲(chǔ)過程名 刪除存儲(chǔ)過程【例】刪除xscj數(shù)據(jù)庫(kù)中的p_book_info存儲(chǔ)過程usebookgodropprocedurep_book_info數(shù)據(jù)庫(kù)系統(tǒng)類型是按照(數(shù)據(jù)模型)來劃分的用于顯示存儲(chǔ)過程的源代碼的系統(tǒng)存儲(chǔ)過程是sp_helptextxp_cmdshell能夠用來添加系統(tǒng)用戶的擴(kuò)展存儲(chǔ)過程是局部標(biāo)量是加上@全局變量是加上@@用于聲明一個(gè)或多個(gè)局部變量的命令是declare第十二章流程設(shè)計(jì)流程控制語句:是指那些用來控制程序執(zhí)行和流程分支的命令,在SQLServer中,流程控制語句主要用來控制SQL語句、語句塊或者存儲(chǔ)過程的執(zhí)行流程。變量分為:局部變量和全局變量運(yùn)算符算術(shù)運(yùn)算符:+,-,*,/,%賦值運(yùn)算符:=比較運(yùn)算符:>,<,>=,<=,=,!=,<>,!>,!<邏輯運(yùn)算符:-all,and,any,between,exists,in,like,not,or,some字符串串聯(lián)運(yùn)算符:+按位運(yùn)算符:&,|「,?4.流程控制l)begin???end:定義語句塊。gotolabel從label所定義的label之后的語句處繼續(xù)進(jìn)行處理。if???else定義條件以及當(dāng)一個(gè)條件為FALSE時(shí)的操作。while當(dāng)特定條件為TRUE時(shí)重復(fù)語句。為語句的執(zhí)行設(shè)置延遲5)waitfor第十三章觸發(fā)器觸發(fā)器:是一種特殊的存儲(chǔ)過程,它被分配給某個(gè)特定的表,觸發(fā)器都是自動(dòng)調(diào)用的。當(dāng)一特定的表數(shù)據(jù)被插入、更新或刪除時(shí),數(shù)據(jù)庫(kù)需要執(zhí)行一定的動(dòng)作,觸發(fā)器是確保數(shù)據(jù)完整性和一致性的基本有效的方法觸發(fā)器的動(dòng)作DeleteUpdateInsert觸發(fā)器的作用禁止無效的修改級(jí)聯(lián)修改相關(guān)表格執(zhí)行較為復(fù)雜的約束操作觸發(fā)器特點(diǎn)不接受用戶參數(shù),也不返回用戶參數(shù);存儲(chǔ)在表上。數(shù)據(jù)庫(kù)中跨越相關(guān)表的級(jí)聯(lián)修改。對(duì)數(shù)據(jù)庫(kù)中的相關(guān)表進(jìn)行級(jí)聯(lián)更新和刪除強(qiáng)制比Check約束更復(fù)雜的數(shù)據(jù)完整性.可以引用其他表中的列5.語法:1)Createtrigger觸發(fā)器名 創(chuàng)建觸發(fā)器【例】對(duì)于student_score數(shù)據(jù)庫(kù),如果在Member表中刪除數(shù)據(jù),執(zhí)行時(shí)顯示提示信息。則在.usestudent_scoregocreatetriggertr_deleteonMemberfordeleteasprint'你已經(jīng)刪除了此數(shù)據(jù)!'go2)altertrigger觸發(fā)器名 修改觸發(fā)器【例】在Member表中定義觸發(fā)器,當(dāng)修改紀(jì)錄時(shí)彈出消息:恭喜!你修改了此表!usestudent_scoregoaltertriggertr_deleteonMemberfordeleteasprint'恭喜!你修改了此表!godisabletrigger觸發(fā)器名禁用觸發(fā)器【例】禁用tr_update觸發(fā)器usestudent_scoregoaltertableMemberdisabletriggertr_updategoenabletrigger觸發(fā)器名 啟用觸發(fā)器【例】啟用tr_insert觸發(fā)器usestudent_scoregoaltertableMemberenabletriggertr_insertgodroptrigger觸發(fā)器名 刪除觸發(fā)器【例】刪除名為tr_insert的觸發(fā)器droptriggertr_insertSQLServer數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)操作語言(DML)事件時(shí)將觸發(fā)哪種觸發(fā)器DML觸發(fā)器DML觸發(fā)器使用哪兩個(gè)邏輯表deleted和inserted創(chuàng)建DML觸發(fā)器的命令是createtrigger用于查看觸發(fā)器的一般信息的系統(tǒng)存儲(chǔ)過程是sp_help用于查看觸發(fā)器的正文信息的系統(tǒng)存儲(chǔ)過程是sp_helptextsp_rename用于修改觸發(fā)器的名字系統(tǒng)存儲(chǔ)過程是用于刪除觸發(fā)器的命令是droptrigger第十四章數(shù)據(jù)庫(kù)安全SQLServer2008的安全性管理可分為3個(gè)等級(jí):1) 操作系統(tǒng)級(jí)2) SQLServer級(jí)3) 數(shù)據(jù)庫(kù)級(jí)SQLServer登錄認(rèn)證簡(jiǎn)介;Windows和SQLServer身份驗(yàn)證Window身份驗(yàn)SQLServe身份驗(yàn)當(dāng)用戶登陸Window域時(shí)Window操作系統(tǒng)從不驗(yàn)證用戶名和密碼在被傳送到Windows域控制器之前被加密支持復(fù)雜加密、密碼的截止日期支持密碼策略(Sql2000不支持)和最短長(zhǎng)度等密碼策略支持帳戶鎖定策略,在使用無效不支持帳戶鎖定功能密碼進(jìn)行多次嘗試后鎖定帳戶在Windows98/me中不能使用在Windows98/me中可以使用3數(shù)據(jù)庫(kù)安全通過以下三種方式實(shí)施:帳戶管理:添加和刪除數(shù)據(jù)庫(kù)用戶,便于訪問數(shù)據(jù)庫(kù)。權(quán)限管理:指定用戶能夠?qū)δ男?shù)據(jù)庫(kù)對(duì)象執(zhí)行哪種操作。將具有相同權(quán)限的用戶設(shè)置為同一角色,減少權(quán)限設(shè)角色管理:置的工作量SQLServer2008采用的身份驗(yàn)證模式有Windows身份驗(yàn)證模式和混合模式第十五章數(shù)據(jù)庫(kù)災(zāi)難性恢復(fù)備份和恢復(fù)的必要性數(shù)據(jù)庫(kù)中的數(shù)據(jù)丟失或被破壞的原因:計(jì)算機(jī)硬件故障、軟件故障病毒、誤操作、自然災(zāi)害、盜竊備份類型完全備份(DatabaseFullBackups)特點(diǎn):1)速度慢、時(shí)間長(zhǎng);占用大量的磁盤空間;3)完全備份的頻率通常比差異備份或事務(wù)日志備份低事務(wù)日志備份(TransactionLogBackups)特點(diǎn):1)速度快、時(shí)間少2)占用磁盤空間少3)操作復(fù)雜差異備份(DifferentialDatabaseBackups)特點(diǎn):1)速度一般、時(shí)間短2)占用磁盤空間少3)需要經(jīng)常備份恢復(fù)模式恢復(fù)模式描述數(shù)據(jù)庫(kù)的完整或差異副本,截?cái)嗪?jiǎn)單恢復(fù)模式事務(wù)日志.完整恢復(fù)模包括數(shù)據(jù)庫(kù)備份和事務(wù)日志備包括數(shù)據(jù)庫(kù)和事務(wù)日志備,大容量日志恢使用較少的日志當(dāng)選擇恢復(fù)模式時(shí),必須考慮原則:1) 大規(guī)模操作的性能(如大容量裝載)2) 數(shù)據(jù)丟失表現(xiàn)(如已提交的事務(wù)丟失)3) 事務(wù)日志空間損耗4) 備份和恢復(fù)過程的簡(jiǎn)化備份還原的方法完整備份和還原完整+差異備份與還原完整+事務(wù)日志備份與還原創(chuàng)建備份設(shè)備:物理和邏輯語法:1)創(chuàng)建數(shù)據(jù)庫(kù)備份完全備份backupdatabase數(shù)據(jù)庫(kù)名to永久設(shè)備邏輯名withinit/noinit--init 表示重寫--noinit表示追加(默認(rèn))【例】把book數(shù)據(jù)庫(kù)完全備份到backup_book設(shè)備里backupdatabasebooktobackup_bookwithnoinit差異備份backupdatabase數(shù)據(jù)庫(kù)名to
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆廣西南寧市馬山縣金倫中學(xué)“4+ N”高中聯(lián)合體高三英語第一學(xué)期期末調(diào)研模擬試題含解析
- 河北省張家口市2025屆高一上數(shù)學(xué)期末調(diào)研模擬試題含解析
- 廣東省中山一中等七校2025屆英語高三上期末達(dá)標(biāo)檢測(cè)試題含解析
- 江蘇省常州市前黃中學(xué)溧陽中學(xué)2025屆數(shù)學(xué)高三上期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2025屆云南省開遠(yuǎn)市第二中學(xué)高三生物第一學(xué)期期末聯(lián)考試題含解析
- 重慶市九校2025屆英語高三第一學(xué)期期末經(jīng)典模擬試題含解析
- 2025屆江蘇省蘇州市平江中學(xué)數(shù)學(xué)高一上期末經(jīng)典試題含解析
- 2025屆江蘇省丹陽市丹陽高級(jí)中學(xué)數(shù)學(xué)高三上期末質(zhì)量檢測(cè)試題含解析
- 湖北省孝感市八所重點(diǎn)高中教學(xué)協(xié)作體2025屆高二上生物期末監(jiān)測(cè)模擬試題含解析
- 河北省定興中學(xué)2025屆高一數(shù)學(xué)第一學(xué)期期末調(diào)研模擬試題含解析
- 【課件】主動(dòng)運(yùn)輸與胞吞、胞吐課件高一上學(xué)期生物人教版(2019)必修1
- 認(rèn)識(shí)精細(xì)化工與精細(xì)化學(xué)品-精細(xì)化學(xué)品的定義與分類
- 心臟的應(yīng)用解剖-完整版
- 車間安全檢查評(píng)分表
- 高中階段學(xué)校實(shí)際就讀證明(格式)
- 13G322-1~4《鋼筋混凝土過梁(2013年合訂本)》
- 關(guān)于幼兒園小班反邪教安全教案
- 某單位物業(yè)服務(wù)項(xiàng)目投標(biāo)方案
- 數(shù)字貿(mào)易規(guī)則與研發(fā)要素跨境流動(dòng)
- 35KV場(chǎng)內(nèi)集電線路工程強(qiáng)條執(zhí)行檢查表
- 案例柜中緣劇本
評(píng)論
0/150
提交評(píng)論