電工與電子技術(shù)電子商務(wù)電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章ppt_第1頁
電工與電子技術(shù)電子商務(wù)電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章ppt_第2頁
電工與電子技術(shù)電子商務(wù)電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章ppt_第3頁
電工與電子技術(shù)電子商務(wù)電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章ppt_第4頁
電工與電子技術(shù)電子商務(wù)電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章ppt_第5頁
已閱讀5頁,還剩73頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、電子課件數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)第8章第8章MySQL數(shù)據(jù)操作管理數(shù)據(jù)庫原理及應(yīng)用教程(基于Linux的MySQL和NoSQL應(yīng)用)CONTENTS插入數(shù)據(jù)1修改數(shù)據(jù)2刪除數(shù)據(jù)3單表查詢4多表查詢4插入數(shù)據(jù)18.1.1 為表的所有字段插入數(shù)據(jù)1)INSERT語句中不指定具體的字段名INSERT語句有兩種方式可以同時為表的所有字段插入數(shù)據(jù)。第一種方式是不指定具體的字段名;第二種方式是列出表的所有字段。其中,“表名”參數(shù)指定記錄插入到哪個表中;“值n”參數(shù)表示要插入的數(shù)據(jù)?!爸?”到“值n”分別對應(yīng)著表中的每個字段。INSERT INTO 表名 VALUE

2、S(值1,值2,值n) 8.1.1 為表的所有字段插入數(shù)據(jù)【例8-1】向student表中插入記錄。INSERT語句代碼如下:INSERT INTO student VALUES (1418855233, 王一, 男, 1997-01-01, 1102, 商務(wù)1301);8.1.1 為表的所有字段插入數(shù)據(jù)2) INSERT語句中列出所有字段INSERT語句有兩種方式可以同時為表的所有字段插入數(shù)據(jù)。第一種方式是不指定具體的字段名;第二種方式是列出表的所有字段。其中,“字段名n”參數(shù)表示表中的字段名稱,此處必須列出表的所有字段的名稱;“值n”參數(shù)表示每個字段的值,每個值與相應(yīng)的字段對應(yīng)。INSER

3、T INTO表名(字段名1,字段名2,字段名n)VALUES(值1,值2,值n);8.1.1 為表的所有字段插入數(shù)據(jù)【例8-2】向student表中插入一條新記錄。INSERT語句的代碼如下:INSERT INTO student(sno,sname,ssex,sbirth,zno,sclass)VALUES(1418855234,李三,男,1996-07-08,1102,商務(wù)1301); 如果表的字段比較多,用第二種方法就比較麻煩。但是,第二種方法比較靈活??梢噪S意地設(shè)置字段的順序,而不需要按照表定義時的順序。值的順序也必須跟著字段順序的改變而改變。8.1.1 為表的所有字段插入數(shù)據(jù)【例8-

4、3】向student表中插入一條新記錄。INSERT語句中字段的順序與表定義時的順序不同。INSERT語句的代碼如下:INSERT INTO student(sno,sname,sbirth,ssex,zno,sclass)VALUES(1418855235,張平,1996-03-15,女,1102,商務(wù)1301); sbirth字段和ssex字段的順序發(fā)生了改變,其對于值的位置也跟著發(fā)生了改變。8.1.2 為表的指定字段插入數(shù)據(jù)上面講解的INSERT語句只是指定全部字段,這一節(jié)為表中的部分字段插入數(shù)據(jù)。INSERT INTO表名(字段名1,字段名2,字段名n) VALUES(值1,值2,值n

5、) 【例8-4】向student表的sno,sname和ssex這3個字段插入數(shù)據(jù)。INSERT INTO student(sno,sname,ssex, sbirth) VALUES(1418855236, 張強, 男 , 1996-03-15) ; 沒有賦值的字段,數(shù)據(jù)庫系統(tǒng)會為其插入默認值。這個默認值是在創(chuàng)建表的時候定義的。如zno字段和sclase字段的默認值為NULL。如果某個字段沒有設(shè)置默認值,而且是非空。這就必須為其賦值。8.1.2 為表的指定字段插入數(shù)據(jù)【例8-5】向student表的sno,sname和ssex字段插入數(shù)據(jù)。INSERT語句中,這3個字段的順序可以任意排列。I

