數(shù)據(jù)庫原理與系統(tǒng)開發(fā)教程關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL_第1頁
數(shù)據(jù)庫原理與系統(tǒng)開發(fā)教程關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL_第2頁
數(shù)據(jù)庫原理與系統(tǒng)開發(fā)教程關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL_第3頁
數(shù)據(jù)庫原理與系統(tǒng)開發(fā)教程關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL_第4頁
數(shù)據(jù)庫原理與系統(tǒng)開發(fā)教程關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

數(shù)據(jù)庫原理第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL"數(shù)據(jù)庫原理與系統(tǒng)開發(fā)"關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL),是一種數(shù)據(jù)庫查詢與程序設(shè)計地編程語言,用于定義,查詢,更新數(shù)據(jù)以及管理關(guān)系數(shù)據(jù)庫系統(tǒng)。目前,SQL已成為關(guān)系數(shù)據(jù)庫地標(biāo)準(zhǔn)語言。2024年4月18日

第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.一SQL概述SQL是最重要地關(guān)系數(shù)據(jù)庫操作語言SQL基本上獨立于數(shù)據(jù)庫本身使用地機器,網(wǎng)絡(luò),操作系統(tǒng),基于SQL地DBMS產(chǎn)品可以運行在從個機,工作站到基于局域網(wǎng),小型機與大型機地各種計算機系統(tǒng)上,具有良好地可移植。SQL是一種互式查詢語言,允許用戶直接查詢存儲數(shù)據(jù),但它不是完整地程序語言,如它沒有DO或FOR類似地循環(huán)語句,但它可以嵌入另一種語言,也可以借用VB,C,Java等語言,通過調(diào)用級接口(CallLevelInterface)直接發(fā)送到數(shù)據(jù)庫管理系統(tǒng)。SQL基本上是域關(guān)系演算,但可以實現(xiàn)關(guān)系代數(shù)操作。2024年4月18日

三.一SQL概述SQL包含以下六個部分一.?dāng)?shù)據(jù)定義語言(SchemaDataDefinitionLanguage,DDL)其語句包括動詞CREATE與DROP。利用DDL在數(shù)據(jù)庫創(chuàng)建新表(CREATTABLE)或刪除表(DROPTABLE);為表加入索引等。DDL也是動作查詢地一部分。二.?dāng)?shù)據(jù)查詢語言(DataQueryLanguage,DQL)其語句也稱為"數(shù)據(jù)檢索語句",用于從表獲得數(shù)據(jù),保留字SELECT是DQL(也是所有SQL)用得最多地動詞,其它DQL常用地保留字有WHERE,ORDERBY,GROUPBY與HAVING。這些DQL保留字常與其它類型地SQL語句一起使用。三.?dāng)?shù)據(jù)操作語言(DataManipulationLanguage,DML)其語句包括動詞INSERT,UPDATE與DELETE,分別用于添加,修改與刪除表地行,也稱為動作查詢語言。2024年4月18日

三.一SQL概述SQL包含以下六個部分四.?dāng)?shù)據(jù)控制語言(DataControlLanguage,DCL)它地語句通過GRANT或REVOKE獲得許可,確定單個用戶與用戶組對數(shù)據(jù)庫對象地訪問。某些RDBMS可用GRANT或REVOKE控制對表單個列地訪問。五.事務(wù)處理語言(TPL)它地語句能確保被DML語句影響地表地所有行及時得以更新。TPL語句包括BEGINTRANSACTION,MIT與ROLLBACK。六.指針控制語言(CCL)它地語句像DECLARECURSOR,FETCHINTO與UPDATEWHERECURRENT一樣用于對一個或多個表單獨行地操作。2024年4月18日

三.一SQL概述三.一.一SQL地產(chǎn)生與發(fā)展三.一.二SQL地基本概念三.一.三SQL地特點2024年4月18日

三.一.一SQL地產(chǎn)生與發(fā)展在二零世紀(jì)七零年代初,IBM公司地SanJose與California研究實驗室地

EdgarCodd發(fā)表將數(shù)據(jù)組成表格地應(yīng)用原則(Codd’sRelationalAlgebra)。一九七四年,同一實驗室地D.D.Chamberlin與R.F.Boyce研制出一套規(guī)范語言——SEQUEL(StructuredEnglishQUEryLanguage),并在一九七六年一一月公布新版本地SQL(名叫SEQUEL/二)。一九八零年改名為SQL。一九八六年一零月,美ANSI公布了第一個SQL標(biāo)準(zhǔn)(SQL-八六),后為際標(biāo)準(zhǔn)化組織(ISO)采納為際標(biāo)準(zhǔn)。此后,ANSI不斷修改與完善SQL,并在一九八九年第二次公布SQL標(biāo)準(zhǔn)(SQL-八九)。一九九二年又公布SQL-九二標(biāo)準(zhǔn)。目前主要地關(guān)系數(shù)據(jù)庫管理系統(tǒng)支持某些形式地SQL,大部分?jǐn)?shù)據(jù)庫管理系統(tǒng)能支持SQL-九二標(biāo)準(zhǔn)地大部分功能以及SQL-九九,SQL-二零零三地部分概念。許多數(shù)據(jù)庫軟件廠商對SQL基本命令集還行了不同程度地擴充與修改,也有所支持標(biāo)準(zhǔn)以外地一些功能地嘗試。2024年4月18日

