版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬武漢科技大學(xué)信息學(xué)院武漢科技大學(xué)信息學(xué)院數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(tǒng)概論An Introduction to Database System第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQLSQL武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1 SQL概述概述3.2 學(xué)生學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù)3.3 數(shù)據(jù)定義數(shù)據(jù)定義3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢3.5 數(shù)據(jù)更新數(shù)據(jù)更新3.6 視圖視圖3.7 小結(jié)小結(jié)武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.1 SQL概述概述vSQL(Structured Query Languag
2、e) 結(jié)構(gòu)化查詢語(yǔ)言,是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言vSQL是一個(gè)通用的、功能極強(qiáng)的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬SQL概述(續(xù))概述(續(xù))v3.1.1 SQL 的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展v3.1.2 SQL的特點(diǎn)的特點(diǎn)v3.1.3 SQL的基本概念的基本概念武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬SQL標(biāo)準(zhǔn)的進(jìn)展過程標(biāo)準(zhǔn)的進(jìn)展過程 標(biāo)準(zhǔn) 大致頁(yè)數(shù) 發(fā)布日期n SQL/86 1986.10n SQL/89(FIPS 127-1) 120頁(yè) 1989年n SQL/92 622頁(yè) 1992年n SQL99 1700頁(yè) 1999年n SQL2003 2003年武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.
3、1 SQL概述概述v3.1.1 SQL 的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展v3.1.2 SQL的特點(diǎn)的特點(diǎn)v3.1.3 SQL的基本概念的基本概念武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.1.2 SQL的特點(diǎn)的特點(diǎn)1.綜合統(tǒng)一n集數(shù)據(jù)定義語(yǔ)言(DDL),數(shù)據(jù)操縱語(yǔ)言(DML),數(shù)據(jù)控制語(yǔ)言(DCL)功能于一體。n可以獨(dú)立完成數(shù)據(jù)庫(kù)生命周期中的全部活動(dòng): 定義關(guān)系模式,插入數(shù)據(jù),建立數(shù)據(jù)庫(kù); 對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢和更新; 數(shù)據(jù)庫(kù)重構(gòu)和維護(hù) 數(shù)據(jù)庫(kù)安全性、完整性控制等n用戶數(shù)據(jù)庫(kù)投入運(yùn)行后,可根據(jù)需要隨時(shí)逐步修改模式,不影響數(shù)據(jù)的運(yùn)行。n數(shù)據(jù)操作符統(tǒng)一武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬2.高度非過程化高度非
4、過程化v非關(guān)系數(shù)據(jù)模型的數(shù)據(jù)操縱語(yǔ)言“面向過程面向過程”,必須制定存取路徑vSQL只要提出“做什么”,無須了解存取路徑。v 存取路徑的選擇以及SQL的操作過程由系統(tǒng)自動(dòng)完成。武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.面向集合的操作方式面向集合的操作方式v非關(guān)系數(shù)據(jù)模型采用面向記錄的操作方式,操作對(duì)象是一條記錄vSQL采用集合操作方式 操作對(duì)象、查找結(jié)果可以是元組的集合 一次插入、刪除、更新操作的對(duì)象可以是元組的集合武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬4.以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式以同一種語(yǔ)法結(jié)構(gòu)提供多種使用方式vSQL是獨(dú)立的語(yǔ)言 能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式vSQL又是嵌入式語(yǔ)言 SQL
5、能夠嵌入到高級(jí)語(yǔ)言(例如C,C+,Java)程序中,供程序員設(shè)計(jì)程序時(shí)使用武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬5.語(yǔ)言簡(jiǎn)潔,易學(xué)易用語(yǔ)言簡(jiǎn)潔,易學(xué)易用v SQL功能極強(qiáng),完成核心功能只用了9個(gè)動(dòng)詞。武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.1 SQL概述概述v3.1.1 SQL 的產(chǎn)生與發(fā)展的產(chǎn)生與發(fā)展v3.1.2 SQL的特點(diǎn)的特點(diǎn)v3.1.3 SQL的基本概念的基本概念武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬SQL的基本概念(續(xù))的基本概念(續(xù))SQL視圖視圖2視圖視圖1基本表基本表2基本表基本表1基本表基本表3基本表基本表4存儲(chǔ)文件存儲(chǔ)文件2存儲(chǔ)文件存儲(chǔ)文件1外模式外模式模模 式式內(nèi)模式內(nèi)模式SQL
6、支持關(guān)系數(shù)據(jù)庫(kù)三級(jí)模式結(jié)構(gòu)武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬SQL的基本概念(續(xù))的基本概念(續(xù))v 基本表n 本身獨(dú)立存在的表n SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)基本表n 一個(gè)(或多個(gè))基本表對(duì)應(yīng)一個(gè)存儲(chǔ)文件n 一個(gè)表可以帶若干索引v 存儲(chǔ)文件n 邏輯結(jié)構(gòu)組成了關(guān)系數(shù)據(jù)庫(kù)的內(nèi)模式n 物理結(jié)構(gòu)是任意的,對(duì)用戶透明v 視圖n 從一個(gè)或幾個(gè)基本表導(dǎo)出的表n 數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù)n 視圖是一個(gè)虛表n 用戶可以在視圖上再定義視圖武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1 SQL概述概述3.2 學(xué)生學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù)3.3
7、 數(shù)據(jù)定義數(shù)據(jù)定義3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢3.5 數(shù)據(jù)更新數(shù)據(jù)更新3.6 視圖視圖3.7 小結(jié)小結(jié)武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.2 學(xué)生學(xué)生-課程課程 數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)v學(xué)生-課程模式 S-T : 學(xué)生表:Student(Sno,Sname,Ssex,Sage,Sdept) 課程表:Course(Cno,Cname,Cpno,Ccredit) 學(xué)生選課表:SC(Sno,Cno,Grade) 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬Student表表學(xué)學(xué) 號(hào)號(hào)Sno姓姓 名名Sname性性 別別 Ssex年年 齡齡 Sage所所 在在 系系 Sdept20021512120021512220021
8、5123200515125李勇李勇劉晨劉晨王敏王敏張立張立男男女女女女男男20191819CSCSMAIS武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬Course表表課程號(hào)課程號(hào)Cno課程名課程名Cname先行課先行課Cpno學(xué)分學(xué)分Ccredit1234567數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)數(shù)學(xué)數(shù)學(xué)信息系統(tǒng)信息系統(tǒng)操作系統(tǒng)操作系統(tǒng)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)處理數(shù)據(jù)處理PASCAL語(yǔ)言語(yǔ)言516764243424武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬SC表表學(xué)學(xué) 號(hào)號(hào)Sno 課程號(hào)課程號(hào) Cno 成績(jī)成績(jī) Grade 200215121 200215121 200215121 200215122 200215122 1 2 3 2
9、3 92 85 88 90 80武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1 SQL概述概述3.2 學(xué)生學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù)3.3 數(shù)據(jù)定義數(shù)據(jù)定義3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢3.5 數(shù)據(jù)更新數(shù)據(jù)更新3.6 視圖視圖3.7 小結(jié)小結(jié)武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.3 數(shù)據(jù)定義數(shù)據(jù)定義 SQL的數(shù)據(jù)定義功能: 模式定義、表定義、視圖和索引的定義 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.3 數(shù)據(jù)定義數(shù)據(jù)定義v3.3.1 模式的定義與刪除模式的定義與刪除v3.3.2 基本表的定義、刪除與修改基本表的定義、刪除與修改v3.3.3 索引的建立與刪
10、除索引的建立與刪除武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬定義模式(續(xù))定義模式(續(xù)) 例1定義一個(gè)學(xué)生-課程模式S-T CREATE SCHEMA “S-T” AUTHORIZATION WANG; 為用戶WANG定義了一個(gè)模式S-T 例2CREATE SCHEMA AUTHORIZATION WANG; 隱含為用戶名WANGn 如果沒有指定,那么隱含為武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬定義模式(續(xù))定義模式(續(xù))v 定義模式實(shí)際上定義了一個(gè)命名空間命名空間v 在這個(gè)空間中可以定義該模式包含的數(shù)據(jù)庫(kù)對(duì)象,例如基本表、視圖、索引等。v 在CREATE SCHEMA中可以接受CREATE TABLE,
11、CREATE VIEW和GRANT子句。 CREATE SCHEMA AUTHORIZATION |武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬定義模式(續(xù))定義模式(續(xù))例3CREATE SCHEMA TEST AUTHORIZATION ZHANG CREATE TABLE TAB1(COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3) ); 為用戶ZHANG創(chuàng)建了一個(gè)模式TEST,并在其中定義了一個(gè)表TAB1。武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬二、刪除模式二、刪除模式n DROP SCHEMA CASCADE(級(jí)聯(lián)) 刪除模式的同時(shí)把
12、該模式中所有的數(shù)據(jù)庫(kù)對(duì)象全部刪除RESTRICT(限制) 如果該模式中定義了下屬的數(shù)據(jù)庫(kù)對(duì)象(如表、視圖等),則拒絕該刪除語(yǔ)句的執(zhí)行。 當(dāng)該模式中沒有任何下屬的對(duì)象時(shí) 才能執(zhí)行。武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬刪除模式(續(xù))刪除模式(續(xù))例4 DROP SCHEMA ZHANG CASCADE; 刪除模式ZHANG 同時(shí)該模式中定義的表TAB1也被刪除武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.3 數(shù)據(jù)定義數(shù)據(jù)定義v3.3.1 模式的定義與刪除模式的定義與刪除v3.3.2 基本表的定義、刪除與修改基本表的定義、刪除與修改v3.3.3 索引的建立與刪除索引的建立與刪除武漢科技大學(xué)武漢科技大學(xué) 陳彬陳
13、彬3.3.2 基本表的定義、刪除與修改基本表的定義、刪除與修改一、定義基本表一、定義基本表CREATE TABLE ( , , ); 如果完整性約束條件涉及到該表的多個(gè)屬性列,則必須定義在表級(jí)上,否則既可以定義在列級(jí)也可以定義在表級(jí)。 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬?qū)W生表表Student例5 建立“學(xué)生”表Student,學(xué)號(hào)是主碼,姓名取值唯一。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, /* 列級(jí)完整性約束條件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMA
14、LLINT, Sdept CHAR(20) ); 主碼主碼武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬課程表課程表Course 例6 建立一個(gè)“課程”表Course CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4) , Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); 先修課先修課 Cpno是外碼是外碼 被參照表是被參照表是Course被參照列是被參照列是Cno武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬?qū)W生選課表學(xué)生選課表SC 例例7
15、建立一個(gè)建立一個(gè)“學(xué)生選課學(xué)生選課”表表SCSCCREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /* 主碼由兩個(gè)屬性構(gòu)成,必須作為表級(jí)完整性進(jìn)行定義*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /* 表級(jí)完整性約束條件,Sno是外碼,被參照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno) /* 表級(jí)完整性約束條件, Cno是外碼,被參照表是Course*/); 武漢科技大學(xué)武漢
16、科技大學(xué) 陳彬陳彬二、數(shù)據(jù)類型二、數(shù)據(jù)類型vSQL中域的概念用數(shù)據(jù)類型來實(shí)現(xiàn)v定義表的屬性時(shí) 需要指明其數(shù)據(jù)類型及長(zhǎng)度 v選用哪種數(shù)據(jù)類型 n取值范圍 n要做哪些運(yùn)算 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬二、數(shù)據(jù)類型二、數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型含義含義CHAR(n)長(zhǎng)度為長(zhǎng)度為n的定長(zhǎng)字符串的定長(zhǎng)字符串VARCHAR(n)最大長(zhǎng)度為最大長(zhǎng)度為n的變長(zhǎng)字符串的變長(zhǎng)字符串INT長(zhǎng)整數(shù)(也可以寫作長(zhǎng)整數(shù)(也可以寫作INTEGER)SMALLINT短整數(shù)短整數(shù)NUMERIC(p,d)定點(diǎn)數(shù),由定點(diǎn)數(shù),由p位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有位數(shù)字(不包括符號(hào)、小數(shù)點(diǎn))組成,小數(shù)后面有d位數(shù)字位數(shù)
17、字REAL取決于機(jī)器精度的浮點(diǎn)數(shù)取決于機(jī)器精度的浮點(diǎn)數(shù)Double Precision取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)取決于機(jī)器精度的雙精度浮點(diǎn)數(shù)FLOAT(n)浮點(diǎn)數(shù),精度至少為浮點(diǎn)數(shù),精度至少為n位數(shù)字位數(shù)字DATE日期,包含年、月、日,格式為日期,包含年、月、日,格式為YYYY-MM-DDTIME時(shí)間,包含一日的時(shí)、分、秒,格式為時(shí)間,包含一日的時(shí)、分、秒,格式為HH:MM:SS武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬三、模式與表三、模式與表v 每一個(gè)基本表都屬于某一個(gè)模式v 一個(gè)模式包含多個(gè)基本表v 定義基本表所屬模式n 方法一:在表名中明顯地給出模式名 Create table “S-T”.S
18、tudent(.); /*模式名為 S-T*/Create table “S-T”.Cource(.);Create table “S-T”.SC(.); n 方法二:在創(chuàng)建模式語(yǔ)句中同時(shí)創(chuàng)建表 n 方法三:設(shè)置所屬的模式 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬模式與表(續(xù))模式與表(續(xù))v 創(chuàng)建基本表(其他數(shù)據(jù)庫(kù)對(duì)象也一樣)時(shí),若沒有指定模式,系統(tǒng)根據(jù)搜索路徑搜索路徑來確定該對(duì)象所屬的模式 v RDBMS會(huì)使用模式列表中第一個(gè)存在的模式第一個(gè)存在的模式作為數(shù)據(jù)庫(kù)對(duì)象的模式名 v 若搜索路徑中的模式名都不存在,系統(tǒng)將給出錯(cuò)誤 v 顯示當(dāng)前的搜索路徑: SHOW search_path; v 搜索路
19、徑的當(dāng)前默認(rèn)值是:$user, PUBLIC 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬模式與表(續(xù))模式與表(續(xù))v DBA用戶可以設(shè)置搜索路徑,然后定義基本表 SET search_path TO “S-T”,PUBLIC; Create table Student(.); 結(jié)果建立了S-T.Student基本表。RDBMS發(fā)現(xiàn)搜索路徑中第一個(gè)模式名S-T存在,就把該模式作為基本表Student所屬的模式。武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬四、修改基本表四、修改基本表ALTER TABLE ADD 完整性約束 DROP ALTER COLUMN ;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬修改基本表(續(xù))
20、修改基本表(續(xù))例8向Student表增加“入學(xué)時(shí)間”列,其數(shù)據(jù)類型為日期型。 ALTER TABLE Student ADD S_entrance DATE; 不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。 例9將年齡的數(shù)據(jù)類型由字符型(假設(shè)原來的數(shù)據(jù)類型是字符型)改為整數(shù)。 ALTER TABLE Student ALTER COLUMN Sage INT;例10增加課程名稱必須取唯一值的約束條件。 ALTER TABLE Course ADD UNIQUE(Cname); 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬五、刪除基本表五、刪除基本表 DROP TABLE RESTRICT| CA
21、SCADE;n RESTRICT:刪除表是有限制的。欲刪除的基本表不能被其他表的約束所引用如果存在依賴該表的對(duì)象,則此表不能被刪除n CASCADE:刪除該表沒有限制。在刪除基本表的同時(shí),相關(guān)的依賴對(duì)象一起刪除 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬刪除基本表刪除基本表(續(xù)續(xù)) 例11 刪除Student表 DROP TABLE Student CASCADE ;n基本表定義被刪除,數(shù)據(jù)被刪除n表上建立的索引、視圖、觸發(fā)器等一般也將被刪除 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬刪除基本表(續(xù))刪除基本表(續(xù))例12若表上建有視圖,選擇RESTRICT時(shí)表不能刪除 CREATE VIEW IS_Stud
22、ent AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=IS; DROP TABLE Student RESTRICT; -ERROR: cannot drop table Student because other objects depend on it武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬刪除基本表(續(xù))刪除基本表(續(xù))例12如果選擇CASCADE時(shí)可以刪除表,視圖也自動(dòng)被刪除 DROP TABLE Student CASCADE; -NOTICE: drop cascades to view IS_StudentSELECT * FROM
23、 IS_Student;-ERROR: relation IS_Student does not exist 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬刪除基本表(續(xù))刪除基本表(續(xù))序號(hào) 標(biāo)準(zhǔn)及主流數(shù)據(jù)庫(kù)的處理方式依賴基本表的對(duì)象SQL99Kingbase ESORACLE 9iMS SQLSERVER 2000RCRCC1.索引無規(guī)定2.視圖保留保留保留3.DEFAULT,PRIMARY KEY,CHECK(只含該表的列)NOT NULL 等約束4.Foreign Key5.TRIGGER6.函數(shù)或存儲(chǔ)過程保留保留保留保留保留DROP TABLE時(shí),SQL99 與 3個(gè)RDBMS的處理策略比較R表
24、示RESTRICT , C表示CASCADE 表示不能刪除基本表,表示能刪除基本表,保留表示刪除基本表后,還保留依賴對(duì)象 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.3 數(shù)據(jù)定義數(shù)據(jù)定義v3.3.1 模式的定義與刪除模式的定義與刪除v3.3.2 基本表的定義、刪除與修改基本表的定義、刪除與修改v3.3.3 索引的建立與刪除索引的建立與刪除武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.3.3 索引的建立與刪除索引的建立與刪除v 建立索引的目的:加快查詢速度v 誰(shuí)可以建立索引 DBA 或 表的屬主(即建立表的人) DBMS一般會(huì)自動(dòng)建立以下列上的索引 PRIMARY KEY UNIQUEv 誰(shuí) 維護(hù)索引 DBM
25、S自動(dòng)完成 v 使用索引 DBMS自動(dòng)選擇是否使用索引以及使用哪些索引武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬索索 引引v RDBMS中索引一般采用B+樹、HASH索引來實(shí)現(xiàn)nB+樹索引具有動(dòng)態(tài)平衡的優(yōu)點(diǎn) nHASH索引具有查找速度快的特點(diǎn)v 采用B+樹,還是HASH索引 則由具體的RDBMS來決定v 索引是關(guān)系數(shù)據(jù)庫(kù)的內(nèi)部實(shí)現(xiàn)技術(shù),屬于內(nèi)模式的范疇 v CREATE INDEX語(yǔ)句定義索引時(shí),可以定義索引是唯一索引、非唯一索引或聚簇索引 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬一、建立索引一、建立索引 v語(yǔ)句格式CREATE UNIQUE CLUSTER INDEX ON (, );武漢科技大學(xué)武漢科技
26、大學(xué) 陳彬陳彬建立索引(續(xù))建立索引(續(xù))例13 CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一個(gè)聚簇索引v 在最經(jīng)常查詢的列上建立聚簇索引以提高查詢效率 v 一個(gè)基本表上最多只能建立一個(gè)聚簇索引 v 經(jīng)常更新的列不宜建立聚簇索引 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬建立索引(續(xù))建立索引(續(xù)) 例14為學(xué)生-課程數(shù)據(jù)庫(kù)中的Student,Course,SC三個(gè)表建 立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno);CREATE UNIQUE INDE
27、X Coucno ON Course(Cno);CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); Student表按學(xué)號(hào)升序建唯一索引 Course表按課程號(hào)升序建唯一索引 SC表按學(xué)號(hào)升序和課程號(hào)降序建唯一索引武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬二、刪除索引二、刪除索引 vDROP INDEX ;刪除索引時(shí),系統(tǒng)會(huì)從數(shù)據(jù)字典中刪去有關(guān)該索引的描述。例15 刪除Student表的Stusname索引 DROP INDEX Stusname;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬第三章第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL3.1 SQL概述
28、概述3.2 學(xué)生學(xué)生-課程數(shù)據(jù)庫(kù)課程數(shù)據(jù)庫(kù)3.3 數(shù)據(jù)定義數(shù)據(jù)定義3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢3.5 數(shù)據(jù)更新數(shù)據(jù)更新3.6 視圖視圖3.7 小結(jié)小結(jié)武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬數(shù)據(jù)查詢數(shù)據(jù)查詢v 語(yǔ)句格式 SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ; 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.4 數(shù)據(jù)查詢數(shù)據(jù)查詢 v3.4.1 單表查詢單表查詢v3.4.2 連接查詢連接查詢v3.4.3 嵌套查詢嵌套查詢v3.4.4 集合查詢集合查詢v3.4.5 Select語(yǔ)句的一般形式語(yǔ)句的一般形式 武漢科技大學(xué)
29、武漢科技大學(xué) 陳彬陳彬3.4.1 單表查詢單表查詢 v 查詢僅涉及一個(gè)表:n一、 選擇表中的若干列n二、 選擇表中的若干元組n三、 ORDER BY子句n四、 聚集函數(shù)n五、 GROUP BY子句武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬一、一、 選擇表中的若干列選擇表中的若干列v查詢指定列例1 查詢?nèi)w學(xué)生的學(xué)號(hào)與姓名。SELECT Sno,SnameFROM Student; 例2 查詢?nèi)w學(xué)生的姓名、學(xué)號(hào)、所在系。SELECT Sname,Sno,SdeptFROM Student;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬2. 查詢?nèi)苛胁樵內(nèi)苛衯選出所有屬性列:n在SELECT關(guān)鍵字后面列出所有列
30、名 n將指定為 *例3 查詢?nèi)w學(xué)生的詳細(xì)記錄。SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 或SELECT *FROM Student; 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3. 查詢經(jīng)過計(jì)算的值查詢經(jīng)過計(jì)算的值 v SELECT子句的可以為: 算術(shù)表達(dá)式 字符串常量 函數(shù) 列別名 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬例4 查全體學(xué)生的姓名及其出生年份。SELECT Sname,2004-Sage /*假定當(dāng)年的年份為2004年*/FROM Student; 輸出結(jié)果:輸出結(jié)果: Sname 2004-Sage 李勇 1984 劉晨 1985 王敏
31、 1986 張立 1985 查詢經(jīng)過計(jì)算的值(續(xù))查詢經(jīng)過計(jì)算的值(續(xù))武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬查詢經(jīng)過計(jì)算的值(續(xù))查詢經(jīng)過計(jì)算的值(續(xù))例5 查詢?nèi)w學(xué)生的姓名、出生年份和所有系,要求用小寫字母表示所有系名SELECT Sname,Year of Birth: ,2004-Sage, LOWER(Sdept)FROM Student;輸出結(jié)果:輸出結(jié)果: Sname Year of Birth: 2004-Sage LOWER(Sdept) 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth:
32、1986 ma 張立 Year of Birth: 1985 is 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬查詢經(jīng)過計(jì)算的值(續(xù))查詢經(jīng)過計(jì)算的值(續(xù))v 使用列別名改變查詢結(jié)果的列標(biāo)題: SELECT Sname NAME,Year of Birth: BIRTH, 2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENTFROM Student;輸出結(jié)果: NAME BIRTH BIRTHDAY DEPARTMENT - - - - 李勇 Year of Birth: 1984 cs 劉晨 Year of Birth: 1985 is 王敏 Year of Birth
33、: 1986 ma 張立 Year of Birth: 1985 is武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.4.1 單表查詢單表查詢 v 查詢僅涉及一個(gè)表:n一、 選擇表中的若干列n二、 選擇表中的若干元組n三、 ORDER BY子句n四、 聚集函數(shù)n五、 GROUP BY子句武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬二、選擇表中的若干元組二、選擇表中的若干元組v 1. 消除取值重復(fù)的行 如果沒有指定DISTINCT關(guān)鍵詞,則缺省為ALL 例6 查詢選修了課程的學(xué)生學(xué)號(hào)。 SELECT Sno FROM SC;等價(jià)于:SELECT ALL Sno FROM SC;執(zhí)行上面的SELECT語(yǔ)句后,結(jié)果為:
34、 Sno200215121200215121200215121200215122200215122武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬消除取值重復(fù)的行(續(xù))消除取值重復(fù)的行(續(xù))v 指定DISTINCT關(guān)鍵詞,去掉表中重復(fù)的行 SELECT DISTINCT Sno FROM SC; 執(zhí)行結(jié)果: Sno200215121200215122武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬2.查詢滿足條件的元組查詢滿足條件的元組查 詢 條 件謂 詞比 較=,=,=,!=,!,!;NOT+上述比較運(yùn)算符確定范圍BETWEEN AND,NOT BETWEEN AND確定集合IN,NOT IN字符匹配LIKE,NOT
35、LIKE空 值IS NULL,IS NOT NULL多重條件(邏輯運(yùn)算)AND,OR,NOT表3.4 常用的查詢條件武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬(1) 比較大小比較大小例7 查詢計(jì)算機(jī)科學(xué)系全體學(xué)生的名單。 SELECT Sname FROM Student WHERE Sdept=CS; 例8 查詢所有年齡在20歲以下的學(xué)生姓名及其年齡。 SELECT Sname,Sage FROM Student WHERE Sage 20;例9 查詢考試成績(jī)有不及格的學(xué)生的學(xué)號(hào)。 SELECT DISTINCT Sno FROM SC WHERE Grade60; 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳
36、彬(2)確定范圍)確定范圍v 謂詞謂詞: BETWEEN AND NOT BETWEEN AND 例10 查詢年齡在2023歲(包括20歲和23歲)之間的學(xué)生的 姓名、系別和年齡 SELECT Sname,Sdept,SageFROM StudentWHERE Sage BETWEEN 20 AND 23; 例11 查詢年齡不在2023歲之間的學(xué)生姓名、系別和年齡 SELECT Sname,Sdept,Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23; 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬(3) 確定集合確定集合v 謂詞:謂詞:IN , NOT
37、 IN 例12查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS );例13查詢既不是信息系、數(shù)學(xué)系,也不是計(jì)算機(jī)科學(xué)系的學(xué)生的姓名和性別。SELECT Sname,SsexFROM Student WHERE Sdept NOT IN ( IS,MA,CS );武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬(4)字符匹配字符匹配v謂詞:謂詞: NOT LIKE ESCAPE 1) 匹配串為固定字符串例14 查詢學(xué)號(hào)為200215121的學(xué)生的詳細(xì)情況。 SELECT * F
38、ROM Student WHERE Sno LIKE 200215121;等價(jià)于: SELECT * FROM Student WHERE Sno = 200215121 ;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬字符匹配(續(xù))字符匹配(續(xù)) 2) 匹配串為含通配符的字符串例15 查詢所有姓劉學(xué)生的姓名、學(xué)號(hào)和性別。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname LIKE 劉%;例16 查詢姓歐陽(yáng)且全名為三個(gè)漢字的學(xué)生的姓名。 SELECT Sname FROM Student WHERE Sname LIKE 歐陽(yáng)_;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳
39、彬字符匹配(續(xù))字符匹配(續(xù))例17 查詢名字中第2個(gè)字為陽(yáng)字的學(xué)生的姓名和學(xué)號(hào)。 SELECT Sname,Sno FROM Student WHERE Sname LIKE _陽(yáng)%;例18 查詢所有不姓劉的學(xué)生姓名。 SELECT Sname,Sno,Ssex FROM Student WHERE Sname NOT LIKE 劉%;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬字符匹配(續(xù))字符匹配(續(xù))3) 使用換碼字符將通配符轉(zhuǎn)義為普通字符 例19 查詢DB_Design課程的課程號(hào)和學(xué)分。 SELECT Cno,Ccredit FROM Course WHERE Cname LIKE DB_D
40、esign ESCAPE ;例20 查詢以DB_開頭,且倒數(shù)第3個(gè)字符為 i的課程的詳細(xì)情況。 SELECT * FROM Course WHERE Cname LIKE DB_%i_ _ ESCAPE ; ESCAPE 表示表示“ ” 為換碼字符為換碼字符 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬(5) 涉及空值的查詢涉及空值的查詢n 謂詞:謂詞: IS NULL 或 IS NOT NULLn “IS” 不能用 “=” 代替 例21 某些學(xué)生選修課程后沒有參加考試,所以有選課記錄,但沒 有考試成績(jī)。查詢?nèi)鄙俪煽?jī)的學(xué)生的學(xué)號(hào)和相應(yīng)的課程號(hào)。 SELECT Sno,Cno FROM SC WHERE
41、Grade IS NULL例22 查所有有成績(jī)的學(xué)生學(xué)號(hào)和課程號(hào)。 SELECT Sno,Cno FROM SC WHERE Grade IS NOT NULL;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬(6) 多重條件查詢多重條件查詢v 邏輯運(yùn)算符:AND和 OR來聯(lián)結(jié)多個(gè)查詢條件 AND的優(yōu)先級(jí)高于OR 可以用括號(hào)改變優(yōu)先級(jí)v 可用來實(shí)現(xiàn)多種其他謂詞 NOT IN NOT BETWEEN AND 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬多重條件查詢(續(xù))多重條件查詢(續(xù))例23 查詢計(jì)算機(jī)系年齡在20歲以下的學(xué)生姓名。 SELECT Sname FROM Student WHERE Sdept= CS
42、AND Sage20;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬多重條件查詢(續(xù))多重條件查詢(續(xù))v 改寫改寫例例12例12 查詢信息系(IS)、數(shù)學(xué)系(MA)和計(jì)算機(jī)科學(xué)系(CS)學(xué)生的姓名和性別。SELECT Sname,SsexFROM StudentWHERE Sdept IN ( IS,MA,CS )可改寫為:SELECT Sname,SsexFROM StudentWHERE Sdept= IS OR Sdept= MA OR Sdept= CS ;武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬3.4.1 單表查詢單表查詢 v 查詢僅涉及一個(gè)表:n一、 選擇表中的若干列n二、 選擇表中的若干元組n三、 ORDER BY子句n四、 聚集函數(shù)n五、 GROUP BY子句武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬三、三、ORDER BY子句子句 v ORDER BY子句n可以按一個(gè)或多個(gè)屬性列排序n升序:ASC;降序:DESC;缺省值為升序v 當(dāng)排序列含空值時(shí)nASC:排序列為空值的元組最后顯示nDESC:排序列為空值的元組最先顯示 武漢科技大學(xué)武漢科技大學(xué) 陳彬陳彬ORDER BY子句子句 (續(xù))(續(xù)) 例24 查詢選修了3號(hào)課程的學(xué)生的學(xué)號(hào)及其成績(jī),查詢結(jié)果按分?jǐn)?shù)降序排列。 SELECT Sno,Grade FROM SC WHERE Cno= 3 O
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 光伏組件回收產(chǎn)業(yè)鏈分析
- 二零二五版天然氣運(yùn)輸合同協(xié)議書范本模板(含運(yùn)輸保險(xiǎn))2篇
- 二零二五年度行政協(xié)議指導(dǎo)大全:環(huán)境保護(hù)合作協(xié)議3篇
- 婚慶行業(yè)安全生產(chǎn)工作總結(jié)
- 2025版物流企業(yè)物流外包合作協(xié)議6篇
- 二零二五年度綠色能源裝備制造個(gè)人股東股權(quán)轉(zhuǎn)讓合同2篇
- 光纖通信技術(shù)應(yīng)用知到智慧樹章節(jié)測(cè)試課后答案2024年秋四川職業(yè)技術(shù)學(xué)院
- 二零二五版實(shí)習(xí)期員工勞動(dòng)合同-實(shí)習(xí)期間安全防護(hù)3篇
- 二零二五年度酒店客房裝修與設(shè)施更新合同4篇
- 二零二五版?zhèn)D(zhuǎn)股投資合作協(xié)議書(產(chǎn)業(yè)鏈整合)3篇
- 北京市北京四中2025屆高三第四次模擬考試英語(yǔ)試卷含解析
- 2024年快遞行業(yè)無人機(jī)物流運(yùn)輸合同范本及法規(guī)遵循3篇
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 2024-2030年中國(guó)產(chǎn)教融合行業(yè)市場(chǎng)運(yùn)營(yíng)態(tài)勢(shì)及發(fā)展前景研判報(bào)告
- 2024年微生物檢測(cè)試劑行業(yè)商業(yè)計(jì)劃書
- 高中英語(yǔ)選擇性必修一單詞表
- 物業(yè)公司介紹
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗(yàn)收規(guī)范
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 中國(guó)直銷發(fā)展四個(gè)階段解析
- 2024屆浙江省寧波市鎮(zhèn)海區(qū)鎮(zhèn)海中學(xué)高一物理第一學(xué)期期末質(zhì)量檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論