6、NSERT語句的代碼如下:INSERT INTO student(sno,ssex,sname, sbirth)VALUES(1418855237,女,李蘋, 1996-03-15);8.1.3 同時插入多條記錄MySQL中,一個INSERT語句可以同時插入多條記錄。INSERT INTO表名(字段名列表) VALUES(取值列表1),(取值列表2),(取值列表n) 【例8-6】向student表中插入3條新記錄。INSERT語句的代碼如下:8.1.2 為表的指定字段插入數(shù)據(jù)【例8-7】向student表的sno,sname和ssex這3個字段插入數(shù)據(jù)??偣膊迦?條記錄。8.1.4 從目標(biāo)表中

7、插入值使用INSERT INTO SELECT可以從一個表或者多個表向目標(biāo)表中插入記錄。SELECT語句中返回的是一個查詢到的結(jié)果集,INSERT語句將這個結(jié)果插入到目標(biāo)表中,結(jié)果集中記錄的字段數(shù)和字段類型要與目標(biāo)表完全一致。INSERT INTO 表名列名列表 SELECT 列名列表 FROM 表名8.1.5 REPLACE語句使用REPLACE語句也可以將一條或多條記錄插入表中,或?qū)⒁粋€表中的結(jié)果集插入到目標(biāo)表中。REPLACE INTO 表名 VALUES(值列表)使用REPLACE語句添加記錄時,如果新記錄的主鍵值或者唯一性約束的字段值與已經(jīng)有記錄相同,則已有記錄被刪除后再添加新記錄。

8、修改數(shù)據(jù)28.2 修改數(shù)據(jù)修改數(shù)據(jù)是更新表中已經(jīng)存在的記錄。MySQL中,通過UPDATE語句來修改數(shù)據(jù)。UPDATE表名SET字段名1取值1,字段名2取值2, 字段名n取值n WHERE條件表達式 【例8-8】更新student表中sno值為1418855243的記錄。將sname字段的值變?yōu)槔顗?。將sbirth字段的值變?yōu)?996-03-23。UPDATE studentSET sname=李凱, sbirth=1996-03-23WHERE sno=1418855243 ; 使用UPDATE語句會更新所有滿足條件的記錄。但在MySQL中是需要一條一條的執(zhí)行。8.1.2 為表的指定字段插入

9、數(shù)據(jù)【例8-9】更新student表中sname值為李凱的記錄。將sbirth字段的值變?yōu)椤?997-01-01”。將ssex字段的值變?yōu)椤芭薄h除數(shù)據(jù)3刪除數(shù)據(jù)是刪除表中已經(jīng)存在的記錄。通過這種方式可以刪除表中不再使用的記錄。例如,學(xué)生表中某個學(xué)生退學(xué)了,這就需要從學(xué)生表中刪除該同學(xué)的信息。MySQL中,通過DELETE語句來刪除數(shù)據(jù)。如果完全清除某一個表可以使用truncate。8.3.1 使用DELETE刪除表數(shù)據(jù)MySQL中,DELETE語句的基本語法形式如下:DELETE FROM表名 WHERE條件表達式 【例8-10】刪除student表中sno值為1418855243的記錄。

10、8.3.1 使用DELETE刪除表數(shù)據(jù)【例8-11】刪除student表中sclass的值為商務(wù)1301的記錄。DELETE FROM student WHERE sclass=商務(wù)1301;DELETE語句可以同時刪除多條記錄。DELETE語句中如果不加上“WHERE條件表達式”,數(shù)據(jù)庫系統(tǒng)會刪除指定表中的所有數(shù)據(jù)。請謹慎使用。8.3.2 使用TRUNCATE清空表數(shù)據(jù)TRUNCATE用于完全清空一個表,基本語法形式如下:TRUNCATE TABLE 表名【例8-12】清除SC表TRUNCATE TABLE SC;8.3.2 使用TRUNCATE清空表數(shù)據(jù)TRUNCATE TABLE:刪除內(nèi)

11、容、釋放空間但不刪除定義。DELETE TABLE:刪除內(nèi)容不刪除定義,不釋放空間。DROP TABLE:刪除內(nèi)容和定義,釋放空間。TRUNCATE,DELETE,DROP放在一起比較:單表查詢48.4.2 簡單查詢?yōu)榱搜菔疽幌碌牟樵儯覀冃枰獎?chuàng)建一下幾張表:8.4.2 簡單查詢?yōu)榱搜菔疽幌碌牟樵?,我們需要?chuàng)建一下幾張表:8.4.2 簡單查詢?yōu)榱搜菔疽幌碌牟樵儯覀冃枰獎?chuàng)建一下幾張表:8.4.2 簡單查詢?yōu)榱搜菔疽幌碌牟樵?,我們需要?chuàng)建一下幾張表:8.4.2 簡單查詢1. 查詢所有字段查詢所有字段是指查詢表中的所有字段的數(shù)據(jù),有兩中方式:一種是列出表中的所有字段。另一種是使用通配符*來查詢 方