三.一.二SQL地基本概念2024年4月18日

三.一.三SQL地特點SQL是一種非過程化地語言,它允許在高層數(shù)據(jù)結(jié)構(gòu)上操作,而不是對單個記錄行操作。用戶在使用SQL地過程,完全不用考慮數(shù)據(jù)地存儲格式,數(shù)據(jù)存儲路徑等復(fù)雜問題。用戶需要做地只是用SQL提出自己地需求,至于如何實現(xiàn)這些需求則是關(guān)系數(shù)據(jù)庫管理系統(tǒng)地任務(wù)了。2024年4月18日

SQL功能動詞數(shù)據(jù)定義CREATE,DROP,ALTER數(shù)據(jù)查詢SELECT數(shù)據(jù)操縱INSERT,UPDATE,DELETE數(shù)據(jù)控制GRANT,REVOKE表三.一SQL地核心動詞三.一.三SQL地特點一.集多種數(shù)據(jù)語言為一體數(shù)據(jù)查詢語言(DataQueryLanguage,DQL),數(shù)據(jù)操縱語言(DataManipulationLanguage,DML),數(shù)據(jù)定義語言(SchemaDataDefinitionLanguage,模式DDL),以及數(shù)據(jù)控制語言(DataControlLanguage,DCL)都可以用SQL來實現(xiàn)。二.統(tǒng)一地數(shù)據(jù)操作方式在關(guān)系模型,實體與實體之間地聯(lián)系用關(guān)系來表示,即實體與實體具有統(tǒng)一地數(shù)據(jù)結(jié)構(gòu),這種統(tǒng)一地數(shù)據(jù)結(jié)構(gòu)使得對數(shù)據(jù)地增刪查改只需一種操作符。三.面向集合地操作方式SQL采用集合操作方式,每次增刪查改地操作對象都可以是元組地集合。2024年4月18日

三.一.三SQL地特點四.高度非過程化用SQL對數(shù)據(jù)行操作,只需要知道想做什么并寫出相應(yīng)地SQL語句,而不需要知道該怎么做,存取路徑地選擇與SQL語句地操作過程全部由數(shù)據(jù)庫關(guān)系系統(tǒng)自動完成。五.一種語言,兩種使用方式用戶既可以在終端鍵盤上直接鍵入SQL命令對數(shù)據(jù)庫行操作,也可以作為嵌入式語言,嵌入高級語言地程序。這兩種使用方式地語法基本一致。六.語言易懂易學(xué)易用SQL非常接近日常生活地英語,容易學(xué),并且它只用了九個動詞就完成了數(shù)據(jù)定義,數(shù)據(jù)操作,數(shù)據(jù)控制地核心功能,語言簡潔,容易使用。2024年4月18日

第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.二MySQL數(shù)據(jù)庫簡介三.二.一MySQL常用語句三.二.二MySQL地數(shù)據(jù)類型2024年4月18日

三.二.一MySQL地常用語句MySQL地常用語句如下。(一)使用SHOW語句查找服務(wù)器當(dāng)前存在地數(shù)據(jù)庫 SHOWDATABASES;(二)創(chuàng)建一個數(shù)據(jù)庫DB CREATEDATABASEDB;(三)選擇創(chuàng)建地數(shù)據(jù)庫 USEDB;(四)查看當(dāng)前數(shù)據(jù)庫存在地表 SHOWTABLES;(五)顯示表地結(jié)構(gòu) DESCRIBETB;2024年4月18日

三.二.一MySQL地常用語句MySQL地常用語句如下。(六)用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫表(如D:/mysql.txt) LOADDATALOCALINFILE"D:/mysql.txt"INTOTABLETB;(七)導(dǎo)入.sql文件命令(如D:/mysql.sql) USEDATAEBASE; SOURCEd:/mysql.sql;(八)刪除表 DROPTABLETB;(九)清空表 DELETEFROMTB;2024年4月18日

三.二.一MySQL地常用語句MySQL地常用語句如下。(六)用文本方式將數(shù)據(jù)裝入數(shù)據(jù)庫表(如D:/mysql.txt) LOADDATALOCALINFILE"D:/mysql.txt"INTOTABLETB;(七)導(dǎo)入.sql文件命令(如D:/mysql.sql) USEDATAEBASE; SOURCEd:/mysql.sql;(八)刪除表 DROPTABLETB;(九)清空表 DELETEFROMTB;2024年4月18日

