數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用第04章.ppt
第4章數(shù)據(jù)庫(kù)管理本章導(dǎo)讀本章主要介紹了有關(guān)數(shù)據(jù)表的操作,包括表的創(chuàng)建、修改、刪除和建立索引等操作以及表中數(shù)據(jù)維護(hù)的有關(guān)操作和方法,基本掌握使用SQLServerManagementStudio和T-SQL語(yǔ)句對(duì)表的操作和表的數(shù)據(jù)操作,包括創(chuàng)建表、刪除表、對(duì)表中字段建立索引、向表中增加數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)等。要對(duì)SQLServer2005中的數(shù)據(jù)類型有一個(gè)清楚的認(rèn)識(shí)。,4.1數(shù)據(jù)庫(kù)的創(chuàng)建與管理,4.1.1SQLServer系統(tǒng)數(shù)據(jù)庫(kù)1系統(tǒng)數(shù)據(jù)庫(kù)1)Master數(shù)據(jù)庫(kù)2)Model數(shù)據(jù)庫(kù)3)Msdb數(shù)據(jù)庫(kù)4)Tempdb數(shù)據(jù)庫(kù)5)Resource數(shù)據(jù)庫(kù)6)Distribution數(shù)據(jù)庫(kù)2數(shù)據(jù)庫(kù)快照,4.1數(shù)據(jù)庫(kù)的創(chuàng)建與管理,4.1.2數(shù)據(jù)庫(kù)的創(chuàng)建,1準(zhǔn)備創(chuàng)建數(shù)據(jù)庫(kù)(學(xué)生選課),1)確定數(shù)據(jù)庫(kù)的名稱、所有者(創(chuàng)建數(shù)據(jù)庫(kù)的用戶)數(shù)據(jù)庫(kù)名稱:studentcourse2)確定存儲(chǔ)該數(shù)據(jù)庫(kù)的數(shù)據(jù)文件的大小及文件空間增長(zhǎng)方式,確定關(guān)系、索引,及系統(tǒng)存儲(chǔ)參數(shù)的配置,確定數(shù)據(jù)庫(kù)的存取方法。主數(shù)據(jù)文件:邏輯名稱studentcourse;物理文件名:C:Datastudentcourse.mdf,初始大?。?MB,最大空間:UNLIMITED,空間增加量:1MB,屬于文件組primary。次數(shù)據(jù)文件:邏輯名稱secondsc;物理文件名:C:mydbsecondsc.ndf,初始大?。?MB,最大空間:50MB,空間增加量:1MB,屬于文件組group1。日志文件:邏輯名稱studentcourse_log;物理文件名:C:Logstudentcourse_log.ldf,始初大小:1MB,最大空間:20MB,空間增加量:10%索引:每一數(shù)據(jù)表關(guān)于主關(guān)鍵字建立索引文件。,2使用SQLServerManagementStudio創(chuàng)建數(shù)據(jù)庫(kù),3.1關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)思路,圖4.1【創(chuàng)建數(shù)據(jù)庫(kù)】界面,圖4.2【新建數(shù)據(jù)庫(kù)】對(duì)話框,3使用Transact-SQL語(yǔ)言創(chuàng)建數(shù)據(jù)庫(kù),1)命令格式CREATEDATABASEONPRIMARY,N,NLOGON,N其中,N表示設(shè)置文件屬性,格式如下。(NAME=邏輯文件名,F(xiàn)ILENAME=物理文件名稱,SIZE=數(shù)據(jù)庫(kù)文件的初始容量值,MAXSIZE=物理文件的最大容量值|UNLIMITED,F(xiàn)ILEGROWTH=增加容量值),N其中,N表示設(shè)置文件組屬性,格式如下。FILEGROUP文件組名稱DEFAULT,N,2)參數(shù)說(shuō)明(1)放在“”中的“”表示整個(gè)“”括起來(lái)的選項(xiàng)都可省略,如果不省,則“”括起的選項(xiàng)不能省。使用“”分隔的多個(gè)選項(xiàng),表示只能選擇其中一個(gè)。(2)數(shù)據(jù)庫(kù)的名稱必須符合標(biāo)識(shí)符規(guī)則,最長(zhǎng)為128個(gè)字符。數(shù)據(jù)庫(kù)名稱在SQLServer的實(shí)例中必須唯一。數(shù)據(jù)庫(kù)的邏輯文件名是數(shù)據(jù)庫(kù)在SQLServer中的標(biāo)識(shí)符。FILENAME指定數(shù)據(jù)庫(kù)物理文件名稱和路徑,它和數(shù)據(jù)庫(kù)邏輯名稱一一對(duì)應(yīng)。文件組的邏輯名稱必須在數(shù)據(jù)庫(kù)中唯一,不能是系統(tǒng)提供的名稱PRIMARY和PRIMARY_LOG。(3)“ON”定義數(shù)據(jù)文件;“PRIMARY”定義主文件組中的文件;“LOGON”定義日志文件。一個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)主文件,如果沒(méi)有定義主文件,列在數(shù)據(jù)文件項(xiàng)的第一個(gè)文件就是主文件。,3使用Transact-SQL語(yǔ)言創(chuàng)建數(shù)據(jù)庫(kù),(4)數(shù)據(jù)庫(kù)文件容量單位可以是KB,MB,GB,TB,缺省值為MB,長(zhǎng)度必須為整數(shù),主文件的,最小容量是Model數(shù)據(jù)庫(kù)的主文件長(zhǎng)度;對(duì)于其他類型文件,最小長(zhǎng)度為512KB。(5)MAXSIZE:指定物理文件的最大容量。如果不設(shè)置文件的最大尺寸,那么文件的增長(zhǎng)最大值將是磁盤的所有空間。UNLIMITED選項(xiàng)允許文件增長(zhǎng)到磁盤已滿。(6)FILEGROWTH:指定文件每次增加容量的大小或百分比,基數(shù)為當(dāng)前文件大小。當(dāng)FILEGROWTH=0時(shí),表示文件不增長(zhǎng)。(7)DEFAULT:指定命名文件組為數(shù)據(jù)庫(kù)中的默認(rèn)文件組。,圖4.11用命令創(chuàng)建Studentcourse數(shù)據(jù)庫(kù)界面,CREATEDATABASEstudentcourseONPRIMARY(NAME=studentcourse,FILENAME=C:DATAstudentcourse.mdf,SIZE=3072KB,MAXSIZE=UNLIMITED,FILEGROWTH=1024KB),FILEGROUPgroup2(NAME=secondsc,FILENAME=C:mydbsecondsc.ndf,SIZE=3072KB,MAXSIZE=51200KB,FILEGROWTH=1024KB)LOGON(NAME=studentcourse_log,FILENAME=C:LOGstudentcourse_log.ldf,SIZE=1024KB,MAXSIZE=20480KB,FILEGROWTH=10%),3)創(chuàng)建學(xué)生選課數(shù)據(jù)庫(kù),4.1.3管理數(shù)據(jù)庫(kù),1查看數(shù)據(jù)庫(kù)信息,1)命令格式EXECsp_helpdb數(shù)據(jù)庫(kù)名2)功能查看指定數(shù)據(jù)庫(kù)的相關(guān)數(shù)據(jù)文件信息、數(shù)據(jù)庫(kù)擁有者、創(chuàng)建時(shí)間等信息。若缺省數(shù)據(jù)庫(kù)名,則顯示所有數(shù)據(jù)庫(kù)信息。【例4.1】查看學(xué)生選課“studentcourse”數(shù)據(jù)庫(kù)的信息。方法一:使用SQLServerManagementStudio查看數(shù)據(jù)庫(kù)信息方法二:使用系統(tǒng)存儲(chǔ)過(guò)程命令查看數(shù)據(jù)庫(kù)信息。EXECsp_helpdbstudentcourse【例4.2】查看所有數(shù)據(jù)庫(kù)信息。EXECsp_helpdb,4.1.3管理數(shù)據(jù)庫(kù),2打開數(shù)據(jù)庫(kù),1)命令格式USE2)功能使指定數(shù)據(jù)庫(kù)成為當(dāng)前數(shù)據(jù)庫(kù)【例4.3】打開學(xué)生選課“studentcourse”數(shù)據(jù)庫(kù)。方法一:使用SQLServerManagementStudio打開數(shù)據(jù)庫(kù)方法二:使用命令。USEstudentcourse,3修改數(shù)據(jù)庫(kù),1)命令格式AlterDatabase數(shù)據(jù)庫(kù)名AddFile,NToFilegroup文件組名稱|AddLogFile,N|RemoveFile邏輯文件名稱WithDelete|ModifyFile|ModifyName=新數(shù)據(jù)庫(kù)名稱|AddFilegroup新增文件組名稱|RemoveFilegroup文件組名稱|ModifyFilegroup原文件組名稱文件組屬性|Name=新文件組名稱2)功能AddFile:向數(shù)據(jù)庫(kù)添加文件。AddLogfile:向數(shù)據(jù)庫(kù)添加日志文件。RemoveFile:從數(shù)據(jù)庫(kù)中刪除文件。ModifyFile:對(duì)文件進(jìn)行修改,包括SIZE、FILEGROWTH和MAXSIZE,每次只能對(duì)一個(gè)屬性進(jìn)行修改。ModifyName:重新命名數(shù)據(jù)庫(kù)。Add|Remove|ModifyFilegroup:向數(shù)據(jù)庫(kù)中添加刪除修改文件組,【例4.4】向數(shù)據(jù)庫(kù)Studentcourse中添加一個(gè)名為group2的文件組,并在該文件組中添加一個(gè)名為Studentcourse2、路徑為默認(rèn)的次數(shù)據(jù)文件,初始值大小為2MB,最大值為50MB,文件以1MB增長(zhǎng);再添加一個(gè)名為Studentcourse_Log2的日志文件,初始值大小為1MB,最大值為100MB,文件以10%增長(zhǎng)。然后對(duì)數(shù)據(jù)庫(kù)中Studentcourse2文件重命名為Studentcourse_2,最后把該文件從數(shù)據(jù)庫(kù)中移除。方法一:使用SQLServerManagementStudio方法二:使用SQL語(yǔ)言修改數(shù)據(jù)庫(kù)。命令如下所示:alterDATABASEstudentcourseaddfilegroupgroup2-新增group2文件組GO,3修改數(shù)據(jù)庫(kù),4.1.3管理數(shù)據(jù)庫(kù),4.1.3管理數(shù)據(jù)庫(kù),alterDATABASEstudentcourseaddfile(NAME=studentcourse2,-新增studentcourse2次數(shù)據(jù)文件FILENAME=C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDATAstudentcourse2.ndf,SIZE=2MB,MAXSIZE=50MB,FILEGROWTH=1MB)tofilegroupgroup2GoalterDATABASEstudentcoursemodifyfile-修改studentcourse主數(shù)據(jù)文件的文件增長(zhǎng)為2MB(NAME=studentcourse,FILEGROWTH=2MB)GoalterDATABASEstudentcourseaddLOGfile-新增studentcourse_log2日志文件(NAME=Nstudentcourse_log2,FILENAME=C:ProgramFilesMicrosoftSQLServerMSSQL.1MSSQLDATAstudentcourse_log2.ldf,SIZE=1MB,MAXSIZE=100MB,FILEGROWTH=10%)GoalterDATABASEstudentcoursemodifyfile(name=studentcourse2,newname=studentcourse_2)-對(duì)數(shù)據(jù)庫(kù)中studentcourse2次數(shù)據(jù)文件重命名成studentcourse_2GoalterDATABASEstudentcourseremovefilestudentcourse_2-從數(shù)據(jù)庫(kù)中移除studentcourse_2次要數(shù)據(jù)文件,1)命令格式DBCCSHRINKDATABASE(數(shù)據(jù)庫(kù)名,Target_Percent)Notruncate|Truncateonly2)功能壓縮指定數(shù)據(jù)庫(kù)?!纠?.6】壓縮學(xué)生選課studentcourse數(shù)據(jù)庫(kù),使其最大可用空間為30%。方法一:使用SQLServerManagementStudio壓縮數(shù)據(jù)庫(kù)方法二:使用SQL命令壓縮數(shù)據(jù)庫(kù)DBCCSHRINKDATABASE(Studentcourse,30),4.1.3管理數(shù)據(jù)庫(kù),5壓縮數(shù)據(jù)庫(kù),4.1.3管理數(shù)據(jù)庫(kù),【例4.7】壓縮學(xué)生選課數(shù)據(jù)庫(kù)studentcourse中的一個(gè)secondsc次數(shù)據(jù)文件,將其壓縮為2MB。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。DBCCSHRINKFILE(secondsc,2),5壓縮數(shù)據(jù)庫(kù),4.2.1數(shù)據(jù)系統(tǒng)視圖,1Sysobjects系統(tǒng)視圖2Syscolumns系統(tǒng)視圖3Sysindexes系統(tǒng)視圖4Sysusers系統(tǒng)視圖5Sysdatabases系統(tǒng)視圖6Sysdepends系統(tǒng)視圖7Sysconstraints系統(tǒng)視圖,4.2數(shù)據(jù)表的創(chuàng)建,數(shù)據(jù)類型及其確定原則SQLServer的九大類數(shù)據(jù)類型1)整型數(shù)據(jù)類型(Integer)2)精確數(shù)字?jǐn)?shù)據(jù)類型(ExactNumeric)3)近似數(shù)字?jǐn)?shù)據(jù)類型(ApproximateNumeric)4)貨幣數(shù)據(jù)類型(Monetary)5)日期和時(shí)間數(shù)據(jù)類型(DateTime)6)字符數(shù)據(jù)類型(Character)7)二進(jìn)制數(shù)據(jù)類型8)特殊數(shù)據(jù)類型9)自定義數(shù)據(jù)類型(UDT)EXEC,4.2.2數(shù)據(jù)類型,【例4.10】建一個(gè)以Datetime為基礎(chǔ)的出生日期(Birthday)可為空的數(shù)據(jù)類型。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。EXECSP_ADDTYPEBirthday,Datetime,Null,4.2.2數(shù)據(jù)類型,4.2.3創(chuàng)建數(shù)據(jù)表結(jié)構(gòu),1熟悉CREATETABLE語(yǔ)句的格式1)CREATETABLE語(yǔ)句的簡(jiǎn)化格式CREATETABLE服務(wù)器名.數(shù)據(jù)庫(kù)名.架構(gòu)名.|數(shù)據(jù)庫(kù)名.架構(gòu)名.|架構(gòu)名.數(shù)據(jù)庫(kù)表名(列名數(shù)據(jù)類型NOTNULLidentity(初值,步長(zhǎng))DEFAULT默認(rèn)值UNIQUEPRIMARYKEYCLUSTERED|NONCLUSTERED,列名數(shù)據(jù)類型NOTNULLDEFAULT默認(rèn)值UNIQUE,n,列名AS計(jì)算列值的表達(dá)式,n,CONSTRAINT主鍵約束名PRIMARYKEY(屬性名),CONSTRAINT檢查約束名CHECK(邏輯表達(dá)式),n,F(xiàn)OREIGNKEY(外鍵屬性)REFERENCES參照表(參照屬性),n)ON文件組|默認(rèn)文件組,2)CREATETABLE語(yǔ)句的說(shuō)明,【例4.11】創(chuàng)建數(shù)據(jù)庫(kù)“book_shop”的數(shù)據(jù)表book,數(shù)據(jù)表由書號(hào)、書名、出版社、出版日期、單價(jià)、數(shù)量、總價(jià)(單價(jià)*數(shù)量)、電子郵件地址和數(shù)據(jù)庫(kù)表使用者字段組成。其中書號(hào)列定義為主鍵并且為系統(tǒng)自動(dòng)編號(hào)即標(biāo)識(shí)列,種子值(起始值)為1000,增量為1,要求出版社字段的值只能是高教、浙大、電子和中央四個(gè)之一,電子郵件地址字段中必須包含符號(hào),單價(jià)必須大于0,數(shù)量必須大于等于0,出版日期的默認(rèn)值設(shè)置為當(dāng)前日期函數(shù)。(1)標(biāo)識(shí)IDENTITY屬性(2)計(jì)算所得的列(3)空值NULL約束(4)PRIMARYKEY約束(5)UNIQUE約束(6)DEFAULT約束(7)CHECK約束(8)FOREIGNKEY約束,方法一:使用SQLServerManagementStudio方法二:使用命令。EXECsp_helpdbstudentcourseCREATEdatabasebookshopGoCREATETABLEbook(書號(hào)intidentity(1000,1)NOTFORREPLICATIONPRIMARYKEYCLUSTERED,書名char(20)notnull,出版社char(20),出版日期datetimeDEFAULT(getdate(),單價(jià)smallintcheck(單價(jià)>0),數(shù)量smallintcheck(數(shù)量>=0),總價(jià)as單價(jià)*數(shù)量,電子郵件地址varchar(25),check(電子郵件地址like%),check(出版社in(高教,浙大,電子,中央),2)CREATETABLE語(yǔ)句的說(shuō)明,【例4.12】創(chuàng)建數(shù)據(jù)庫(kù)學(xué)生選課“studentcourse”的數(shù)據(jù)表S、C、SC,數(shù)據(jù)表結(jié)構(gòu)如表3.6,表3.7,表3.8所示。各表的完整性約束如表3.9,表3.10,表3.11所示。方法一:使用SQLServerManagementStudio創(chuàng)建數(shù)據(jù)表方法二:使用SQL命令。1)創(chuàng)建課程表C的語(yǔ)句如下:CREATETABLEC(課程號(hào)Char(3)NOTNULL,課程名Varchar(20)NOTNULL,學(xué)分SmallintNULL,預(yù)選課程號(hào)Char(3)NULL,教師Char(8)NULL,CONSTRAINTFK_PcnoFOREIGNKEY(預(yù)選課程號(hào))REFERENCESC(課程號(hào)),CONSTRAINTCK_CnoCHECK(課程號(hào)Like0-90-9),CONSTRAINTPK_CPRIMARYKEYCLUSTERED(課程號(hào)ASC)ONPRIMARY,2)CREATETABLE語(yǔ)句的說(shuō)明,【例4.12】創(chuàng)建數(shù)據(jù)庫(kù)學(xué)生選課“studentcourse”的數(shù)據(jù)表S、C、SC,數(shù)據(jù)表結(jié)構(gòu)如表3.6,表3.7,表3.8所示方法二:使用SQL命令。2)創(chuàng)建學(xué)生基本信息表S的語(yǔ)句如下:CREATETABLES(學(xué)號(hào)Char(6)NOTNULLDEFAULT(J0400),姓名Char(8)NOTNULL,性別Char(2)NOTNULL,出生日期DatetimeNOTNULLDEFAULT(19800101),系Varchar(20)NOTNULL,電話Char(8)NULL,CHECK(學(xué)號(hào)LikeA-Z0-90-90-90-9),CHECK(性別=女OR性別=男),CHECK(電話Like0-90-90-9-0-90-90-90-9),CONSTRAINTPK_SPRIMARYKEYCLUSTERED(學(xué)號(hào)ASC)ONPRIMARY,2)CREATETABLE語(yǔ)句的說(shuō)明,【例4.12】創(chuàng)建數(shù)據(jù)庫(kù)學(xué)生選課“studentcourse”的數(shù)據(jù)表S、C、SC,數(shù)據(jù)表結(jié)構(gòu)如表3.6,表3.7,表3.8所示各表的完整性約束如表3.9,表3.10,表3.11所示。方法二:使用SQL命令。3)創(chuàng)建學(xué)生選課數(shù)據(jù)表SC的語(yǔ)句如下:CREATETABLESC(學(xué)號(hào)Char(6)NOTNULL,課程號(hào)Char(3)NOTNULL,成績(jī)SmallintNULL,FOREIGNKEY(課程號(hào))REFERENCESC(課程號(hào)),FOREIGNKEY(學(xué)號(hào))REFERENCESS(學(xué)號(hào)),CHECK(成績(jī)>=(0)AND成績(jī)<=(100)OR成績(jī)ISNULL),PRIMARYKEYCLUSTERED(學(xué)號(hào)ASC,課程號(hào)ASC)),2)CREATETABLE語(yǔ)句的說(shuō)明,【例4.13】返回有關(guān)所有對(duì)象的信息。USEMaster;GOEXECSp_Help;GO【例4.14】返回學(xué)生選課“studentcourse”中學(xué)生表的信息。USEStudentcourseGOEXECSp_Helps,4.2.5查看數(shù)據(jù)表,1修改表的結(jié)構(gòu),1)命令格式ALTERTABLEALTERCOLUMN類型(寬度)NULL|NOTNULL|ADD類型(寬度)NULL|NOTNULL完整性約束,n|DROPCOLUMNCASCADERESTRICT,n|DROPCONSTRAINT|ALL,n2)功能ALTERTABLE:將要修改的當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表的表名。ALTERCOLUMN:修改當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表的指定屬性。ADD:向當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表增加指定屬性或列級(jí)完整性約束。DROPCOLUMN:刪除當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表中的指定屬性。DROP:刪除當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表中的指定列級(jí)完整性約束。,4.2.6修改數(shù)據(jù)表,【例4.15】修改當(dāng)前數(shù)據(jù)庫(kù)“studentcourse”中S表的系屬性改成char(25),增加一個(gè)入學(xué)時(shí)間字段,它的數(shù)據(jù)類型為datetime,并設(shè)置默認(rèn)值為getdate(),最后刪除入學(xué)時(shí)間字段。方法一:使用SQLServerManagementStudio方法二:使用命令。EXECsp_helpdbstudentcourseALTERTABLEsALTERCOLUMN系char(25)GoALTERTABLEsADD入學(xué)時(shí)間datetimeGoALTERTABLEsADDCONSTRAINTDF_sjDEFAULT(getdate()for入學(xué)時(shí)間,4.2.6修改數(shù)據(jù)表,2修改表的名稱,1)命令格式Sp_rename,2)功能重命名當(dāng)前數(shù)據(jù)庫(kù)中的指定數(shù)據(jù)表名?!纠?.16】重命名數(shù)據(jù)庫(kù)bookshop的數(shù)據(jù)表book名稱,改為“書籍資料”。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。Sp_renamebook,書籍資料,4.2.6修改數(shù)據(jù)表,1)命令格式DROPTABLE表名2)功能刪除表【例4.17】刪除當(dāng)前數(shù)據(jù)庫(kù)中的表S。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。DROPTABLES,4.2.7刪除數(shù)據(jù)表,4.3.1使用SQLServerManagementStudio插入、修改與刪除數(shù)據(jù),4.3數(shù)據(jù)庫(kù)表的操作,4.3.2使用T-SQL語(yǔ)句進(jìn)行插入、修改和刪除數(shù)據(jù),1插入數(shù)據(jù)2更新數(shù)據(jù)3刪除記錄,插入數(shù)據(jù)記錄的方法有三種,第一種是利用SQLServerManagementStudio,第二種是使用SELECT查詢語(yǔ)句(本節(jié)暫不介紹),第三種是使用INSERT命令。1)命令格式INSERTINTO數(shù)據(jù)表名(列名表)VALUES(元組值)INSERTINTO數(shù)據(jù)表名(列名表)SELECT查詢語(yǔ)句INSERTINTO數(shù)據(jù)表名(列名表)DEFAULTVALUES2)功能向指定數(shù)據(jù)表的屬性列插入數(shù)據(jù),VALUES后跟的元組值為屬性列提供數(shù)據(jù)。其中列名表中的屬性排列順序和VALUES后跟的元組值的排列順序要一致。對(duì)應(yīng)的數(shù)據(jù)類型要一致。如果沒(méi)有指定列名表,則表示數(shù)據(jù)表中的所有屬性列?!癉EFAULTVALUES”選項(xiàng)會(huì)將默認(rèn)值插入到該屬性列中,如果某列沒(méi)有默認(rèn)值,允許則向該列插入空值NULL,如果某列不允許空值也沒(méi)有默認(rèn)值,則會(huì)出錯(cuò)。,1插入數(shù)據(jù),【例4.19】以下示例使用屬性列顯式指定插入到每個(gè)列的值。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。USEStudentcourseGOINSERTINTOs(學(xué)號(hào),姓名,性別,出生日期,系)VALUES(L0401,張?jiān)讫?男,1987-11-11,路橋系)GOSELECT*FROMs,1插入數(shù)據(jù),【例4.20】將查詢結(jié)果插入數(shù)據(jù)表,如將學(xué)號(hào)L0401、成績(jī)80以及課程表中所有課程號(hào)插入到sc中。方法一:使用SQLServerManagementStudio方法二:使用SQL命令。USEStudentcourseGOINSERTINTOscSELECTL0401,課程號(hào),80FROMcGOSELECT*FROMsc,1插入數(shù)據(jù),1)命令格式UPDATE基本表名SET列名=值表達(dá)式,列名=值表達(dá)式WHERE條件表達(dá)式2)功能更新指定基本表,滿足WHERE子句條件的記錄的指定屬性值。其中值表達(dá)式可以是常量、變量、表達(dá)式。若缺省WHERE,則修改表中的所有元組。但在進(jìn)行修改操作時(shí),需注意數(shù)據(jù)庫(kù)的一致性?!纠?.21】更新s表中的所有行出生日期列中的值變?yōu)樵錾掌谥导?。方法一:使用SQLServerManagementStudio方法二:使用SQL命令USEStudentcourseGOUPDATEsSET出生日期=出生日期+1,2更新數(shù)據(jù),【例4.22】將選C01課程的學(xué)號(hào)是L0401的學(xué)生的成績(jī)改成85分。USEStudentcourseGOUPDATEscSET成績(jī)=85WHERE課程號(hào)=C01AND學(xué)號(hào)=L0401GOSELECT*FROMscGO【例4.23】將張?jiān)讫垖W(xué)生的成績(jī)減少5分。USEStudentcourseGOUPDATEscSET成績(jī)=成績(jī)-5WHERE學(xué)號(hào)IN(SELECT學(xué)號(hào)FROMsWHERE姓名=張?jiān)讫?GOSELECT*FROMsc,2更新數(shù)據(jù),1)命令格式DELETEFROM基本表名WHERE條件表達(dá)式2)功能刪除表【例4.24】刪除學(xué)號(hào)為L(zhǎng)0401的學(xué)生選課信息。USEStudentcourseGODELETEFROMscWhere學(xué)號(hào)=L0401GOSELECT*FROMsc【例4.25】從SC表中刪除所有行USEStudentcourseGODELETEFROMscGOSELECT*FROMsc,3刪除記錄,4.刪除所有行,1)命令格式TRUNCATETABLE數(shù)據(jù)庫(kù)名.架構(gòu)名.|架構(gòu)名.表名;2)功能使用TRUNCATETABLE命令刪除所有行?!纠?.26】從學(xué)生選課數(shù)據(jù)表SC中刪除所有行。TRUNCATETABLEstudentcourse.DBO.scGOSELECT*FROMsc,1索引的作用1)加速數(shù)據(jù)檢索2)優(yōu)化查詢3)強(qiáng)制數(shù)據(jù)完整性2索引的分類1)聚集索引2)非聚集索引3)唯一索引,4.4索引管理,4.4.1索引概述,1)命令格式CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEX索引名ON數(shù)據(jù)表名|視圖名(字段名表ASC|DESC,n)WITHPAD_INDEX,FILLFACTOR=填充因子,IGNORE_DUP_KEY,STATISTICS_NORECOMPUTEON文件組名2)功能只有在指定的索引名稱存在時(shí),才能使用DROPEXISTING選項(xiàng),該項(xiàng)說(shuō)明首先刪除指定表的索引后再重新構(gòu)造它?!癠NIQUE”表示建立唯一索引。CLUSTERED表示建立聚集索引,NOCLUSTERED表示建立非聚集索引。,4.4.2創(chuàng)建索引,4.4.2創(chuàng)建索引,表4.11“studentcourse”索引情況表,【例4.28】使用SQL命令,在數(shù)據(jù)庫(kù)“studentcourse”中的數(shù)據(jù)表S中,關(guān)于“學(xué)號(hào)”建立聚集索引,關(guān)于“姓名”建立非聚集索引。CREATEINDEXIN_姓名ons(姓名)CREATEuniqueclusteredINDEXIN_學(xué)號(hào)ons(學(xué)號(hào))WITHpad_index,fillfactor=100-填充因子為100【例4.29】為數(shù)據(jù)庫(kù)“studentcourse”中的數(shù)據(jù)表關(guān)于c.課程名降序建立唯一索引IN_課程名。IFEXISTS(selectnamefromsysindexeswherename=IN_課程名)DROPINDEXc.IN_課程名GoUSEstudentcourseCREATEuniqueINDEXIN_課程名onc(課程名desc)。,4.4.2創(chuàng)建索引,1)命令格式DROPINDEX索引名,n2)功能刪除指定的索引。可以列出多個(gè)要?jiǎng)h除的索引名。利用DROPINDEX命令刪除通過(guò)定義PRIMARYKEY或UNIQUE約束創(chuàng)建的索引,必須先刪除指定的約束。在系統(tǒng)表的索引不能使用DROPINDEX刪除。刪除表中的聚集索引,將使表中的所在非聚集索引重建?!纠?.32】刪除數(shù)據(jù)庫(kù)“studentcourse”中,數(shù)據(jù)表sc中的索引IN_成績(jī)、數(shù)據(jù)表c中的索引IN_課程名。UsestudentcourseDROPINDEXsc.IN_成績(jī),c.IN_課程名,4.4.3刪除索引,1查看表中的索引1)命令格式sp_helpindexobjname=表或視圖的名稱2)功能報(bào)告有關(guān)表或視圖上索引的信息,當(dāng)前數(shù)據(jù)庫(kù)中表或視圖的名稱的數(shù)據(jù)類型為nvarchar(776)?!纠?.33】查看“studentcourse”數(shù)據(jù)庫(kù)中的數(shù)據(jù)表S上索引的類型。運(yùn)行結(jié)果如圖4.59所示。UsestudentcourseGOsp_helpindexs,4.4.4查看索引,【例4.36】修改在【例4.27】中創(chuàng)建的索引IX_teacher,修改后的索引基于“教師”和“課程名”,成為組合索引。,4.4.5修改索引,