12、式1:使用 SELECT zno,sclass ,sno,sname,ssex,sbirth FROM student;返回的結(jié)果字段的順序和SELECT語句中指定的順序一致 【例8-13】查詢學(xué)生的所有信息8.4.2 簡單查詢方式2:使用SELECT * FROM student;返回的結(jié)果字段的順序是固定的,和建立表時指定的順序一致?!纠?-13】查詢學(xué)生的所有信息8.4.2 簡單查詢2. 指定字段查詢有些時候并不需要將表中的所有字段都顯示出來,只需要查詢需要的字段就可以,這就需要我們在SELECT中指定需要的字段。SELECT sno,sname FROM student;【例8-14】

13、查詢學(xué)生的學(xué)號和姓名。8.4.2 簡單查詢3. 避免重復(fù)數(shù)據(jù)查詢DISTINCT關(guān)鍵字可以去除重復(fù)的查詢記錄。和DISTINCT相對的是all關(guān)鍵字,即顯示所有的記錄(包括重復(fù)的),而all關(guān)鍵字是系統(tǒng)默認的,可以省略不寫。SELECT sclass FROM student;SELECT DISTINCT sclass FROM student;【例8-15】查詢在student表中的班級。8.4.2 簡單查詢【例8-15】查詢在student表中的班級??梢钥闯觯肈ISTINCT關(guān)鍵字后,結(jié)果中重復(fù)的記錄只保留一條。8.4.2 簡單查詢4. 為表和字段取別名SELECT ALL | DI

14、STINCT AS 別名 , AS 別名 . . .FROM 別名 , 別名 . . .【例8-16】查詢學(xué)生的學(xué)號,成績。并指定返回的結(jié)果中的列名為學(xué)號,成績,而不是sno和grade。SELECT sno 學(xué)號,grade 成績 FROM sc;8.4.2 簡單查詢【例8-17】查詢sc表中學(xué)生的的成績提高10%,對顯示后的成績列,顯示為“修改后成績”。SELECT sno 學(xué)號,grade 成績,grade*1.1 AS 修改后成績 FROM sc;8.4.3 條件查詢條件查詢主要使用關(guān)鍵字WHERE指定查詢的條件WHERE子句常用的查詢條件有很多種,如下表所示。條件表達式中設(shè)置的條件越

15、多,查詢出來的記錄就會越少。因為,設(shè)置的條件越多,查詢語句的限制就更多,能夠滿足所有條件的記錄就更少。為了使查詢出來的記錄正是自己想要查詢的記錄,可以在WHERE語句中將查詢條件設(shè)置得更加具體。8.4.3 條件查詢1.帶關(guān)系運算符和邏輯運算符的查詢MYSQL中,可以通過關(guān)系運算符和邏輯運算符來編寫“條件表達式”。MySQL支持的比較運算符有 , ,!= ,=(),= ,90;【例8-18】查詢成績大于90分學(xué)生的學(xué)號和成績。8.4.3 條件查詢【例8-19】查詢成績在70分到80分之間(包含70分和80分)學(xué)生的學(xué)號和成績。SELECT sno 學(xué)號,grade 成績 FROM sc WHER

16、E grade=70 AND grade=80;8.4.3 條件查詢1.IN關(guān)鍵字的查詢IN關(guān)鍵字可以判斷某個字段的值是否在指定的集合中,如果字段的值在集合中,則滿足查詢條件,該記錄將被查詢出來;如果不在集合中,則不滿足查詢條件。其中,NOT是可選參數(shù),加上NOT表示不在集合內(nèi)滿足條件:字符型元素要加上單引號。NOT IN (元素1,元素2, 元素3, . . . )【例8-20】查詢成績在集合(65,75,85,95)中的學(xué)生的學(xué)號和成績8.4.3 條件查詢2.帶BETWEEN AND關(guān)鍵字的查詢BETWEEN AND關(guān)鍵字可以判斷讀某個字段的值是否在指定的范圍內(nèi),如果在,則滿足條件,否則不