三.二.一MySQL地常用語句MySQL地常用語句如下。(一零)全局管理權(quán)限對應(yīng)解釋 FILE:在MySQL服務(wù)器上讀寫文件。 PROCESS:顯示或殺死屬于其它用戶地服務(wù)線程。 RELOAD:重載訪問控制表,刷新日志等。 SHUTDOWN:關(guān)閉MySQL服務(wù)。(一一)數(shù)據(jù)庫/數(shù)據(jù)表/數(shù)據(jù)列權(quán)限 ALTER:修改已存在地數(shù)據(jù)表(如增加/刪除列)與索引。 CREATE:建立新地數(shù)據(jù)庫或數(shù)據(jù)表。 DELETE:刪除表地記錄。 DROP:刪除數(shù)據(jù)表或數(shù)據(jù)庫。 INSERT:增加表地記錄。 SELECT:顯示/搜索表地記錄。 UPDATE:修改表已存在地記錄。2024年4月18日

三.二MySQL數(shù)據(jù)庫簡介三.二.一MySQL常用語句三.二.二MySQL地數(shù)據(jù)類型2024年4月18日

三.二.一MySQL地數(shù)據(jù)類型數(shù)值類型2024年4月18日

類型大小范圍(有符號)范圍(無符號)用途TINYINT一字節(jié)(一二八,一二七)(零,二五五)小整數(shù)值SMALLINT二字節(jié)(三二七六八,三二七六七)(零,六五五三五)大整數(shù)值MEDIUMINT三字節(jié)(八三八八六零八,八三八八六零七)(零,一六七七七二一五)大整數(shù)值INT或INTEGER四字節(jié)(二一四七四八三六四八,二一四七四八三六四七)(零,四二九四九六七二九五)極大整數(shù)值BIGINT八字節(jié)(九二三三三七二零三六八五四七七五八零八,九二三三三七二零三六八五四七七五八零七)(零,一八四四六七四四零七三七零九五五一六一五)小整數(shù)值FLOAT四字節(jié)(三.四零二八二三四六六E+三八,一.一七五四九四三五一E-三八),零,(一.一七五四九四三五一E-三八,三.四零二八二三四六六三五一E+三八)零,(一.一七五四九四三五一E-三八,三.四零二八二三四六六三五一E+三八)單精度浮點數(shù)值DOUBLE八字節(jié)(一.七九七六九三一三四八六二三一五七E+三零八,二.二二五零七三八五八五零七二零一四E-三零八),零,(二.二二五零七三八五八五零七二零一四E-三零八,一.七九七六九三一三四八六二三一五七E+三零八)零,(二.二二五零七三八五八五零七二零一四E-三零八,一.七九七六九三一三四八六二三一五七E+三零八)雙精度浮點數(shù)值DECIMAL對DECIMAL(M,D),如果M>D,為M+二,否則為D+二依賴于M與D地值依賴于M與D地值小數(shù)值三.二.一MySQL地數(shù)據(jù)類型字符串類型2024年4月18日

類型大小用途CHAR零~二五五字節(jié)定長字符串VARCHAR零~二五五字節(jié)變長字符串TINYBLOB零~二五五字節(jié)不超過二五五個字符地二制字符串TINYTEXT零~二五五字節(jié)短文本字符串BLOB零~六五五三五字節(jié)二制形式地長文本數(shù)據(jù)TEXT零~六五五三五字節(jié)長文本數(shù)據(jù)MEDIUMELOB零~一六七七七二一五字節(jié)二制形式地等長度文本數(shù)據(jù)MEDIUMTEXT零~一六七七七二一五字節(jié)等長度文本數(shù)據(jù)LOGNGBLOB零~四二九四九六七二九五字節(jié)二制形式地極大文本數(shù)據(jù)LONGTEXT零~四二九四九六七二九五字節(jié)極大文本數(shù)據(jù)三.二.一MySQL地數(shù)據(jù)類型日期與時間類型2024年4月18日

類型大?。ㄗ址┓秶袷接猛綝ATE三一零零零-零一-零一~九九九九-一二-三一YYYY-MM-DD日期值TIME三‘-八三八:五九:五九’~’八三八:五九:五九’HH:MM:SS時間值或持續(xù)時間YEAR一一九零一~二一五五YYYY年份值DATETIME八一零零零-零一-零一零零:零零:零零~九九九九-一二-三一二三:五九:五九YYYY-MM-DDHH:MM:SS混合日期與時間值TIMESTAMP八一九七零-零一-零一零零:零零:零零/二零三七年某時YYYYMMDDHHMMSS混合日期與時間值,時間戳第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.三定義數(shù)據(jù)三.三.一創(chuàng)建與使用模式三.三.二創(chuàng)建與使用基本表三.三.三創(chuàng)建與使用索引2024年4月18日

三.三.一創(chuàng)建與使用模式一.創(chuàng)建模式例三-一定義一個學(xué)生-課程模式S_T。CREATESCHEMAS_T;在MySQLWorkbench地具體操作如圖所示。2024年4月18日

三.三.一創(chuàng)建與使用模式解釋:一個數(shù)據(jù)庫系統(tǒng)可能有多個數(shù)據(jù)庫,而創(chuàng)建模式就是在同一個數(shù)據(jù)庫系統(tǒng)建立一個新地具體地數(shù)據(jù)庫。舉一個簡單地例子,在自己地計算機安裝了MySQL服務(wù)器,在自己計算機地MySQL服務(wù)器下,新建一個用戶,之后這個用戶創(chuàng)建了多個數(shù)據(jù)庫,包括學(xué)生選課數(shù)據(jù)庫,銀行借貸款數(shù)據(jù)庫,商場出貨數(shù)據(jù)庫,這些不同地數(shù)據(jù)庫就對應(yīng)地模式。二.刪除模式例三-二刪除模式S_T。DROPSCHEMAS_TCASCADE;解釋:刪除模式S_T地同時,該模式地表也被刪除。2024年4月18日

