版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、SQL 語句數(shù)據(jù)庫設(shè)計(jì),本章重點(diǎn)內(nèi)容: 1:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫、表以及約束。 2:學(xué)會使用SQL Server文檔,回顧,第一學(xué)期T-SQL語句的數(shù)據(jù)操作語法 1.添加數(shù)據(jù) 語法: INSERT INTO 表名(列1,列2, )VALUES (值1,值2 ) 例如: INSERT INTO Student (StuName,StuNo,BornDate) VALUES (張三,1000,1990-2-9) 2.修改數(shù)據(jù) 語法: UPDATE 表名 SET 列1 = 值1,列2 = 值2, WHERE (條件) 例如: UPDATE Student SET BornDate = 19
2、91-2-28 WHERE StudentName = 張三,回顧,第一學(xué)期T-SQL語句的數(shù)據(jù)操作語法 3.查詢數(shù)據(jù) 語法: SELECT 列1,列2, FROM 表名 WHERE (條件) ORDER BY 列名 例如: SELECT StuName,StuNo FROM Student WHERE BornDate = 1990-1-1 ORDER BY StuNo 4.刪除數(shù)據(jù) 語法: DELETE FROM 表名 WHERE (條件) 例如: DELETE FROM Student WHERE BornDate 1990-1-1,知識點(diǎn)一:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,回顧 數(shù)據(jù)庫
3、文件由以下三部分組成: 1:主數(shù)據(jù)文件:.mdf。 2:次要數(shù)據(jù)文件:.ndf。 3:日志文件:.ldf。 每個數(shù)據(jù)庫至少要包含兩個文件:一個數(shù)據(jù)文件和一個日志文件。數(shù)據(jù)文件中包含了數(shù)據(jù)庫的數(shù)據(jù)和對象,如表、視圖和索引等,日志文件中包含有用于恢復(fù)數(shù)據(jù)庫所需的信息。創(chuàng)建數(shù)據(jù)庫時,次要數(shù)據(jù)文件可選。一個數(shù)據(jù)庫可以有多個數(shù)據(jù)庫文件和多個日志文件。,知識點(diǎn)一:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫 語法: CREATE DATABASE 數(shù)據(jù)庫名 ON PRIMARY ( , n ) LOG ON ( , n ),知識點(diǎn)一:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,示例 -sysdatabases存儲在Ma
4、ster數(shù)據(jù)庫中 -創(chuàng)建數(shù)據(jù)庫 CREATE DATABASE MySchool ON ( -主數(shù)據(jù)文件 NAME=MySchool, FILENAME=D:appleMySchool.mdf, SIZE=5MB, MAXSIZE=100MB, FILEGROWTH=10% ) LOG ON ( -日志文件 NAME=MySchool_log, FILENAME=D:appleMySchool_log.ldf, SIZE=3MB, MAXSIZE=20MB, FILEGROWTH=10% ),知識點(diǎn)一:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,刪除數(shù)據(jù)庫 如果SQL Server中已存在MySchool
5、數(shù)據(jù)庫,再次運(yùn)行示例中的創(chuàng)建數(shù)據(jù)庫的語句,就會發(fā)現(xiàn)系統(tǒng)提示錯誤:該數(shù)據(jù)庫已存在,創(chuàng)建失敗。SQL Server 將數(shù)據(jù)庫的清單存放在master系統(tǒng)數(shù)據(jù)庫的sysdatabases表中,只需要借組SELECT語句查看sysdatabases表中是否存在數(shù)據(jù)庫MySchool的記錄就可以了。,知識點(diǎn)一:使用SQL語句創(chuàng)建和刪除數(shù)據(jù)庫,刪除數(shù)據(jù)庫 所以,示例1完整的T-SQL語句即如下所示。 USE master GO IF EXISTS (SELECT * FROM sysdatabases WHERE name = MySchool) DROP DATABASE MySchool CREATE
6、 DATABASE MySchool ON ( ) LOG ON ( ) GO EXISTS (查詢語句)檢測某個查詢是否存在。如果查詢語句返回的記錄結(jié)果不為空,則表示存在;否則表示不存在。,知識點(diǎn)二:使用SQL語句創(chuàng)建和刪除表,創(chuàng)建表 語法: CREATE TABLE 表名 ( 列1 數(shù)據(jù)類型 列的特征, 列2 數(shù)據(jù)類型 列的特征, ) 其中,“列的特征”包括該列是否為空(NULL),是否是標(biāo)識列(自動編號),是否有默認(rèn)值以及是否為主鍵等。 考慮各種開發(fā)語言的兼容性,表中各列名稱推薦使用英文縮寫。,知識點(diǎn)二:使用SQL語句創(chuàng)建和刪除表,示例 CREATE TABLE stuMarks ( m
7、arksId INT PRIMARY KEY IDENTITY(1,1) NOT NULL, mathScore INT NOT NULL, chineseScore INT NOT NULL, sId INT NOT NULL ) 同創(chuàng)建數(shù)據(jù)庫一樣,如果當(dāng)前數(shù)據(jù)庫中已存在stuMarks表,再次創(chuàng)建時系統(tǒng)將提示錯誤。我們需要預(yù)先檢測當(dāng)前數(shù)據(jù)庫中是否存在該表,如果存在,則先刪除,然后,再創(chuàng)建。 刪除表的語法如下: DROP TABLE 表名 例如: DROP TABLE stuMarks,知識點(diǎn)三:使用SQL語句創(chuàng)建和刪除約束,添加約束 在創(chuàng)建表時,我們可以在列后添加各種約束,但一般不這樣混合
8、使用,推薦將添加約束和創(chuàng)建表的語句分開編寫。 添加約束的語法如下。 語法: ALTER TABLE 表名 ADD CONSTRAINT 約束名 約束類型 具體的約束說明,知識點(diǎn)三:使用SQL語句創(chuàng)建和刪除約束,示例 -創(chuàng)建主鍵約束 ALTER TABLE student ADD CONSTRAINT PK_stuID PRIMARY KEY(stuID) -添加唯一約束。特點(diǎn):不允許相同,但允許有一個空值 ALTER TABLE student ADD CONSTRAINT UQ_stuCardNo UNIQUE (stuCardNo) -添加默認(rèn)約束 ALTER TABLE student
9、ADD CONSTRAINT DF_stuAddress DEFAULT(北京海淀中關(guān)村) FOR stuAddress -添加檢查約束 ALTER TABLE student ADD CONSTRAINT CK_stuSex CHECK(stuSex=男 OR stuSex=女) -添加主外鍵關(guān)系FOREIGN KEY (stuID)中的stuID是子表中的stuID -添加主外鍵的步驟: -1、確定誰是主表、子表 -2、在子表當(dāng)中添加一個字段,用來跟主表中的主鍵建立關(guān)系 ALTER TABLE stuMarks ADD CONSTRAINT FK_Id FOREIGN KEY (sId)
10、REFERENCES student(stuID),知識點(diǎn)三:使用SQL語句創(chuàng)建和刪除約束,刪除約束 如果錯誤地添加了約束,則可以刪除約束。 刪除約束的語法如下: 語法: ALTER TABLE 表名 DROP CONSTRAINT 約束名 例如,刪除Student表中地址列默認(rèn)約束的語句如下。 ALTER TABLE Student DROP CONSTRAINT DF_stuAddress,知識點(diǎn)二:使用SQL Server 文檔,如何查看SQL Server F1,第二章總結(jié),1:數(shù)據(jù)庫的物理實(shí)現(xiàn)一般步驟如下。 (1)創(chuàng)建數(shù)據(jù)庫。 (2)創(chuàng)建表。 (3)添加各種約束。 (4)創(chuàng)建數(shù)據(jù)庫的
11、登錄賬戶并授權(quán)。 2:創(chuàng)建數(shù)據(jù)庫或表時一般需要預(yù)先檢測是否存在該對象,SQL Server中的哪些數(shù)據(jù)庫可以從master系統(tǒng)數(shù)據(jù)庫的sysdatabases表中查詢,而一個數(shù)據(jù)庫中的哪些表可以從該數(shù)據(jù)庫的 系統(tǒng)表sysobjects中查詢。 3:使用CREATE DATABASE語句可以創(chuàng)建數(shù)據(jù)庫,使用DROP DATABASE語句可以刪除數(shù)據(jù)庫。 4:使用CREATE TABLE語句可以創(chuàng)建數(shù)據(jù)庫的表結(jié)構(gòu),使用DROP TABLE語句可以刪除表結(jié)構(gòu)。 5:使用ALTER TABLE 語句可以創(chuàng)建以下約束。 (1)主鍵約束(Primary Key Constraint)。 (2)唯一約束(U
12、nique Constraint)。 (3)檢查約束(Check Constraint)。 (4)默認(rèn)約束(Default Constraint)。 (5)外鍵約束(Foreign Key Constraint)。,第三章目標(biāo),本章重點(diǎn)內(nèi)容: 1:T-SQL中變量的聲明與賦值 2:PRINT、SELECT輸出語句 3:邏輯控制語句和批處理指令,知識點(diǎn)一:使用變量,T-SQL中的變量分為局部變量和全局變量。局部變量的使用也是先聲明,再賦值。而全局變量由系統(tǒng)定義和維護(hù),我們可以直接使用,但一般不自定義全局變量。 一:局部變量 T-SQL中,局部變量的名稱必須以標(biāo)記作為前綴。語法如下: DECLAR
13、E 局部變量名稱 數(shù)據(jù)類型 例如: DECLARE name VARCHAR(8) DECLARE number INT,知識點(diǎn)一:使用變量,T-SQL語言中,為局部變量賦值語句有SET語句和SELECT語句。其中: 1:SET賦值語句一般用于賦給變量指定的數(shù)據(jù)常量 2:SELECT賦值語句一般用于從表中查詢數(shù)據(jù),然后再賦給變量。 SELECT語句需要確保篩選的記錄不多于一條,如果查詢的記錄 多于一條,將把最后一條記錄的值賦給變量。 SET語句與SELECT的區(qū)別 1:SELECT支持同時對多個變量賦值,而SET語句不支持。 2:表達(dá)式返回多個值時,SET將出錯,而SELECT將返回的最后一個
14、值賦給變量。 3:表達(dá)式未返回值時,SET語句變量被賦NULL值,SELECT語句變量保持原值。,知識點(diǎn)一:使用變量,二:全局變量 SQL Server中的所有全局變量都使用兩個標(biāo)志作為前綴。常用的全局變量如下所示: 1:ERROR 最后一個T-SQL錯誤的錯誤號 2:IDENTITY 最后一次插入的標(biāo)識值 3:LANGUAGE 當(dāng)前使用的語言的名稱 4:MAX_CONNECTIONS 可以創(chuàng)建的同時連接的最大數(shù)目 5:ROWCOUNT 受上一個SQL語句影響的行數(shù) 6:SERVERNAME 本地服務(wù)器的名稱 7:SERVICENAME 該計(jì)算機(jī)上的SQL服務(wù)的名稱 8:TIMETICKS 當(dāng)
15、前計(jì)算機(jī)上每刻度的微妙數(shù) 9:TRANSCOUNT 當(dāng)前連接打開的事務(wù)數(shù) 10:VERSION SQL Server的版本信息,知識點(diǎn)二:輸出語句,T-SQL中支持輸出語句,用于輸出顯示處理的數(shù)據(jù)結(jié)果。常用的輸出語句有兩種,它們的語法分別如下: 語法: 1:PRINT 局部變量或字符串 2:SELECT 局部變量 AS 自定義列名 與C#語言類似,T-SQL語言中,數(shù)據(jù)類型的轉(zhuǎn)換也分為隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。在T-SQL語言中除了我們在第一學(xué)期中學(xué)習(xí)的CONVERT()函數(shù)能夠?qū)崿F(xiàn)數(shù)據(jù)類型顯式轉(zhuǎn)換功能之外,T-SQL還提供了CAST()函數(shù)。 語法: CAST(表達(dá)式 AS 數(shù)據(jù)類型) CONVE
16、RT (數(shù)據(jù)類型(長度),長度,樣式) CAST()函數(shù)用于將某種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型。CONVERT()函數(shù)的功能是將某種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型,第三個參數(shù)只限于對日期格式的轉(zhuǎn)換。,知識點(diǎn)三:邏輯控制語句,在T-SQL語言中,常用的邏輯控制語句有以下幾種。 1:順序機(jī)構(gòu)控制語句:BEGIN-END語句 2:分支結(jié)構(gòu)控制語句:IF-ELSE語句和CASE-END語句 3:循環(huán)結(jié)構(gòu)控制語句:WHILE語句 一:BEGIN-END語句 語法: BEGIN 語句或語句塊 END BEGIN-END語句的作用類似于C#語言的“”符號,它經(jīng)常在分支結(jié)構(gòu)語句和循環(huán)語句
17、中出現(xiàn),表示語句塊的開始和結(jié)束。在一個語句塊中可以包含另一個語句塊,知識點(diǎn)三:邏輯控制語句,二:IF-ELSE條件語句 IF-ELSE語句屬于分支結(jié)構(gòu),它與C#編程語言的IF語句類似,也是根據(jù)條件是否成立來確定程序的執(zhí)行方向。 語法: IF (條件) 語句或語句塊1 ELSE 語句或語句塊2 當(dāng)IF語句中的條件表達(dá)式為true時,執(zhí)行語句或語句塊1的代碼;否則執(zhí)行語句或語句塊2.同C#語言類似,ELSE為可選。,知識點(diǎn)三:邏輯控制語句,三:WHILE循環(huán)語句 WHILE循環(huán)語句可以根據(jù)某些條件重復(fù)執(zhí)行一條SQL語句或一個語句塊。通過使用WHILE關(guān)鍵字,可以確保只要指定的條件為true,就會重
18、復(fù)執(zhí)行語句,直至指定條件為false為止。 語法: WHILE (條件) BEGIN 語句或語句快 BREAK | CONTINUE END,知識點(diǎn)三:邏輯控制語句,四:CASE多分支語句 CASE-END語句計(jì)算一組條件表達(dá)式,并返回其中一個符合條件的結(jié)果。 語法: CASE WHEN 條件1 THEN 結(jié)果1 WHEN 條件2 THEN 結(jié)果2 ELSE 其他結(jié)果 END CASE語句表示如果“條件1”成立,則執(zhí)行“結(jié)果1”,其余類推。如果WHEN的條件都不匹配,則執(zhí)行ELSE后面的結(jié)果。ELSE可以省略。如果省略ELSE并且WHEN的條件表達(dá)式的結(jié)果都不為TRUE,則CASE-END語句
19、返回NULL。,知識點(diǎn)三:批處理,GO指令 GO就是批處理的標(biāo)志。它是一條或多條SQL語句的集合,SQL Server 將批處理指令編譯成一個可執(zhí)行單元,此單元稱為執(zhí)行計(jì)劃。 批處理的主要好處是能夠簡化數(shù)據(jù)庫的管理。,第三章總結(jié),1:變量的使用是先聲明,再賦值。局部變量前必須有“” 作為前綴,全局變量必須有兩個“”作為前綴。 2:變量的賦值有兩種方式:SET語句和SELECT語句。 3:輸出結(jié)果也有兩種方式:PRINT語句和SELECT語句。 4:數(shù)據(jù)類型轉(zhuǎn)換的兩個函數(shù):CAST()和CONVERT()。 5:控制流語句提供了條件操作所需的順序和邏輯。 6:語句快使用BEGIN-END。 7:
20、批處理可以提高語句執(zhí)行的效率,批處理結(jié)束的標(biāo)志是“GO”。,第四章目標(biāo),本章重點(diǎn)內(nèi)容: 介紹子查詢的概念,討論簡單子查詢,研究 EXISTS 和 IF 子查詢的用法。,知識點(diǎn)一:子查詢,語法: SELECT FROM 表1 WHERE 列1 (子查詢) 子查詢語句必須放置在一對圓括號內(nèi)。在列1后面除了“”運(yùn)算符外,還可以使用其他運(yùn)算符號。習(xí)慣上,外面的查詢稱為父查詢,圓括號中嵌入的查詢稱為子查詢。SQL Server執(zhí)行時,先執(zhí)行子查詢部分,求出子查詢部分的值,然后再執(zhí)行整個父查詢,返回最后的結(jié)果。因?yàn)樽硬樵冏鳛閃HERE條件的一部分,所以還可以和UPDATE、INSERT、DELETE一起使
21、用。 示例: SELECT StuNo,StuName,StuSex,BornDate,Address FROM Student WHERE BornDate (SELECT BornDate FROM Student WHERE StuName = 張三),知識點(diǎn)一:IN和NOT IN子查詢,1:IN 子查詢 使用=、等比較運(yùn)算符時,要求子查詢只能返回一條或空的記錄。在SQL Server中,當(dāng)子查詢跟隨在 = 、!= 、和=之后,不允許子查詢返回多條記錄。所以,只需將“=”改為“IN”就可以了。 示例: SELECT StuName FROM Student WHERE StuNo IN
22、( SELECT StuNo FROM Result WHERE SubjectNo = ( SELECT SubjectNo FROM Subject WHERE SubjectName = Java ) AND StuScore = 60 ),知識點(diǎn)一:IN和NOT IN子查詢,2:NOT IN 子查詢 如何查詢得到?jīng)]有參加Java課程考試的在讀學(xué)生名單?在上示例代碼的IN關(guān)鍵字之前加上否定的NOT就能獲得未參加考試的學(xué)生名單了。 示例: SELECT StuName FROM Student WHERE StuNo NOT IN ( SELECT StuNo FROM Result WH
23、ERE SubjectNo = ( SELECT SubjectNo FROM Subject WHERE SubjectName = Java ) AND StuScore = 60 ),知識點(diǎn)二:EXISTS和NOT EXISTS子查詢,1:EXISTS子查詢 語法: IF EXISTS (子查詢) 語句 如果子查詢的結(jié)果非空,則EXISTS(子查詢)將返回真(true),否則返回假(false)。 示例: IF EXISTS (SELECT * FROM sysDatabases WHERE name = MySchool) DROP DATABASE MySchool 2: NOT E
24、XISTS子查詢 EXISTS 和 IN 一樣,同樣允許添加NOT取反,NOT EXISTS表示不存在。,知識點(diǎn)三:子查詢注意事項(xiàng),1:子查詢語句可以嵌套在SQL語句中任何表達(dá)式出現(xiàn)的位置。 2:嵌套在父查詢SELECT語句的子查詢可包括以下幾類。 (1):SELECT 字句。 (2):FROM 字句。 (3):WHERE 字句。 (4):GROUP BY 字句。 (5):HAVING 字句。 3:在子查詢的SELECT子句不能出現(xiàn)TEXT、NTEXT或IMAGE數(shù)據(jù)類型的列。 4:只出現(xiàn)在子查詢中而沒有出現(xiàn)在父查詢中的表不能包含在輸出列中。,第四章總結(jié),1:總結(jié)我們曾學(xué)過的查詢,合并多個表中
25、的數(shù)據(jù)有以下三種方法。 (1)聯(lián)合 (UNION)合并多個數(shù)據(jù)集中的行。 (2)子查詢 將一個查詢嵌套在另一個查詢中。 (3)聯(lián)接 合并多個數(shù)據(jù)表中的列。 2:比較運(yùn)算符后面的子查詢只能返回單個數(shù)值。 3:IN子查詢后面可跟隨返回多條記錄的子查詢,用于檢測某列的值是否存在于某個范圍中。 4:通過在子查詢中使用EXISTS子句,可以對子查詢中的行是否存在進(jìn)行檢查。 5:子查詢可以出現(xiàn)在表達(dá)式出現(xiàn)的任何位置。,第六章:事務(wù)、視圖、索引,一:事務(wù) 事務(wù)是一種機(jī)制、一個操作序列,它包含了一組數(shù)據(jù)庫操作命令,并且把所有的命令作為一個整體一起向系統(tǒng)提交或撤銷操作請求,即這一組數(shù)據(jù)庫命令要么都執(zhí)行,要么都不
26、執(zhí)行。 (1)事務(wù)的四個屬性 1、原子性 事務(wù)是一個完整的操作,事務(wù)的個元素是不可分的(原子的)。 2、一致性 當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)。 3、隔離性 對數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨(dú)立的,它不應(yīng)以任何方式依賴于或影響其他事務(wù)。 4、持久性 事務(wù)的持久性指不管系統(tǒng)是否發(fā)生了故障,事務(wù)處理的結(jié)果都是永久的。,第六章:事務(wù)、視圖、索引,(2)如何執(zhí)行事務(wù) 語法: 1、開始事務(wù) BEGIN TRANSACTION 這個語句顯式地標(biāo)記一個事務(wù)的起始點(diǎn)。 2、提交事務(wù) COMMIT TRANSACTION 這個語句標(biāo)志一個事務(wù)成功結(jié)束。 3、回滾(撤銷)事務(wù) ROL
27、LBACK TRANSACTION,第六章:事務(wù)、視圖、索引,(3)事務(wù)應(yīng)用示例 BEGIN TRANSACTION DECLARE errorSum INT SET errorSum = 0 UPDATE Bank SET currentMoney = currentMoney 1000 WHERE customerName = 張三 SET errorSum = errorSum + ERROR UPDATE Bank SET currentMoney = currentMoney + 1000 WHERE customerName = 李四 SET errorSum = errorSum
28、 + ERROR IF (errorSum 0) BEGIN PRINT 交易失敗,回滾事務(wù)。 ROLLBACK TRANSACTION END ELSE BEGIN PRINT 交易成功,提交事務(wù)。 COMMIT TRANSACTION END,第六章:事務(wù)、視圖、索引,二:視圖 視圖是另一種查看數(shù)據(jù)庫中一個或多個表中的數(shù)據(jù)的方法。視圖是一種虛擬表,通常是作為來自一個或多表的行或列的子集創(chuàng)建的。它限制數(shù)據(jù)檢索更容易。開發(fā)人員有時需要隱藏某些行或列中的信息,通過使用視圖,用戶可以靈活地訪問他們需要的數(shù)據(jù),同時保證同一個表或其他表中的其他數(shù)據(jù)的安全性。 (1) 語法:創(chuàng)建視圖 CREATE VI
29、EW view_name AS 使用T-SQL語句刪除視圖 DROP VIEW view_name 通常,我們可以通過EXISTS關(guān)鍵字檢測sysobjects表中是否存在特定的視圖。如果存在,則可以利用DROP VIEW 語句刪除。代碼如下: IF EXISTS (SELECT * FROM sysobjects WHERE name = view_name) DROP VIEW view_name,第六章:事務(wù)、視圖、索引,(2) 示例 USE MySchool GO IF EXISTS (SELECT * FROM sysobjects WHERE name = vw_student_r
30、esult) DROP VIEW vw_student_result GO -創(chuàng)建視圖 CREATE VIEW vw_student_result AS SELECT stuName,stuAge,Address,stuSex,stuEmail FROM Student WHERE stuName = 張三 GO -查看視圖結(jié)果 SELECT * FROM vw_student_result,第六章:事務(wù)、視圖、索引,三:索引 索引是SQL Server編排數(shù)據(jù)的內(nèi)部方法,它為SQL Server提供一種方法來編排查詢數(shù)據(jù)的路由。索引頁是數(shù)據(jù)庫中存儲索引的數(shù)據(jù)頁。索引頁存放檢索數(shù)據(jù)行的關(guān)鍵字頁
31、以及該數(shù)據(jù)行的地址指針。 (1)索引分類 1、唯一索引 不允許兩行具有相同的索引值 2、主鍵索引 在數(shù)據(jù)庫關(guān)系圖中為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型。 3、聚集索引 在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。 4、非聚集索引 非聚集索引建立在索引頁上,在查詢數(shù)據(jù)時可以從索引中找到記錄存放的位置。 5、復(fù)合索引 在創(chuàng)建索引時,并不是只能對其中一列創(chuàng)建索引,與創(chuàng)建主鍵一樣,可以將多個列組合作為索引,這種索引稱為復(fù)合索引。 6、全文索引 全文索引是一種特殊類型的基于標(biāo)記的功能性索引,由SQL Server中全文引擎服務(wù)創(chuàng)建和維護(hù)。,第六章:事務(wù)、視圖
32、、索引,(2)創(chuàng)建索引 語法: CREATE UNIQUE CLUSTERED | NONCLUSTERED INDEX index_name ON table_name (column_name,column_name) WITH FILLFACTOR = X 1、NUIQUE指定唯一索引,可選。 2、CLUSTERED、NONCLUSTERED指定是聚集索引還是非聚集索引,可選。 3、FILLFACTOR表示填充因子,指定一個0100的值,該值指示索引頁填滿的空間所占的百分比。 (3)刪除索引 語法: DROP INDEX table_name.index_name 刪除索引時需要主意以下
33、幾點(diǎn)。 1、刪除表時,該表的所有索引同時會被刪除。 2、如果要刪除表的所有索引,首先要刪除非聚集索引,然后再刪除聚集索引。,第六章:事務(wù)、視圖、索引,(4)查看索引 1、用系統(tǒng)存儲過程sp_helpIndex查看 語法: sp_helpIndex Table_name 2、用視圖sys.indexes查看 語法: SELECT * FROM sys.indexes,第六章總結(jié),1:數(shù)據(jù)庫事務(wù)具有如下特性。 (1)原子性 (2)一致性 (3)隔離性 (4)持久性 2:事務(wù)可以分為如下類型。 (1)顯式事務(wù) (2)隱式事務(wù) (3)自動提交事務(wù) 3:Transact-SQL使用下列語句來管理事務(wù) (
34、1)BEGIN TRANSACTION (2)COMMIT TRANSACTION (3)ROLLBACK TRANSACTION 4:視圖是另一種查看數(shù)據(jù)庫中一個或多個表中的數(shù)據(jù)方法 5:視圖是一種虛擬表,通常是作為執(zhí)行查詢的結(jié)果而創(chuàng)建的 6:視圖充當(dāng)著對查詢中指定的表的篩選器 7:使用CREATE VIEW語句創(chuàng)建視圖 8:使用SELECT語句查看視圖的查詢結(jié)果 9:建立索引有助于快速檢索數(shù)據(jù),索引分為唯一索引、主鍵索引、聚集索引和非聚集索引,第七章目標(biāo),本章重點(diǎn)內(nèi)容: 本章將講解什么是存儲過程,同時介紹常用的系統(tǒng)存儲過程和擴(kuò)展存儲過程,然后講解如何創(chuàng)建并調(diào)用自定義存儲過程,包括存儲過程的
35、輸入?yún)?shù)和輸出參數(shù),以及為輸入?yún)?shù)賦默認(rèn)值。,第七章:存儲過程,(1)什么是存儲過程 存儲過程(Procedure)類似于C#語言中 的方法,它是SQL語句和控制語句的預(yù)編譯集合。存儲過程保存在數(shù)據(jù)庫里,可由應(yīng)用程序通過一個調(diào)用執(zhí)行,而且允許用戶聲明變量、邏輯控制語句以及其他強(qiáng)大的編程功能。 存儲過程可以只包含一條SELECT語句,也可以包含一系列使用控制流的SQL語句。 存儲過程分為系統(tǒng)存儲過程和用戶自定義存儲過程 使用存儲過程有以下優(yōu)點(diǎn)。 1、模塊化程序設(shè)計(jì) 只需創(chuàng)建一次存儲過程并將其存儲在數(shù)據(jù)庫中,以后即可在程序中調(diào)用該過程任意此。 2、執(zhí)行速度快、效率高 3、減少網(wǎng)絡(luò)流量 4、具有良好
36、的安全性,第七章:存儲過程,(2)系統(tǒng)存儲過程 SQL Server提供系統(tǒng)存儲過程,它們是一組預(yù)編譯的T-SQL語句。系統(tǒng)存儲過程提供了管理數(shù)據(jù)庫和更新表的機(jī)制,并充當(dāng)從系統(tǒng)表中檢索信息的快捷方式。 常用的系統(tǒng)存儲過程有以下。 1、sp_databases 列出服務(wù)器上的所有數(shù)據(jù)庫信息,包括數(shù)據(jù)庫名和數(shù)據(jù)大小。 2、 sp_helpdb 報告有關(guān)指定數(shù)據(jù)庫或所有數(shù)據(jù)庫的信息 3、sp_renamedb 更改數(shù)據(jù)庫的名稱 4、sp_tables 返回當(dāng)前環(huán)境下可查詢的表或視圖的信息 5、sp_columns 返回某個表或視圖的列信息,包括列的數(shù)據(jù)類型和長度等。 6、sp_stored_proc
37、edures 顯示存儲過程的列表,第七章:存儲過程,(3)用戶自定義的存儲過程 1、創(chuàng)建不帶參數(shù)的存儲過程 語法: CREATE PROCEDURE 存儲過程名 參數(shù)1 數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT, , 參數(shù)n 數(shù)據(jù)類型 = 默認(rèn)值 OUTPUT AS SQL語句 2、刪除存儲過程 DROP PROCEDURE 存儲過程名 一個完整的刪除過程最好是先判斷該存儲過程是否存在,然后再執(zhí)行刪除操作,其SQL語句如下。 IF EXISTS (SELECT * FROM sysobjects WHERE name = 存儲過程名) DROP PROCEDURE 存儲過程名 GO,第七章:存儲過程
38、,3、示例: USE MySchool GO IF EXISTS (SELECT * FROM sysobjects WHERE name = proc_studentsInfo) DROP PROCEDURE proc_studentsInfo GO CREATE PROCEDURE proc_studentsInfo AS SELECT * FROM Student WHERE stuName = 張三 GO -調(diào)用執(zhí)行存儲過程 EXEC proc_studentsInfo,第七章:存儲過程,4、創(chuàng)建帶輸入?yún)?shù)的存儲過程 存儲過程中的參數(shù)分為: (1)輸入?yún)?shù):可以在調(diào)用時向存儲過程傳遞參
39、數(shù),此類參數(shù)可用來在存儲過程中傳入值。 (2)輸出參數(shù):如果希望返回值,則可以使用輸出參數(shù),輸出參數(shù)后有”O(jiān)UTPUT“標(biāo)記,執(zhí)行存儲過程后,將把返回值存放在輸出參數(shù)中,可供其他T-SQL語句讀取訪問。 如果存儲過程的參數(shù)后面有”O(jiān)UTPUT“關(guān)鍵字,表示此參數(shù)為輸出參數(shù),否則視為輸入?yún)?shù),輸入?yún)?shù)還可以設(shè)置默認(rèn)值。 語法: EXECUTE 返回變量 = 存儲過程名 參數(shù)1 = 參數(shù)值1 OUTPUT | DEFAULT, , 參數(shù)1 = 參數(shù)值 n OUTPUT | DEFAULT,第七章:存儲過程,5、示例: IF EXISTS (SELECT * FROM sysobjects WHERE name = pro_query_num) DROP PROCEDURE pro_query_num GO CREATE PROCEDURE pro_query_num UnpassNum INT OUTPUT, TotalNum INT OUTPUT, SubjectName NVARCHAR(50), Pass INT AS DECLARE Date datetime DECLARE subjectNo INT SELECT Date = MAX(Result.ExamDate) FROM Result INNER JOIN Sub
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 永久性租房合同(2篇)
- 二零二五年度零星施工合同范本綠色節(jié)能建筑材料版3篇
- 二零二五年度民房水電設(shè)施安全風(fēng)險評估合同
- 2025年度土地征收與農(nóng)業(yè)轉(zhuǎn)移人口市民化合同范本
- 2025年度跨境電商化肥進(jìn)口代理服務(wù)合同
- 2025至2030年中國環(huán)氧無溶劑浸漬樹脂數(shù)據(jù)監(jiān)測研究報告
- 二零二五年度外貿(mào)代理業(yè)務(wù)全面合作協(xié)議書
- 二零二五年度離婚雙方子女監(jiān)護(hù)權(quán)及撫養(yǎng)費(fèi)支付協(xié)議
- 2025至2030年中國停車場綜合管理系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年五金電子制品項(xiàng)目投資價值分析報告
- 文檔協(xié)同編輯-深度研究
- 七年級數(shù)學(xué)新北師大版(2024)下冊第一章《整式的乘除》單元檢測習(xí)題(含簡單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級上冊寒假作業(yè)答案(人教版)
- 2024年財(cái)政部會計(jì)法律法規(guī)答題活動題目及答案一
- 2025年中考語文復(fù)習(xí)熱搜題速遞之說明文閱讀(2024年7月)
- 【企業(yè)作業(yè)成本在上海汽車集團(tuán)中的應(yīng)用研究案例7300字(論文)】
- 《民航服務(wù)溝通技巧》教案第6課巧妙化解沖突
- 化學(xué)用語專項(xiàng)訓(xùn)練
- 《了凡四訓(xùn)》課件
- 風(fēng)險矩陣法(詳細(xì))
評論
0/150
提交評論