17、滿足。其中,“NOT”是可選參數(shù),加上NOT表示不在指定范內(nèi)滿足條件;“取值 1”表示范圍的起始值;“取值2”表示范圍的終止值。 NOT BETWEEN取值1 AND取值2【例8-21】查詢成績在70分到80分之間(包含70分和80分)學(xué)生的學(xué)號和成績。8.4.3 條件查詢【例8-22】使用BETWEEN AND關(guān)鍵字進行查詢,查詢條件是sno字段的取值從14188552401418855242。SELECT * FROM student WHERE sno BETWEEN 1411855240 AND 1418855242; NOT BETWEEN AND的取值范圍是小于“取值1”,而大于“

18、取值2”8.4.3 條件查詢【例8-23】使用NOT BETWEEN AND關(guān)鍵字查詢student表。查詢條件是sno字段的取值不在14188552401418855242之間。SELECT * FROM student WHERE sno NOT BETWEEN 1411855240 AND 1418855242;技巧:BETWEEN AND和NOT BETWEEN AND關(guān)鍵字在查詢指定范圍的記錄時很有用。8.4.3 條件查詢3.帶IS NULL關(guān)鍵字的空值查詢(數(shù)據(jù)有問題)IS NULL關(guān)鍵字可以用來判斷字段的值是否為空值(NULL).如果字段值為空值,則滿足查詢條件,否則不滿足。IS

19、 not NULL【例8-24】查詢已經(jīng)分專業(yè)的學(xué)生的學(xué)號和姓名。查詢條件:已經(jīng)分專業(yè)說明專業(yè)號不為空,即 zno IS NOT NULL;SELECT sno,sname,zno FROM student WHERE zno IS NOT NULL;8.4.3 條件查詢IS NULL 是一個整體,不能將IS換成“=”。如果將IS換成“=”,將查詢不到我們想要的結(jié)果,如下:zno=NULL表示要查詢的zno的值是字符串“NULL”,而不是空值。當(dāng)然IS NOT NULL 中的IS NOT也不可以換成!= 或者 。8.4.3 條件查詢4.帶LIKE關(guān)鍵字的查詢 LIKE關(guān)鍵字可以匹配字符串是否相

20、等。如果字段的值與指定的字符串相匹配,則滿足條件(1)“%”可以代表任意長度的字符串,長度可以為0。(2)“_”只能表示單個字符。 NOT LIKE “字符串”;【例8-25】使用LIKE關(guān)鍵字來匹配一個完整的字符串 藍梅。SELECT * FROM student WHERE sname LIKE 藍梅;此處的LIKE與等號()是等價的。如果字符串中包含了通配符,兩者則不等價8.4.3 條件查詢【例8-26】使用LIKE關(guān)鍵字來匹配帶有通配符%的字符串李%。SELECT語句的代碼如下:SELECT * FROM student WHERE sname LIKE 李%; 【例8-27】使用LI

21、KE關(guān)鍵字來匹配帶有通配符_的字符串。SELECT * FROM student WHERE sname LIKE 李_ _; 8.4.3 條件查詢【例8-28】使用NOT LIKE關(guān)鍵字來查詢不是姓李的所有人的記錄。SELECT * FROM student WHERE sname NOT LIKE 李%;假若LIKE 字符串中的要匹配的字符串奔上就含有通配符百分號%或者下劃線“_”,那么我們可以使用ESCAPE短語,對通配符進行轉(zhuǎn)移。8.4.4 高級查詢1. 分組查詢GROUP BY關(guān)鍵字可以將查詢結(jié)果按某個字段或多個字段進行分組。字段中值相等的為一組。其中,“字段名”是指按照該字段的值進

22、行分組;“HAVING條件表達式”用來限制分組后的顯示,滿足條件表達式的結(jié)果將被顯示;WITH ROLLUP關(guān)鍵字將會在所有記錄的最后加上一條記錄。該記錄是上面所有記錄的總和。GROUP BY字段名 HAVING條件表達式 WITH ROLLUP 【例8-29】按student表的ssex字段進行分組查詢。SELECT * FROM student GROUP BY ssex; 8.4.3 條件查詢【例8-30】按student表的ssex字段進行分組查詢。然后顯示記錄數(shù)大于等于10的分組(COUNT()用來統(tǒng)計記錄的條數(shù))。SELECT ssex,COUNT(ssex)FROM studen

23、tGROUP BY ssex HAVING COUNT(ssex)=10;說明:“WHERE條件表達式”作用于表或者視圖,是表和視圖的查詢條件。“HAVING條件表達式”作用于分組后的記錄,用于選擇滿足條件的組。 8.4.4 高級查詢2. 對查詢結(jié)果排序從表中查詢出來的數(shù)據(jù)可能是無序的,或者其排列順序不是用戶所期望的順序。ASC參數(shù)表示按升序的順序進行排序;DESC參數(shù)表示按降序的順序進行排序。ORDER BY字段名ASCDESC 【例8-31】查詢student表中所有記錄,按照zno字段進行排序。SELECT * FROM student ORDER BY zno ; 注意:按升序排序時,