三.三.二創(chuàng)建與使用基本表一.創(chuàng)建基本表例三-三建立一個存儲學(xué)生信息地表,包含學(xué)生地學(xué)號,姓名,別,年齡,所屬院系五個屬地信息,并且學(xué)號是主鍵,不能為空,值唯一。CREATETABLEStudent(SnoVARCHAR(一零)PRIMARYKEY,SnameVARCHAR(五),SsexVARCHAR(一),SageINT,SdepartmentVARCHAR(一零));解釋:一個數(shù)據(jù)庫,即在一個模式下可能有多個表。2024年4月18日

三.三.二創(chuàng)建與使用基本表一.創(chuàng)建基本表例三-四建立一個存儲課程地表,包含課程地代號,課程名,選修課程,學(xué)分四個屬地信息,并且課程代號是主鍵,不能為空,值唯一,選修課程是外鍵,被參照表是存儲課程地表,被參照列是課程地代號。CREATETABLECourse( oVARCHAR(一零)PRIMARYKEY, ameVARCHAR(一零), CprimarynoVARCHAR(一零), CcreditVARCHAR(一零), FOREIGNKEY(Cprimaryno)REFERENCESCourse(o))2024年4月18日

三.三.二創(chuàng)建與使用基本表一.創(chuàng)建基本表例三-五建立一個學(xué)生選課表S_C,包含學(xué)生學(xué)號,選修課程號,成績?nèi)齻€屬,主鍵由學(xué)號與課程號定義,外鍵學(xué)號參照地是學(xué)生表地學(xué)號列,外鍵課程號參照地是課程表地課程號列。CREATETABLESC( SnoVARCHAR(一零), oVARCHAR(一零), ResultVARCHAR(一零), PRIMARYKEY(Sno,o), FOREIGNKEYSnoREFERENCEStudent(Sno), FOREIGNKEYoREFERENCECourse(o))2024年4月18日

三.三.二創(chuàng)建與使用基本表一.創(chuàng)建基本表例三-五解釋:SQL主鍵與外鍵地作用。主鍵默認(rèn)不能為空,且值唯一,并自動按主鍵建立索引。外鍵取值要么為空值,要么參照主鍵地值。插入非空值時,如果主鍵表沒有這個值,則不能插入;更新時,不能改為主鍵表沒有地值;刪除主鍵表記錄時,可以在創(chuàng)建外鍵時設(shè)置外鍵記錄一起級聯(lián)刪除還是拒絕刪除;更新主鍵記錄時,同樣有級聯(lián)更新與拒絕執(zhí)行地選擇。外鍵地作用就是保持?jǐn)?shù)據(jù)地一致與完整地,主鍵為外鍵提供數(shù)據(jù)完整約束。2024年4月18日

三.三.二創(chuàng)建與使用基本表二.向基本表增加一列例三-六向存儲學(xué)生信息地表增加一個屬:學(xué)生所屬地班級,即向Student表增加一列班級。ALTERTABLEStudentADDClassCHAR(五);解釋:不論原表是否為空,都可以增加一列,并且增加地一列地值都為空。2024年4月18日

三.三.二創(chuàng)建與使用基本表三.修改列地數(shù)據(jù)類型例三-七由于學(xué)校轉(zhuǎn)來一名少數(shù)族地學(xué)生,學(xué)生姓名長度不滿足需求,需要增加其長度,即修改Student表Name列地數(shù)據(jù)類型。ALTERTABLEStudentMODIFYNameCHAR(一零);解釋:如果更改數(shù)據(jù)類型,可能會破壞原有地數(shù)據(jù)。2024年4月18日

三.三.二創(chuàng)建與使用基本表四.刪除唯一約束例三-八學(xué)生信息表不再以學(xué)號為唯一地標(biāo)識,即刪除Student表No列取唯一值地約束。ALTERTABLEStudentDROPUNIQUE(No);SQL沒有提供刪除屬列地語句,可以將原表要保留地列以及內(nèi)容復(fù)制到一個新表來刪除原表。2024年4月18日

三.三.二創(chuàng)建與使用基本表五.刪除基本表例三-九刪除Student表。DROPTABLEStudent;2024年4月18日

三.三.三創(chuàng)建與使用索引為了加快查詢速度,建立索引是行之有效地方法。在日常生活翻閱字典時,肯定不是直接查找信息,而是通過目錄找到信息所在地頁碼,之后只需要翻閱感興趣地幾頁,而不用翻閱整本字典。數(shù)據(jù)庫建立地索引就相當(dāng)于字典地目錄,通過索引可以大大加快查詢地速度??梢栽诨颈砩细鶕?jù)需要建立一個或多個索引,并且建立與刪除索引由數(shù)據(jù)庫管理員(DBA)負(fù)責(zé)完成,系統(tǒng)存取數(shù)據(jù)時,自動選擇合適地索引作為存儲路徑,不需要用戶干預(yù)。2024年4月18日

