版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8數(shù)據(jù)庫(kù)技術(shù)
天津科技大學(xué)
計(jì)算機(jī)基礎(chǔ)與信息技術(shù)教研部1目錄9.1數(shù)據(jù)庫(kù)概述9.2關(guān)系數(shù)據(jù)庫(kù) 9.3SQLite簡(jiǎn)介9.4SQL9.5視圖 9.1.1數(shù)據(jù)庫(kù)體系結(jié)構(gòu)數(shù)據(jù)庫(kù)(DataBase,DB)是指長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)、有組織的、統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是用于建立、使用、管理和維護(hù)數(shù)據(jù)庫(kù)的系統(tǒng)軟件,是數(shù)據(jù)庫(kù)系統(tǒng)的核心組成部分。大型:Oracle、Sybase、SQLServer、DB2等中小型數(shù)據(jù)庫(kù)管理系統(tǒng)有SQLite、MySQL、Access等國(guó)產(chǎn)自主研發(fā):螞蟻集團(tuán)OceanBase、華為GaussDB等數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)具有以下主要功能:(1)數(shù)據(jù)定義:定義數(shù)據(jù)庫(kù)的各種對(duì)象。(2)數(shù)據(jù)處理:數(shù)據(jù)的基本操作(3)數(shù)據(jù)庫(kù)的控制和管理:實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的控制和管理,確保數(shù)據(jù)正確有效和數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行。括數(shù)據(jù)的并發(fā)性控制、完整性控制、安全性控制和數(shù)據(jù)庫(kù)的恢復(fù)(4)數(shù)據(jù)庫(kù)的建立和維護(hù):數(shù)據(jù)庫(kù)的建立包括數(shù)據(jù)庫(kù)初始數(shù)據(jù)的輸入、轉(zhuǎn)換等數(shù)據(jù)庫(kù)的維護(hù)包括數(shù)據(jù)庫(kù)的轉(zhuǎn)儲(chǔ)、恢復(fù)、重組織與重構(gòu)造、性能監(jiān)視與分析等數(shù)據(jù)庫(kù)系統(tǒng)(DBS)數(shù)據(jù)庫(kù)系統(tǒng)(DataBaseSystem,DBS)是指帶有數(shù)據(jù)庫(kù)并利用數(shù)據(jù)庫(kù)技術(shù)進(jìn)行數(shù)據(jù)管理的計(jì)算機(jī)系統(tǒng)。數(shù)據(jù)庫(kù)系統(tǒng)的軟件(1)數(shù)據(jù)庫(kù)管理系統(tǒng)(2)操作系統(tǒng)(3)應(yīng)用系統(tǒng)(4)應(yīng)用開發(fā)工具:編程語(yǔ)言:C、Python、Java、PHP、Delphi、VB數(shù)據(jù)庫(kù)工具:SQLiteStudio等用戶用戶主要包括以下幾類。(1)終端用戶(2)應(yīng)用程序員(3)數(shù)據(jù)庫(kù)管理員(DataBaseAdministrator,DBA)數(shù)據(jù)庫(kù)中存儲(chǔ)和管理的數(shù)據(jù)都來(lái)源于現(xiàn)實(shí)世界的客觀事物,計(jì)算機(jī)不能直接處理這些具體事物?,F(xiàn)實(shí)世界信息世界
機(jī)器世界抽象(概念模型)抽象(數(shù)據(jù)模型)9.1.2概念模型9.1.2概念模型人們經(jīng)常使用實(shí)體聯(lián)系模型來(lái)表示概念模型。1.實(shí)體客觀存在并且可以相互區(qū)別的事物稱為實(shí)體。實(shí)體可以是具體的人、事、物。如一名學(xué)生、一本書、一門課程等;也可以是事件,如學(xué)生的一次選課、一場(chǎng)比賽、一次借書等。概念模型2.實(shí)體的屬性實(shí)體所具有的某一特性稱為屬性。如學(xué)生實(shí)體有學(xué)號(hào)、姓名、性別、出生日期、專業(yè)等多個(gè)屬性。屬性包括屬性名和屬性值,如:學(xué)號(hào)、姓名、性別、出生日期、專業(yè)等為屬性名,(13011103、許志華、男、06/12/1995、機(jī)械工程)為某個(gè)學(xué)生實(shí)體的屬性值。概念模型3.實(shí)體型用實(shí)體名及其屬性名來(lái)抽象描述同一類實(shí)體,稱為實(shí)體型。如:學(xué)生(學(xué)號(hào)、姓名、性別、出生日期、專業(yè))就是一個(gè)實(shí)體型,它描述的是學(xué)生這一類實(shí)體。概念模型4.實(shí)體集同類型實(shí)體的集合稱為實(shí)體集。如:全體學(xué)生就是一個(gè)實(shí)體集而(13011103、許志華、男、06/12/1995、機(jī)械工程)是這個(gè)實(shí)體集中的一個(gè)實(shí)體。概念模型5.實(shí)體間的聯(lián)系實(shí)體間的聯(lián)系通常是指兩個(gè)實(shí)體集之間的聯(lián)系。聯(lián)系有以下3種類型:(1)一對(duì)一聯(lián)系(1:1)(2)一對(duì)多聯(lián)系(1:n)(3)多對(duì)多聯(lián)系(m:n)概念模型一對(duì)一聯(lián)系(1:1) 如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中至多有一個(gè)實(shí)體與之對(duì)應(yīng);反之亦然,則稱A與B具有一對(duì)一聯(lián)系。例如:一個(gè)班級(jí)只有一個(gè)班長(zhǎng),而一個(gè)班長(zhǎng)只能在一個(gè)班級(jí)任職。班級(jí)和班長(zhǎng)之間具有一對(duì)一的聯(lián)系概念模型一對(duì)多聯(lián)系(1:n) 如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之對(duì)應(yīng);反之,對(duì)于實(shí)體集B中的每一個(gè)實(shí)體,實(shí)體集A中至多只有一個(gè)實(shí)體與之對(duì)應(yīng),則稱A與B具有一對(duì)多聯(lián)系。例如:一個(gè)班級(jí)有多個(gè)學(xué)生,而每個(gè)學(xué)生只在一個(gè)班級(jí)中學(xué)習(xí),則班級(jí)與學(xué)生之間具有一對(duì)多的聯(lián)系。概念模型多對(duì)多聯(lián)系(m:n) 如果對(duì)于實(shí)體集A中的每一個(gè)實(shí)體,實(shí)體集B中有n個(gè)實(shí)體(n≥0)與之對(duì)應(yīng);反之,對(duì)于實(shí)體集B中的每一個(gè)實(shí)體,實(shí)體集A中也有m個(gè)實(shí)體(m≥0)與之對(duì)應(yīng),則稱A與B具有多對(duì)多聯(lián)系。例如:一個(gè)學(xué)生可以選多門課,一門課也可以被多個(gè)學(xué)生選擇課程與學(xué)生之間具有多對(duì)多的聯(lián)系。概念模型6.E-R(Entity-Relationship實(shí)體-聯(lián)系)圖
包含實(shí)體、屬性和聯(lián)系E-R圖(1)實(shí)體:用矩形框表示(2)屬性:用橢圓形框表示,并用無(wú)向邊將其與對(duì)應(yīng)實(shí)體連接起來(lái)。(3)聯(lián)系:用菱形框表示,框內(nèi)寫明聯(lián)系名,并用無(wú)向邊分別與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)注聯(lián)系的類型(1:1,1:n或m:n)。關(guān)系模型數(shù)據(jù)模型是用來(lái)抽象和表示現(xiàn)實(shí)世界中事物與事物之間聯(lián)系的結(jié)構(gòu)模式。用二維表結(jié)構(gòu)表示實(shí)體及實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。9.2關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)庫(kù)是基于關(guān)系模型的數(shù)據(jù)庫(kù)。在關(guān)系數(shù)據(jù)庫(kù)中,數(shù)據(jù)存儲(chǔ)在二維結(jié)構(gòu)的表中,而一個(gè)關(guān)系數(shù)據(jù)庫(kù)中,包含多個(gè)數(shù)據(jù)表。關(guān)系術(shù)語(yǔ)(1)關(guān)系: 一個(gè)關(guān)系就是一張二維表,每個(gè)關(guān)系有一個(gè)關(guān)系名。如:學(xué)生(2)元組: 表中的一行即為一個(gè)元組,也稱為記錄。如一行(3)屬性:表中的一列即為一個(gè)屬性,也稱字段。如:學(xué)號(hào)、姓名、性別、出生日期、專業(yè)、生源地、民族、政治面貌、入學(xué)成績(jī)關(guān)系術(shù)語(yǔ)(4)域:屬性的取值范圍。性別屬性的域?yàn)槲谋荆?,女)入學(xué)成績(jī)屬性的域?yàn)?~600的數(shù)字關(guān)系術(shù)語(yǔ)(5)關(guān)鍵字關(guān)系中能唯一標(biāo)識(shí)元組的一個(gè)或一組屬性稱為關(guān)鍵字。如:學(xué)號(hào)(6)主關(guān)鍵字主關(guān)鍵字是在關(guān)系中指定的唯一標(biāo)識(shí)元組的關(guān)鍵字。一個(gè)關(guān)系中只能有一個(gè)主關(guān)鍵字。如:學(xué)號(hào)是主關(guān)鍵字。關(guān)系術(shù)語(yǔ)(7)外部關(guān)鍵字:如果一個(gè)關(guān)系R中的某個(gè)屬性不是本關(guān)系的主關(guān)鍵字,而是另一個(gè)關(guān)系S的主關(guān)鍵字,則稱該屬性為本關(guān)系R的外部關(guān)鍵字,R為參照關(guān)系,S為被參照關(guān)系。課程號(hào)是課程表的主關(guān)鍵字,學(xué)號(hào)是表學(xué)生表的主關(guān)鍵字,課程號(hào)和學(xué)號(hào)都是成績(jī)表的外部關(guān)鍵字關(guān)系術(shù)語(yǔ)(7)關(guān)系模式對(duì)關(guān)系的描述,它對(duì)應(yīng)一個(gè)關(guān)系的結(jié)構(gòu)。其格式為:課程表的關(guān)系模式為:關(guān)系名(屬性1,屬性2,…,屬性n)課程(課程號(hào),課程名,課時(shí),學(xué)分)關(guān)系完整性關(guān)系模型的完整性規(guī)則用于定義和保護(hù)表內(nèi)部或表之間的數(shù)據(jù)關(guān)系,是對(duì)關(guān)系的某種約束條件。包括:實(shí)體完整性參照完整性用戶定義完整性。關(guān)系完整性(1)實(shí)體完整性實(shí)體完整性也稱行完整性。實(shí)體完整性規(guī)定:關(guān)系中所有元組的主關(guān)鍵字值不能為空值。
如:
學(xué)生表中學(xué)號(hào)為主關(guān)鍵字,所有學(xué)生的學(xué)號(hào)不能為空關(guān)系完整性(2)參照完整性參照完整性規(guī)定:若一個(gè)關(guān)系R的外部關(guān)鍵字F是另一個(gè)關(guān)系S的主關(guān)鍵字,則R中的每一個(gè)元組在F上的值必須是S中某一元組的主關(guān)鍵字的值,或者取空值。成績(jī)表中課程號(hào)是外部關(guān)鍵字課程號(hào)是課程表的主關(guān)鍵字成績(jī)表中的所有課程號(hào)都必須是課程信息表中的某個(gè)課程號(hào)。關(guān)系完整性(3)用戶自定義完整性
用戶定義完整性是針對(duì)某一具體關(guān)系的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語(yǔ)義要求。例如:成績(jī)表,成績(jī)應(yīng)為數(shù)值型數(shù)據(jù),取值范圍為0~100學(xué)生表,性別為字符型數(shù)據(jù),取值范圍為(男,女)9.3SQLite簡(jiǎn)介SQLite是部署廣泛的SQL數(shù)據(jù)庫(kù)引擎之一SQLite使用嵌入式SQL數(shù)據(jù)庫(kù)引擎,各引擎不與程序進(jìn)程進(jìn)行獨(dú)立通信,而是被集成在用戶程序中SQLite被廣泛應(yīng)用于消費(fèi)電子、醫(yī)療、工業(yè)控制、軍事等各領(lǐng)域。SQLite安裝下載:sqlite-dll-win64-x64-3400100.zip工具包sqlite-tools-win32-x86-3400100.zip解壓縮到一個(gè)文件夾下,如D:\SQLiteSQLite在msdos命令提示符下,切換到D:\SQLite到輸入命令sqlite3,進(jìn)入“SQLite數(shù)據(jù)庫(kù)管理系統(tǒng)”。此時(shí),可以進(jìn)行數(shù)據(jù)庫(kù)和數(shù)據(jù)操作。9.3.2SQLiteStudioSQLiteStudio是SQLite數(shù)據(jù)庫(kù)的可視化工具,軟件內(nèi)部集成了SQLite數(shù)據(jù)庫(kù)創(chuàng)建數(shù)據(jù)庫(kù)執(zhí)行“數(shù)據(jù)庫(kù)→添加數(shù)據(jù)庫(kù)”命令或者單擊“添加數(shù)據(jù)庫(kù)”按鈕創(chuàng)建表在數(shù)據(jù)庫(kù)中,表是整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ),所有的原始數(shù)據(jù)都存儲(chǔ)在表中創(chuàng)建表的工作包括:創(chuàng)建字段字段命名定義字段的數(shù)據(jù)類型設(shè)置字段屬性創(chuàng)建表之前先要完成數(shù)據(jù)庫(kù)的連接創(chuàng)建表執(zhí)行“結(jié)構(gòu)→新建表”命令或者單擊“連接到數(shù)據(jù)庫(kù)”按鈕,填寫“表名”。表中至少要有一個(gè)列創(chuàng)建表添加列:?jiǎn)螕簟疤砑恿?/p>
”按鈕,打開“列”對(duì)話框設(shè)定:列的名稱數(shù)據(jù)類型約束數(shù)據(jù)類型包括①Text:文本②Integer:整數(shù)值③Real:浮點(diǎn)數(shù)④Blob:以二進(jìn)制進(jìn)行存儲(chǔ),任意數(shù)據(jù)類型⑤Numeric:親和類型,在插入文本數(shù)據(jù)時(shí),自動(dòng)轉(zhuǎn)換為Integer或者是Real類型數(shù)據(jù),⑥Null:表示Null值,表示缺失信息的占位,可以根據(jù)輸入數(shù)據(jù)的類型決定數(shù)據(jù)類型。數(shù)據(jù)類型數(shù)據(jù)表中某一列可能包含多種數(shù)據(jù)類型,它們也可以排序。SQLite數(shù)據(jù)庫(kù)根據(jù)數(shù)據(jù)親緣性與其他系統(tǒng)或數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行類型轉(zhuǎn)換數(shù)據(jù)類型布爾值被存儲(chǔ)為整數(shù)0(false)和1(true)Date與Time沒有單獨(dú)的存儲(chǔ)類型,轉(zhuǎn)換為Text、Real或者Integer存儲(chǔ)。列的約束(1)主鍵:主鍵用于保證數(shù)據(jù)實(shí)體的完整性,主鍵可以是單列,也可以是多列的組合。一個(gè)表只能定義一個(gè)主鍵,不允許重復(fù)、不允許空值列的約束(2)外鍵:外鍵用于保證數(shù)據(jù)的參照完整性,即相關(guān)表中數(shù)據(jù)的一致性。外鍵引用其他表中主鍵字段,說(shuō)明表與表之間的關(guān)系。學(xué)號(hào)為“學(xué)生”表的主鍵,學(xué)號(hào)為“選課”表的外鍵列的約束在更新或刪除主鍵時(shí),可能會(huì)破壞參照完整性。處理:“RESTRICT(限制):則會(huì)報(bào)錯(cuò),不執(zhí)行改數(shù)據(jù)操作;“CASCATE(級(jí)聯(lián))”:將外鍵一起更新或刪除。列的約束【例9.1】將“選課”表的“學(xué)號(hào)”字段設(shè)置為“學(xué)生”表中“學(xué)號(hào)”主鍵的外鍵,并限制更新操作、級(jí)聯(lián)刪除操作。雙擊“選課”表的“學(xué)號(hào)”字段,選中“外鍵”,配置外鍵。此時(shí)刪除、更新主鍵,會(huì)影響到外鍵。列的約束(3)唯一:確保該列中的所有值都不重復(fù)。(4)條件:條件約束用于保證用戶定義完整性,列的所有值滿足一定條件。如:成績(jī)字段的值大于等于0且小于等于100列的約束【例9.2】為“學(xué)生”表增加一個(gè)“電話號(hào)碼”新的列,該列的長(zhǎng)度必須為11位。增加一列,電話號(hào)碼,設(shè)定條件列的約束SQLite有常用函數(shù)列的約束【例9.3】將“選課”表中的成績(jī)值限制在0~100分。索引索引是在數(shù)據(jù)表中的列上建立的一種數(shù)據(jù)庫(kù)對(duì)象,它保存著列的排序,并記錄索引列在表中的物理存儲(chǔ)位置,從而實(shí)現(xiàn)快速查找數(shù)據(jù),提高查詢的效率。索引在“教學(xué)管理”數(shù)據(jù)庫(kù)中,學(xué)生表的索引,可以創(chuàng)建、編輯和刪除索引。9.3.5修改表結(jié)構(gòu)可以根據(jù)需要修改表的結(jié)構(gòu),設(shè)置字段類型、約束等?!纠?.4】將學(xué)生表中“出生日期”的數(shù)據(jù)類型從原來(lái)的“Text”類型更改為“Integer”類型。選中“出生日期”字段,單擊“編輯列”按鈕9.3.6數(shù)據(jù)記錄操作在數(shù)據(jù)表的維護(hù)過(guò)程中,可以:增加記錄刪除記錄修改記錄數(shù)據(jù)記錄操作1.增加記錄【例9.5】向?qū)W生表添加一條學(xué)生信息。打開學(xué)生表,單擊“數(shù)據(jù)”選項(xiàng)卡,單擊“插入行”按鈕,依次填寫數(shù)據(jù)記錄操作2.修改記錄雙擊數(shù)據(jù)表中的字段,該字段變?yōu)榭删庉嫚顟B(tài),可以直接修改內(nèi)容。3.刪除記錄選中數(shù)據(jù)行,單擊“刪除行”按鈕,即可刪除記錄。9.4.1SQL簡(jiǎn)介SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)是一種通用的且功能強(qiáng)大的關(guān)系數(shù)據(jù)庫(kù)語(yǔ)言,也是關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。包括:(1)數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL),(2)數(shù)據(jù)處理語(yǔ)言(DataManipulationLanguage,DML)(3)數(shù)據(jù)控制語(yǔ)言(DataControlLanguage,DCL)常量SQL中常量的表示方法(1)數(shù)字型常量:25、-25、12.4。(2)文本型常量:西文的單/雙撇號(hào)括起來(lái)
如
'英語(yǔ)'和"英語(yǔ)"(3)二進(jìn)制常量:直接以二進(jìn)制進(jìn)行存儲(chǔ)。算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于進(jìn)行算術(shù)運(yùn)算關(guān)系運(yùn)算符用于比較兩個(gè)操作數(shù)的關(guān)系邏輯運(yùn)算符邏輯運(yùn)算符用于對(duì)操作數(shù)進(jìn)行邏輯運(yùn)算函數(shù)函數(shù)是一種能夠完成某種特定操作或功能的數(shù)據(jù)形式,函數(shù)的返回值稱為函數(shù)值。函數(shù)調(diào)用的格式:函數(shù)名([參數(shù)1][,參數(shù)2][,…])。max(12,34,56,38,30)運(yùn)行SQL語(yǔ)句SQLiteStudio中,使用查詢編輯器編寫和運(yùn)行SQL語(yǔ)句①執(zhí)行菜單“工具→打開SQL編輯器”命令或者單擊“打開SQL編輯器
”按鈕②單擊上方的“執(zhí)行語(yǔ)句”按鈕,執(zhí)行SQL語(yǔ)句9.4.2CREATETABLE使用CREATETABLE語(yǔ)句定義表。語(yǔ)法格式為:CREATETABLE<表名>
(<字段名l><數(shù)據(jù)類型1>[(<大小>)][NOTNULL][PRIMARYKEY|UNIQUE]
,<字段名2><數(shù)據(jù)類型2>[(<大小>)][NOTNULL][PRIMARYKEY|UNIQUE]
[,…])(1)數(shù)據(jù)類型:用字符表示。(2)PRIMARYKEY:字段主鍵為主鍵。(3)UNIQUE:字段的唯一約束,不允許出現(xiàn)重復(fù)值。(4)NOTNULL:字段不允許為空。CREATETABLE【例9.6】使用SQL語(yǔ)句定義一個(gè)名為STUDENT的表。學(xué)號(hào)(文本型,8字符)、姓名(文本型,20字符)、性別(文本型,2字符)、出生日期(文本)、貸款否(整型)、簡(jiǎn)歷(文本)、照片(BLOB),學(xué)號(hào)為主鍵,姓名不允許為空值。CREATETABLESTUDENT(學(xué)號(hào)TEXT(8)PRIMARYKEY,姓名TEXT(20)NOTNULL,性別TEXT(2),
出生日期
TEXT,貸款否INT,簡(jiǎn)歷TEXT,照片BLOB)CREATETABLE9.4.3INSERTINTO使用INSERTINTO語(yǔ)句插入記錄,語(yǔ)法格式為:INSERTINTO<表名>[(<字段名1>[,<字段名2>[,…]])]VALUES(<表達(dá)式1>[,<表達(dá)式2>[,…]])如果INTO后缺少字段名列表,則必須為該表的所有字段賦值,且各項(xiàng)數(shù)據(jù)和表中的字段順序一一對(duì)應(yīng)。提示執(zhí)行完插入、更新、刪除等操作,單擊“刷新表數(shù)據(jù)
”按鈕,將顯示執(zhí)行完SQL語(yǔ)句后的數(shù)據(jù)表。INSERTINTO【例9.7】使用SQL語(yǔ)句向STUDENT表中插入兩條學(xué)生記錄。INSERTINTOSTUDENTVALUES("22801109","朱曉","女","2004/9/26","是",null,null)INSERTINTOSTUDENT(學(xué)號(hào),姓名,性別)VALUES("22801110","彭宇","男")9.4.4UPDATE使用UPDATE語(yǔ)句更新記錄,語(yǔ)法格式為:UPDATA<表名>SET<字段名1>=<表達(dá)式1>[,<字段名2>=<表達(dá)式2>[,…]][WHERE<條件>]如果不帶WHERE子句,則更新表中所有的記錄;如果帶WHERE子句,則只更新表中滿足條件的記錄。UPDATE【例9.8】使用SQL語(yǔ)句將“學(xué)生”表中所有女生的“貸款否”字段改為“否”。UPDATE學(xué)生SET貸款否="否"WHERE性別="女"9.4.5DELETE使用DELETE語(yǔ)句刪除記錄,其語(yǔ)法格式為:DELETEFROM<表名>[WHERE<條件>]如果不帶WHERE子句,則刪除表中所有的記錄;如果帶WHERE子句,則只刪除表中滿足條件的記錄。DELETE【例9.9】使用SQL語(yǔ)句刪除“學(xué)生”表中學(xué)號(hào)為“22801110”的學(xué)生記錄。DELETEFROM學(xué)生WHERE學(xué)號(hào)="22801110"9.4.6SELECT語(yǔ)句SELECT語(yǔ)句從數(shù)據(jù)庫(kù)中選取數(shù)據(jù),其語(yǔ)法格式為:SELECT[ALL|DISTINCT][TOP<數(shù)值>[PERCENT]]<目標(biāo)列>[[AS]<列標(biāo)題>]FROM<表或查詢1>[[AS]<別名1>],<表或查詢2>[[AS]<別名2>][WHERE<連接條件>AND<篩選條件>][GROUPBY<分組項(xiàng)>[HAVING<分組篩選條件>]][ORDERBY<排序項(xiàng)>[ASC|DESC]][LIMITN]關(guān)系運(yùn)算是一種抽象的查詢語(yǔ)言,它用對(duì)關(guān)系的運(yùn)算來(lái)表達(dá)查詢,包括:投影選擇連接1.單表查詢單表查詢僅涉及從一個(gè)表中的查詢數(shù)據(jù)。(1)投影在關(guān)系運(yùn)算中,從關(guān)系中挑選若干屬性組成新的關(guān)系稱為投影。SELECT[DISTINCT]<目標(biāo)列1>[,<目標(biāo)列2>[,…]]
FROM<表或查詢>①查詢指定的字段:指定要查詢的各字段名。②查詢所有的字段:在目標(biāo)列中使用“*”。③消除重復(fù)的記錄:在字段名前加上DISTINCT④查詢計(jì)算的值。投影【例9.10】查詢“學(xué)生”表中所有學(xué)生的姓名、性別和出生日期。SELECT姓名,性別,出生日期FROM學(xué)生(2)選擇在關(guān)系運(yùn)算中,從關(guān)系中找出滿足給定條件的那些元組稱為選擇。條件是邏輯表達(dá)式,值為真的元組將被選取。SELECT<目標(biāo)列>FROM<表名>WHERE<條件>選擇【例9.11】查詢“選課”表中成績(jī)?cè)?0~90分的記錄。SELECT*FROM選課WHERE成績(jī)BETWEEN80AND90選擇【例9.12】查詢“學(xué)生”表中出生日期在“2004/1/1”之后的女生。SELECT*FROM學(xué)生WHERE出生日期>="2004/1/1"and性別="女"(3)排序排序使用ORDERBY子句對(duì)查詢結(jié)果按照一個(gè)或多個(gè)列的升序(ASC)或降序(DESC)排列,默認(rèn)是升序。【例9.13】查詢成績(jī)?cè)?0~90分的記錄,同一門課程按成績(jī)降序排。SELECT*FROM選課WHERE成績(jī)BETWEEN50AND90ORDERBY課程號(hào),成績(jī)DESC排序使用LIMIT子句可以選出排在前面的若干記錄。【例9.14】查詢“選課”表中成績(jī)排在前5名的記錄。SELECT*FROM選課ORDERBY成績(jī)DESCLIMIT5(4)分組查詢使用GROUPBY子句可以對(duì)查詢結(jié)果按照某一列的值分組分組查詢通常與SQL聚合函數(shù)一起使用,先按指定的字段分組,再對(duì)各組進(jìn)行合計(jì)。如果未分組,則聚合函數(shù)作用于整個(gè)查詢結(jié)果。分組查詢【例9.15】統(tǒng)計(jì)“學(xué)生”表中各系的學(xué)生人數(shù)。SELECT系部,COUNT(*)AS各系人數(shù)FROM學(xué)生GROUP
BY系部2.多表查詢多表查詢指的是從多個(gè)表中查詢數(shù)據(jù)。(1)笛卡兒積笛卡兒積是指在數(shù)學(xué)中,集合A的元素與集合B的元素的所有可能有序?qū)Φ募希硎緸锳×B。在關(guān)系運(yùn)算中,笛卡兒積指的是X關(guān)系的每一條記錄和Y關(guān)系的每一條記錄連接構(gòu)成的新關(guān)系。多表查詢【例9.16】查詢“學(xué)生”表和“選課”表的笛卡兒積。SELECT*FROM學(xué)生,選課“學(xué)生”表中有20條記錄,“選課”表有8條記錄,查詢結(jié)果將有160條記錄。(2)連接運(yùn)算在關(guān)系運(yùn)算中,連接運(yùn)算是從兩個(gè)關(guān)系的笛卡兒積中選擇屬性間滿足一定條件的元組。條件放在WHERE子句中,語(yǔ)法格式為:SELECT<目標(biāo)列>FROM<表名1>,<表名2>WHERE<表名1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度木飾面原材料進(jìn)口與分銷合同3篇
- 2025年親子遺贈(zèng)協(xié)議草案
- 2025年代理商代理加盟采購(gòu)合資合作協(xié)議
- 2025年合資合作收益分配協(xié)議
- 2025年企業(yè)外包勞務(wù)協(xié)議
- 2025年智慧城市物業(yè)管理服務(wù)標(biāo)準(zhǔn)合同范本6篇
- 漫談加強(qiáng)物資管理提高企業(yè)經(jīng)濟(jì)效益-圖文
- 《皮質(zhì)醇增多征荊》課件
- 2025年度醫(yī)院病理科診斷服務(wù)承包合同4篇
- 2025年度汽車轉(zhuǎn)讓及二手車交易稅費(fèi)減免合同
- 廢舊物資買賣合同極簡(jiǎn)版
- 2024年正定縣國(guó)資產(chǎn)控股運(yùn)營(yíng)集團(tuán)限公司面向社會(huì)公開招聘工作人員高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 智能衣服方案
- 李克勤紅日標(biāo)準(zhǔn)粵語(yǔ)注音歌詞
- 教科版六年級(jí)下冊(cè)科學(xué)第一單元《小小工程師》教材分析及全部教案(定稿;共7課時(shí))
- 中藥材產(chǎn)地加工技術(shù)規(guī)程 第1部分:黃草烏
- 危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)考試題庫(kù)
- 案例分析:美國(guó)紐約高樓防火設(shè)計(jì)課件
- 老客戶維護(hù)方案
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)一 用戶定位與選題
- 工作證明模板下載免費(fèi)
評(píng)論
0/150
提交評(píng)論