24、含空值的記錄將最先顯示。8.4.3 條件查詢【例8-32】查詢student表中所有記錄,按照zno字段的升序方式和sno字段的降序方式進行排序。SELECT * FROM student ORDER BY zno ASC,sno DESC; 8.4.4 高級查詢3. 限制查詢結(jié)果數(shù)量當(dāng)使用SELECT語句返回的結(jié)果集中行數(shù)很多時,為了便于用戶對結(jié)果數(shù)據(jù)的瀏覽和操作,可以使用LIMIT子句來限制被SELECT語句返回的行數(shù)。其中,offset為可選項,默認為數(shù)字0,用于指定返回數(shù)據(jù)的第一行在SELECT語句結(jié)果集中的偏移量,其必須是非負的整數(shù)常量。row_count用于指定返回數(shù)據(jù)的行數(shù)LIM

25、IT offset, row_count | row_count OFFSET offset 【例8-33】在student表中查找從第3名同學(xué)開始的3位學(xué)生的信息。SELECT * FROM student ORDER BY sno LIMIT 2,3; 8.4.4 高級查詢4. 聚合函數(shù)集合函數(shù)包括COUNT()、SUM()、 AVG()、MAX()和MIN()。SUM、AVG、MAX和MIN都適用以下規(guī)則:如果某個給定行中的一列僅包含NULL值,則函數(shù)的值等于NULL值。如果一列中的某些值為NULL值,則函數(shù)的值等于所有非NULL值的平均值除以非NULL值的數(shù)量(不是除以所有值)。對于必

26、須計算的SUM和AVG函數(shù),如果中間結(jié)果為空,在函數(shù)的值等于NULL值。8.4.4 高級查詢(1)COUNT()函數(shù)COUNT用于統(tǒng)計組中滿足條件的行數(shù)或總行數(shù)COUNT( ALL |DISTINCTI*)【例8-34】使用COUNT()函數(shù)統(tǒng)計student表的記錄數(shù)。SELECT COUNT(*) AS 學(xué)生總?cè)藬?shù) FROM student;8.4.4 高級查詢【例8-35】使用COUNT()函數(shù)統(tǒng)計student表不同zno值的記錄數(shù)。COUNT()函數(shù)與GROUP BY關(guān)鍵字一起使用。SELECT zno AS 專業(yè)號,COUNT(*) AS 專業(yè)人數(shù)FROM studentGROUP

27、 BY zno; 8.4.4 高級查詢(2)SUM()函數(shù)SUM()函數(shù)是求和函數(shù)。使用SUM()函數(shù)可以求表中某個字段取值的總和。例如,可以用SUM()函數(shù)來求學(xué)生的總成績?!纠?-36】使用SUM()函數(shù)統(tǒng)計sc表中學(xué)號為1414855328的同學(xué)的總成績。SELECT sno 學(xué)號,SUM(grade) 總成績FROM scWHERE sno=1414855328; SUM()函數(shù)通常和GROUP BY關(guān)鍵字一起使用。這樣可以計算出不同分組中某個字段取值的總和。8.4.4 高級查詢【例8-37】將sc表按照sno字段進行分組。然后,使用SUM()函數(shù)統(tǒng)計各分組的總成績。SELECT sn

28、o 學(xué)號,SUM(grade) 總成績FROM scGROUP BY sno ; 注意:SUM()函數(shù)只能計算數(shù)值類型的字段。包括INT類型、FLOAT類型、DOUBLE類型、DECIMAL類型等。使用SUM()函數(shù)計算字符類型字段時,計算結(jié)果都為0。8.4.4 高級查詢(3)AVG()函數(shù)AVG()函數(shù)是求平均值的函數(shù)。使用AVG()函數(shù)可以求出表中某個字段取值的平均值。例如,可以用AVG()函數(shù)來求平均年齡,也可以使用AVG()函數(shù)來求學(xué)生的平均成績。【例8-38】使用AVG()函數(shù)計算sc表中平均成績。SELECT AVG(grade) 平均成績FROM sc; 8.4.4 高級查詢【例