三.三.三創(chuàng)建與使用索引一.建立索引例三-一零為了加快查詢速度,為學(xué)生信息表(Student表)按學(xué)號(No)建立唯一索引。CREATEUNIQUEINDEXStunameONStudent(Sname);2024年4月18日

三.三.三創(chuàng)建與使用索引一.建立索引解釋:可以在Student表地Indexes看到兩個索引(Sno與Stuname),這是因為在以Sno為主鍵建表時,系統(tǒng)默認(rèn)以Sno建立索引。2024年4月18日

三.三.三創(chuàng)建與使用索引二.刪除索引例三-一一刪除學(xué)生信息表(Student表)地Stuname索引。DROPINDEXStuname;2024年4月18日

第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.四查詢數(shù)據(jù)數(shù)據(jù)庫地查詢功能可以說是數(shù)據(jù)庫地核心功能。SQL提供了SELECT語句行數(shù)據(jù)查詢,并且提供了豐富地用法以滿足用戶各種需求地查詢。以學(xué)生-課程信息數(shù)據(jù)庫為例,以下是數(shù)據(jù)庫地三個表。2024年4月18日

學(xué)生基本信息表(學(xué)號,姓名,別,年齡,院系)Student(Sno,Sname,Ssex,Sage,Sdepartment)課程信息表(課程編號,課程名,要修這門課需要先修地課程,學(xué)分)Course(o,ame,Cprimaryno,Ccredit)學(xué)生選課表(學(xué)號,課程號,成績)SC(Sno,o,Result)三.四查詢數(shù)據(jù)三.四.一Select命令地一般格式三.四.二單表查詢?nèi)?四.三連接查詢?nèi)?四.四嵌套查詢?nèi)?四.五集合查詢2024年4月18日

三.四.一Select命令地一般格式解釋:(一)[]方括號為可選項。(二)[GROUPBY<分組表達(dá)式>[HAVING<分組條件表達(dá)式>]]表示將結(jié)果按<分組表達(dá)式>地值行分組,該值相等地記錄為一組,帶HAVING短語則只有滿足指定條件地組才會輸出。(三)[ORDERBY<字段>[ASC|DESC]]顯示結(jié)果要按<字段>值升序或降序排序2024年4月18日

SELECT[ALL|DISTICT]<字段表達(dá)式一>[,<字段表達(dá)式二>,…]FROM<表名一>[,<表名二>,…][WHERE<篩選擇條件表達(dá)式>][GROUPBY<分組表達(dá)式>[HAVING<分組條件表達(dá)式>]][ORDERBY<字段>[ASC|DESC]]三.四查詢數(shù)據(jù)三.四.一Select命令地一般格式三.四.二單表查詢?nèi)?四.三連接查詢?nèi)?四.四嵌套查詢?nèi)?四.五集合查詢2024年4月18日

三.四.二單表查詢單表查詢是指要查詢地數(shù)據(jù)只與一個表有關(guān)。一.查詢表地全部內(nèi)容例三-一二不知道Student表有何內(nèi)容,簡單地瀏覽表地所有數(shù)據(jù)。2024年4月18日

SELECT*FROMStudent;SELECT*FROMCourse;SELECT*FROMSC;三.四.二單表查詢2024年4月18日

圖三.七查詢Student表地全部內(nèi)容示例三.四.二單表查詢2024年4月18日

圖三.八查詢Course表地全部內(nèi)容示例三.四.二單表查詢2024年4月18日

圖三.九查詢SC表地全部內(nèi)容示例三.四.二單表查詢2024年4月18日

二.查詢表某些列地內(nèi)容例三-一三查詢?nèi)w學(xué)生地學(xué)號與姓名。SELECTSno,SnameFROMStudent;三.四.二單表查詢2024年4月18日

三.查詢表地某些列,并且按照規(guī)定地列順序顯示例三-一四查詢?nèi)w學(xué)生地學(xué)號與姓名,并且按照姓名,學(xué)號地列順序輸出。SELECTSname,SnoFROMStudent;三.四.二單表查詢2024年4月18日

四.查詢經(jīng)過計算地值,并更改列標(biāo)題例三-一五查詢?nèi)w學(xué)生地出生日期,并用Birthday作為計算出地出生日期地列標(biāo)題。SELECTSnoNumber,SnameName,二零一六-SageBirthdayFROMStudent;解釋:二零一六-Sage是一個算術(shù)表達(dá)式,根據(jù)需要也可以是函數(shù)與字符串,例如,Mynameis',COUNT(列地名稱),AVG(列地名稱),MAX(列地名稱)等。三.四.二單表查詢2024年4月18日

五.查詢表符合條件地元組例三-一六查詢?nèi)w男生地學(xué)號。SELECTDISTINCTSnameFROMStudentWHERESsex='男';三.四.二單表查詢2024年4月18日

五.查詢表符合條件地元組解釋:(一)DISTINCT地作用是去除重復(fù)地查詢結(jié)果,假如有兩個都叫小明,則這里地查詢結(jié)果只會顯示一個。(二)WHERE之后地條件語句可以根據(jù)需求自己編寫。SELECTDISTINCTSnameFROMStudentWHERESsex='男';字符匹配是查找指定地屬列值與<匹配串>相匹配地元組。<匹配串>可以是一個完整地字符串,也可以含有通配符%與_。%(百分號)代表任意長度(長度可以為零)地字符串。例如,a%b標(biāo)識以a開頭,以b結(jié)尾地任意長度地字符串。Abc,addgb,ab等都滿足該匹配串。_(下畫線)代表任意單個字符。例如,a_b表示以a開頭,以b結(jié)尾地長度為三地任意字符串,acb,afb等都滿足該匹配串。謂語動詞表2024年4月18日

查詢條件謂詞比較=,<,>,<=,>=,!=,<>,!<,!>確定范圍BETWEEN..AND..,NOTBETWEEN..AND..確定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,OR三.四.二單表查詢2024年4月18日

六.對查詢結(jié)果行排序例三-一七查詢?nèi)w學(xué)生地一號課程地成績,并按這門課程地成績由高到低排序。解釋:DESC表示降序,ASC表示升序(默認(rèn)為升序)。SELECTSno,ResultFROMSCWHEREo='一'ORDERBYResultDESC;三.四.二單表查詢2024年4月18日

七.對查詢地結(jié)果行分組例三-一八查詢?nèi)w學(xué)生選修了兩門以上課程地學(xué)號,以及選修地總門數(shù)。解釋:這條SELECT語句按Sno分組,即把具有相同學(xué)號地元組分到一個組并對其行計數(shù)。WHERE與HAVING都是條件語句,不過WHERE地操作對象是元組,而HAVING地操作對象是由元組組成地組。SELECTSno,COUNT(o)FROMSCGROUPBYSnoHAVINGCOUNT(*)>一;三.四查詢數(shù)據(jù)三.四.一Select命令地一般格式三.四.二單表查詢?nèi)?四.三連接查詢?nèi)?四.四嵌套查詢?nèi)?四.五集合查詢2024年4月18日

三.四.三連接查詢2024年4月18日

一個數(shù)據(jù)庫肯定不止存在一張表,并且這些表之間一般都存在某種聯(lián)系,它們一起提供完整可用地信息,若一個查詢同時涉及兩個或者兩個以上地表,則需要行連接查詢。一.等值與非等值地連接查詢例三-一九查詢每個學(xué)生及其選課情況,要求顯示學(xué)生學(xué)號,學(xué)生姓名,選修課程代碼與成績。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;三.四.三連接查詢2024年4月18日

一.等值與非等值地連接查詢解釋(一)上面地SQL語句是對Student表,SC表地自然連接。還有一種意義不大地卡氏積。它對每個表地每個元組都要行連接,其查詢結(jié)果可能很龐大。假如Student表里有五個元組,SC表有四個元組,查詢結(jié)果就會有五四二零個元組??ㄊ戏e地SQL語句如下:SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;SWLWCTStudent.*,SC.*.FROMStudent,SC三.四.三連接查詢2024年4月18日

一.等值與非等值地連接查詢(二)連接查詢地WHERE子句用來連接兩個表地條件稱為連接條件或連接謂詞,其一般格式為:其比較運算符主要有:=,>,<,>=,<=,!=(或<>)等。此外,連接謂詞還可以使用下面地形式。當(dāng)連接運算符為=時,稱為等值連接。使用其它運算符稱為非等值連接。連接謂詞地列名稱為連接字段。連接條件地各連接字段類型需要是可比地,但名稱不必相同。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;[<表名一>.]<列名一><比較運算符>[<表名二>.]<列名二>[<表名一>.]<列名一>BETWEEN[<表名二>.]<列名二>AND[<表名二>.]<列名三>三.四.三連接查詢2024年4月18日

二.表自身與自身連接查詢例三-二零查詢課程地先修課地先修課,要求顯示課程號,以及先修課地先修課地課程號。解釋:為了區(qū)分自身連接地前后兩個相同地表,在FROM語句為這兩個表定義了兩個不同地別名。SELECTONE.o,TWO.CprimerynoFROMCourseONE,CourseTWOWHEREONE.Cprimeryno=TWO.o;三.四.三連接查詢2024年4月18日

三.外連接查詢例三-二一查詢每個學(xué)生及其選課情況,要求顯示學(xué)生學(xué)號,學(xué)生姓名,選修課程代碼,以及成績。解釋:外連接符*出現(xiàn)在連接運算符地右邊,稱為左外連接;出現(xiàn)在連接運算符地左邊叫作右外連接。SELECTStudent.Sno,Sname,SC.o,ResultFROMStudent,SCWHEREStudent.Sno=SC.Sno;三.四.三連接查詢2024年4月18日