29、8-39】使用AVG()函數(shù)計算sc表中不同科目的平均成績。SELECT cno 課程號 ,AVG(grade) 平均成績 FROM scGROUP BY cno; AVG()函數(shù)與GROUP BY關(guān)鍵字結(jié)合后可以靈活的計算平均值。8.4.4 高級查詢(4)MAX()函數(shù)MAX()函數(shù)是求最大值的函數(shù)。使用MAX()函數(shù)可以求出表中某個字段取值的最大值。例如,可以用MAX()函數(shù)來查詢最大年齡,也可以使用MAX()函數(shù)來求各科的最高成績?!纠?-40】使用MAX()函數(shù)查詢sc表中不同科目的最高成績。SELECT cno課程號,MAX(grade)最高成績FROM scGROUP BY cno

30、; MAX()函數(shù)與GROUP BY關(guān)鍵字結(jié)合后可以查詢出不同分組的最大值。8.4.4 高級查詢MAX()不僅僅適用于數(shù)值類型,也適用于字符類型?!纠?-41】句使用MAX()函數(shù)查詢student表中sname字段的最大值。SELECT語句如下:SELECT MAX(sname) FROM student; MAX()函數(shù)是使用字符對應(yīng)的ASCII碼進行計算的。8.4.4 高級查詢(5)MIN()函數(shù)MIN()函數(shù)是求最小值的函數(shù)。使用MIN()函數(shù)可以求出表中某個字段取值的最小值。例如,可以用MIN()函數(shù)來查詢最小年齡,也可以使用MIN()函數(shù)來求各科的最低成績?!纠?-42】使用MIN

31、()函數(shù)查詢sc表中不同科目的最低成績。SELECT cno 課程號,MIN(grade) 最低成績FROM scGROUP BY cno ; 多表查詢58.5.1 內(nèi)連接查詢內(nèi)連接查詢是最常用的一種查詢,也成為等同查詢,就是在表關(guān)系的笛卡爾積數(shù)據(jù)記錄中,保留表關(guān)系中所有相匹配的數(shù)據(jù),而舍棄不匹配的數(shù)據(jù)。按照匹配條件可以分為自然連接、等值連接和不等值連接。1.等值連接(inner join)用來連接兩個表的條件稱為連接條件。如果連接條件中的連接運算符是=時,稱為等值連接。8.5.1 內(nèi)連接查詢【例8-43】對選修表和課程表做等值連接(返回的結(jié)果限制在4條以內(nèi))SELECT * FROM sc

32、INNER JOIN course ON o = oLIMIT 4;8.5.1 內(nèi)連接查詢2.自然連接(natural join)自然連接操作就是表關(guān)系的笛卡爾積中選取滿足連接條件的行。首先根據(jù)表關(guān)系中相同名稱的字段進行記錄匹配,然后去掉重復(fù)的字段。還可以理解為在等值連接中把目標(biāo)列種重復(fù)的屬性列去掉則為自然連接?!纠?-44】對選修表和課程表做自然連接(返回的結(jié)果限制在4條以內(nèi))SELECT *FROM sc NATURAL JOIN courseLIMIT 4;8.5.1 內(nèi)連接查詢3.不等值連接(inner join)在WHERE字句中用來連接兩個表的條件稱為連接條件。如果連接條件中的連接

33、運算符是=時,稱為等值連接。如果是其他的運算符,則是不等值連接【例8-45】對選修表和課程表做不等值連接(返回的結(jié)果限制在4條以內(nèi))SELECT * FROM sc INNER JOIN course ON o != oLIMIT 4;8.5.2 外連接查詢外連接可以查詢兩個或兩個以上的表,外連接查詢和內(nèi)連接查詢非常的相似,也需要通過指定字段進行連接,當(dāng)該字段取值相等時,可以查詢出該表的記錄。而且,該字段取值不相等的記錄也可以查詢出來。外連接可分為左連接和右連接?;菊Z法如下:SELECT 字段表 FROM 表1 LEFT | RIGHT OUTER JOIN 表2 ON 表1.字段=表2.字段8.5.2 外連接查詢1.左外連接(left join)左外連接的結(jié)果集中包含左表(JOIN關(guān)鍵字左邊的表)中所有的記錄,然后左表按照連接條件與右表進行連接。如果右表中沒有滿足連接條件的記錄,則結(jié)果集中右表中的相應(yīng)行數(shù)據(jù)填充為NULL?!纠?-46】利用左連接方式 查詢課程表和選修表8.5.2 外連接查詢2

溫馨提示

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

最新文檔

評論

0/150

提交評論