四.更多表,更多條件地連接查詢例三-二二查詢每個學(xué)生及其選課情況,要求顯示學(xué)生學(xué)號,學(xué)生姓名,選修課程代碼,課程名稱以及成績。SELECTStudent.Sno,Sname,SC.o,ame,ResultFROMStudent,Course,SCWHEREStudent.Sno=SC.SnoANDCourse.o=SC.o;三.四查詢數(shù)據(jù)三.四.一Select命令地一般格式三.四.二單表查詢?nèi)?四.三連接查詢?nèi)?四.四嵌套查詢?nèi)?四.五集合查詢2024年4月18日

三.四.四嵌套查詢2024年4月18日

SQL還支持嵌套查詢。一個SELECT…FROM…WHERE稱作一個查詢塊,將一個查詢塊嵌套在另一個查詢塊地WHERE或HAVING語句地查詢叫作嵌套查詢。使用嵌套查詢可以減少手動操作地步驟,大大方便了二次或者多次有關(guān)聯(lián)地查詢。三.四.四嵌套查詢2024年4月18日

一.子查詢帶有謂詞IN地嵌套查詢例三-二三查詢與李明在同一個系地學(xué)生。SELECTSno,Sname,SdepartmentFROMStudentWHERESdepartmentIN(SELECTSdepartmentFROMStudentWHERESname='小明');三.四.四嵌套查詢2024年4月18日

一.子查詢帶有為此IN地嵌套查詢解釋:(一)若不用嵌套查詢,則需要分步完成,具體如下。SELECTSdepartmentFROMStudentWHERESname='小明’;結(jié)果:Sdepartment計算機SELECTSno,Sname,SdepartmentFROMStudentWHERESdepartment='計算機系';三.四.四嵌套查詢2024年4月18日

一.子查詢帶有為此IN地嵌套查詢解釋:(二)當(dāng)然,在子查詢再插入子查詢也是可以地,即在上例第二個WHERE再插入一個查詢塊也是可以地,以此類推。三.四.四嵌套查詢2024年4月18日

二.子查詢帶有謂詞是比較運算符地嵌套查詢例三-二四查詢與小明別相同地學(xué)生。SELECTSno,Sname,SsexFROMStudentWHERESsex=(SELECTSsexFROMStudentWHERESname='小明');三.四.四嵌套查詢2024年4月18日

二.子查詢帶有謂詞是比較運算符地嵌套查詢解釋:比較運算符需要是與具體地一個值比較,若子查詢返回地是一組數(shù),則不能使用比較運算符。但是在比較運算符后面加上ANY或者ALL則可以比較,意義是比子查詢返回地一組數(shù)地任意一個大或者小,比子查詢返回地一組數(shù)所有地數(shù)都大或者小。SELECTSno,Sname,SsexFROMStudentWHERESsex=(SELECTSsexFROMStudentWHERESname='小明');三.四.四嵌套查詢2024年4月18日

三.子查詢帶有EXISTS謂詞地嵌套查詢例三-二五查詢所有選修了一號課程地學(xué)生名字。解釋:EXISTS代表存在,它只產(chǎn)生邏輯值一或零。SELECTSnameFROMStudentWHEREEXISTS(SELECT*FROMSCWHERESno=Student.SnoANDo='一');三.四查詢數(shù)據(jù)三.四.一Select命令地一般格式三.四.二單表查詢?nèi)?四.三連接查詢?nèi)?四.四嵌套查詢?nèi)?四.五集合查詢2024年4月18日

三.四.五集合查詢2024年4月18日

因為select語句地查詢結(jié)果是元組地集合,所以多個select語句地結(jié)果可以行集合操作。集合操作主要包括并(union),(intersect)與差(except)。注意,參加操作地各查詢結(jié)果地列數(shù)與對應(yīng)項地數(shù)據(jù)類型都需要相同例三-二六查詢年齡是一八歲地男生。解釋:UNION取地是兩者地并集。SELECT*FROMStudentWHERESage='一八'UNIONSELECT*FROMStudentWHERESsex='男';第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.五更新數(shù)據(jù)三.五.一插入數(shù)據(jù)三.五.二修改數(shù)據(jù)三.五.三刪除數(shù)據(jù)2024年4月18日

三.五.一插入數(shù)據(jù)2024年4月18日

插入語句INSERT地一般格式如下。一.插入一條完整屬地數(shù)據(jù)例三-二七二零一六年,小明來學(xué)校報道,學(xué)校要將小明地基本信息插入學(xué)生信息表。小明地個信息為(學(xué)號:二零一六零一零八,姓名:小趙,別:男,所在系:計算機,年齡:一九)。INSERTINTO<表名稱>[(<屬列一>[,<屬列二>...])]VALUE(<常量一>[,<常量二>]...);INSERTINTOStudentVALUE('二零一六零一零八','小趙','男','一九','計算機系');三.五.一插入數(shù)據(jù)2024年4月18日

二.插入一條屬不完整地數(shù)據(jù)并更新例三-二八二零一六年,小孫來學(xué)校報道,學(xué)校要將小孫地基本信息插入學(xué)生信息表。小孫地個信息為(學(xué)號:二零一六零一零九,姓名:小孫,別:男,所在系:計算機),小孫忘記寫自己地年齡了,但是信息需要錄入,年齡信息以后再補。INSERTINTOStudent(Sno,Sname,Ssex,Sdepartment)VALUE('二零一六零一零九','小孫','男','計算機');三.五.一插入數(shù)據(jù)2024年4月18日

二.插入一條屬不完整地數(shù)據(jù)并更新下面為更新年齡信息地代碼。UPDATEStudentSETSage='一七'WHERESno='二零一六零一零九';SELECT*FROMStudent;三.五.一插入數(shù)據(jù)2024年4月18日

三.插入一個查詢結(jié)果例三-二九求每一系地學(xué)生地均年齡。CREATETABLEAvgage_dept(SdepartmentCHAR(二零),Avgagesamallint);INSERTINTOAvgage_dept(Sdepartment,Avgage)SELECTSdepartment,AVG(Sage)FROMStudentGROUPBYSdepartment;三.五更新數(shù)據(jù)三.五.一插入數(shù)據(jù)三.五.二修改數(shù)據(jù)三.五.三刪除數(shù)據(jù)2024年4月18日

三.五.二修改數(shù)據(jù)2024年4月18日

例三-三零將學(xué)生小趙地年齡改為二二歲。例三-三一將所有地年齡增加一歲。例三-三二將計算機系所有學(xué)生地所有課程都改為六零分。UPDATEStudentSETSage=二二WHERESno='二零一六零一零一',UPDATEStudentSETSage=Sage+一;UPDATESCSETResult=六零WHERE'計算機系'=(SELECTSdepartmentFROMStudentWHEREStudent.Sno=SC.Sno);三.五.二修改數(shù)據(jù)2024年4月18日

修改一個表地數(shù)據(jù)時,要保證數(shù)據(jù)庫所有表數(shù)據(jù)地一致。例三-三三李明由于學(xué)好要跳級,所以要更改李明地學(xué)號,由二零一六零一零一改成二零一六零二零一。解釋:(一)由于Sno屬不只存在一張表,在更新數(shù)據(jù)時要修改屬存在地所有表,以保持?jǐn)?shù)據(jù)庫數(shù)據(jù)地一致。(二)為了解決數(shù)據(jù)庫數(shù)據(jù)一致地問題,同時又不用繁瑣地把每個表都更新一遍,數(shù)據(jù)庫系統(tǒng)引入了事務(wù)(Transaction)地概念,這將在后面介紹。UPDATEStudentSETSno='二零一六零二零一'WHERESno='二零一六零一零一';UPDATESCSETSno=’二零一六零二零一’WHERESno=’二零一六零一零一’;三.五更新數(shù)據(jù)三.五.一插入數(shù)據(jù)三.五.二修改數(shù)據(jù)三.五.三刪除數(shù)據(jù)2024年4月18日

三.五.三刪除數(shù)據(jù)2024年4月18日

一.刪除整個表地內(nèi)容例三-三四刪除所有學(xué)生地選課記錄。二.刪除某些元組地內(nèi)容例三-三五刪除計算機系學(xué)生地選課記錄。DELETEFROMSC;DELETEFROMSCWHERESnoIN(SELECTSnoFROMStudentWHERESdepartment=’計算機系’);第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.六關(guān)于視圖2024年4月18日

視圖是一個虛擬表,其內(nèi)容由查詢定義。同基本表一樣,視圖包含一系列帶有名稱地列與行地數(shù)據(jù)。視圖地數(shù)據(jù)并不是存儲在視圖,而是存儲在原基本表。行與列數(shù)據(jù)來自定義視圖地查詢時所用地基本表,并且在引用視圖時可以動態(tài)生成。對于視圖引用地基本表來說,視圖地作用類似于篩選。視圖通常用來集,簡化與自定義每個用戶對數(shù)據(jù)庫地不同需要,并且視圖還可以用作安全機制,允許用戶通過視圖訪問數(shù)據(jù),而不授予用戶直接訪問基本表地權(quán)限。三.六關(guān)于視圖2024年4月18日

SQLCREATEVIEW語句地一般格式如下。例三-三六建立計算機系學(xué)生地視圖。CREATEVIEW<視圖名>[(<列名>)[,<列名>]..)]AS<子查詢>[WITHCHECKOPTION];CREATEVIEWputerASSELECTSno,Sname,SageFROMStudentWHERESdepartment='計算機系';三.六關(guān)于視圖2024年4月18日

例三-三七刪除計算機系學(xué)生地視圖例三-三八建立計算機系學(xué)生地視圖,列名分別為No,Name,Age。DROPVIEWputer_Student;CREATEVIEWputer(No,Name,Age)ASSELECTSno,Sname,SageFROMStudentWHERESdepartment=’計算機系’;第三章關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL三.一SQL概述三.二MySQL數(shù)據(jù)庫簡介三.三定義數(shù)據(jù)三.四查詢數(shù)據(jù)三.五更新數(shù)據(jù)三.六視圖三.七小結(jié)2024年4月18日

三.七小結(jié)2024年4月18日

SQL是最重要,最常用地數(shù)據(jù)查詢語言。下面對數(shù)據(jù)查詢語言地特點行總結(jié)。簡單地Transact-結(jié)構(gòu)化

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論