|
第一章 分組數(shù)據(jù) 如何分組數(shù)據(jù),以便能匯總表內(nèi)容的子集。 13.1 數(shù)據(jù)分組  目前為止的所有計(jì)算都是在表的所有數(shù)據(jù)或匹配特定的WHERE子句的數(shù)據(jù)上進(jìn)行的。 13.2 創(chuàng)建分組  A. GROUP BY子句指示MySQL分組數(shù)據(jù),然后對(duì)每個(gè)組而不是整個(gè)結(jié)果集進(jìn)行聚集。 B. GROUP BY子句可以包含任意數(shù)目的列。除了聚集計(jì)算語(yǔ)句外,SELECT語(yǔ)句中的每個(gè)列都必須在GROUP BY子句中給出。 C. 如果在GROUP BY子句中嵌套了分組,數(shù)據(jù)將在最后規(guī)定的分組上進(jìn)行匯總。在子句中列出的每個(gè)列都必須是檢索列或有效的表達(dá)式。 D. 如果分組中具有NULL值,則NULL將作為一個(gè)分組返回。 E. GROUP BY子句必須出現(xiàn)在WHERE子句之后,ORDER BY子句之前。 F. 使用WITH ROLLUP關(guān)鍵字,可以得到每個(gè)分組以及每個(gè)分組匯總級(jí)別(針對(duì)每個(gè)分組)的值。 
13.3 過濾分組 A.WHERE過濾指定的是行而不是分組。WHERE沒有分組的概念。我們可以使用HAVING子句過濾分組。HAVING支持所有WHERE操作符。WHERE在數(shù)據(jù)分組前進(jìn)行過濾,HAVING在數(shù)據(jù)分組后進(jìn)行分組。   ![1572930476.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleC3~GU5B4P@N6NM5]~`Y(R(T.jpg](/ueditor/php/upload/image/20191105/1572930476.jpg) 13.4 分組和排序 A. ORDER BY與GROUP BY的區(qū)別:  C.不要忘記ORDER BY :一般在使用GROUP BY子句時(shí),應(yīng)該也給出ORDER BY子句。這是保證數(shù)據(jù)正確排序的唯一方法。 ![1572930509.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleY@)}A$]{N1]BYWAP3ACK@YU.jpg](/ueditor/php/upload/image/20191105/1572930509.jpg) 13.5 SELECT子句順序
![1572930517.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleK]@OJIRI6(Q9M3D8JL))8_N.jpg](/ueditor/php/upload/image/20191105/1572930517.jpg) 第二章 使用子查詢 14.1 子查詢 A.MySQL引入了對(duì)子查詢的支持。SELECT語(yǔ)句是SQL的查詢。迄今為之我們所看到的所有SELECT語(yǔ)句都是簡(jiǎn)單查詢,即從單個(gè)數(shù)據(jù)庫(kù)表中檢索數(shù)據(jù)的單條語(yǔ)句。 B.子查詢(subquery),即嵌套在其他查詢中的查詢。查詢(query):任何SQL語(yǔ)句都是查詢,但此術(shù)語(yǔ)一般指SELECT語(yǔ)句。 14.2 利用子查詢進(jìn)行過濾 A.格式化SQL:把子查詢分解為多行并且適當(dāng)?shù)剡M(jìn)行縮進(jìn),能極大地簡(jiǎn)化子查詢的使用。  B.子查詢和性能 14.3 作為計(jì)算字段使用子查詢 A.相關(guān)子查詢(correlated subquery)涉及外部查詢的子查詢。  如果以上查詢不使用完全限定的列名:  C,這里給出的樣例代碼運(yùn)行良好,但它并不是解決這種數(shù)據(jù)檢索的最有效的方法。 D,逐漸增加子查詢來建立查詢:用子查詢建立(和測(cè)試)查詢的最可靠的方法是逐漸進(jìn)行。 第三章 聯(lián)結(jié)表 15.1 聯(lián)結(jié)(join) A.在數(shù)據(jù)檢索查詢的執(zhí)行中聯(lián)結(jié)(join)表。 B.關(guān)系表的設(shè)計(jì)就是要保證把信息分解成多個(gè)表,一類數(shù)據(jù)一個(gè)表。各表通過某些常用的值(即關(guān)系設(shè)計(jì)中的關(guān)系(relational))互相關(guān)聯(lián)。 C.外鍵(foreign key):外鍵為某個(gè)表中的一列,它包含另外一個(gè)表的主鍵值,定義了兩個(gè)表之間的關(guān)系。 D.可伸縮性(scale):能夠適應(yīng)不斷增加的工作量而不失敗。 E.為什么要使用聯(lián)結(jié):如果數(shù)據(jù)存儲(chǔ)在多個(gè)表中怎樣用單條SELECT語(yǔ)句檢索出數(shù)據(jù)。 F.維護(hù)引用完整性:通過在表的定義中指定主鍵和外鍵來實(shí)現(xiàn)的。 15.2 創(chuàng)建聯(lián)結(jié) ![1572930552.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleS}8$_]6B{}~`B}W7V9H2`C2.jpg](/ueditor/php/upload/image/20191105/1572930552.jpg) A. 笛卡爾積(cartesian product):由沒有聯(lián)結(jié)條件的表關(guān)系返回的結(jié)果為笛卡爾積。 B. 不要忘了WHERE子句:應(yīng)該保證所有聯(lián)結(jié)都有WHERE子句,否則MySQL將返回比想要的數(shù)據(jù)多得多的數(shù)據(jù)。 C. 叉聯(lián)結(jié):叉聯(lián)結(jié)(cross join)的笛卡爾積的聯(lián)結(jié)類型。 D. 目前為之所用的聯(lián)結(jié)稱為內(nèi)部聯(lián)結(jié)或等值聯(lián)結(jié)(equijoin),它基于兩個(gè)表之間的相等測(cè)試。SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;(ANSI SQL規(guī)范首選INNER JOIN語(yǔ)法) E. 聯(lián)結(jié)多個(gè)表:性能考慮——MySQL在運(yùn)行時(shí)關(guān)聯(lián)指定的每個(gè)表以處理聯(lián)結(jié),這種處理可能是非常耗費(fèi)資源的。 F. 多做實(shí)驗(yàn):為執(zhí)行任一給定的SQL操作,一般存在不止一種方法。很少有絕對(duì)正確或絕對(duì)錯(cuò)誤的方法。性能可能會(huì)受操作類型,表中數(shù)據(jù)量,是否存在索引或鍵以及其他一些條件的影響。 ![1572930562.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle]M50UT~T11Z)4ILF8RU}4LL.jpg](/ueditor/php/upload/image/20191105/1572930562.jpg)
 第四章 創(chuàng)建高級(jí)聯(lián)結(jié) 16.1 使用表別名 A.別名除了用于列名和計(jì)算字段外,SQL還允許給表名起別名,這樣做主要是為了:縮短SQL語(yǔ)句;允許在單條SELECT語(yǔ)句中多次使用相同的表。 B.表別名只在查詢執(zhí)行中使用,與列別名不一樣,表別名不返回到客戶機(jī)。  16.2 使用不同類型的聯(lián)結(jié) A.用自聯(lián)結(jié)而不用子查詢自聯(lián)結(jié)通常作為外部語(yǔ)句用來替代從相同表中檢索數(shù)據(jù)時(shí)使用的子查詢語(yǔ)句。   B. 自然聯(lián)結(jié)排除多次出現(xiàn),使每個(gè)列只返回一次。它是這樣一種聯(lián)結(jié),其中你只能選擇哪些唯一的列。這一般是通過對(duì)表使用通配符(SELECT *),對(duì)所有其他表的列使用明確的子集來完成的。  C. 外部聯(lián)結(jié):聯(lián)結(jié)包含了哪些在相關(guān)表中沒有關(guān)聯(lián)行的行。例如,列出所有產(chǎn)品以及訂購(gòu)數(shù)量,包括沒有人訂購(gòu)的產(chǎn)品。 D. LEFT OUTER JOIN從FROM子句的左邊表中選擇所有行。RIGHT OUTER JOIN則反之 E. 沒有*=操作符 MySQL不支持簡(jiǎn)化字符*= 和=*的使用,這兩種操作符在其他DBMS中是很流行的。外部聯(lián)結(jié)的類型:左外部聯(lián)結(jié)和右外部聯(lián)結(jié)。 ![1572930614.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle]RQDSW5X7I{6`IOYUF2D7EU.jpg](/ueditor/php/upload/image/20191105/1572930614.jpg)  16.3 使用帶聚集函數(shù)的聯(lián)結(jié)  ![1572930638.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle$]25{PLRZ}W5CZ(R%G88_4T.jpg](/ueditor/php/upload/image/20191105/1572930638.jpg) 16.2 使用聯(lián)結(jié)和聯(lián)結(jié)條件 A.注意所使用的聯(lián)結(jié)類型。一般我們使用內(nèi)部聯(lián)結(jié),但使用外部聯(lián)結(jié)也是有效的。 B.保證使用正確的聯(lián)結(jié)條件,否則將返回不正確的數(shù)據(jù)。 C.應(yīng)該總是提供聯(lián)結(jié)條件,否則會(huì)得出笛卡爾積。 D.在一個(gè)聯(lián)結(jié)中可以包含多個(gè)表,設(shè)置對(duì)于每個(gè)聯(lián)結(jié)可以采用不同的聯(lián)結(jié)類型。雖然這樣做是合法的,一般也很有用,但應(yīng)該在一起測(cè)試它們前,分別測(cè)試每個(gè)聯(lián)結(jié)。 第五章 組合查詢 17.1 組合查詢 A.MySQL允許執(zhí)行多個(gè)查詢(多條SELECT語(yǔ)句),并將結(jié)果作為單個(gè)查詢結(jié)果集返回。這些組合查詢通常稱為并(union)或復(fù)合查詢(compound query)。 B.需要使用組合查詢的兩種基本情況:在單個(gè)查詢中從不同的表返回類似結(jié)構(gòu)的數(shù)據(jù)。對(duì)單個(gè)表執(zhí)行多個(gè)查詢,按單個(gè)查詢返回?cái)?shù)據(jù)。 17.2 創(chuàng)建組合查詢 A.UNION操作符:利用UNION,可給出多條SELECT語(yǔ)句,將它們的結(jié)果組合成單個(gè)結(jié)果集。 B.UNION規(guī)則:UNION必須由兩條或兩條以上的SELECT語(yǔ)句組成,語(yǔ)句之間用關(guān)鍵字UNION分隔。UNION中的每個(gè)查詢必須包含相同的列,表達(dá)式或聚集函數(shù)。列數(shù)據(jù)類型必須兼容。 C.包含或取消重復(fù)的行:使用UNION ALL,MySQL不取消重復(fù)的行。 D.對(duì)組合查詢結(jié)果排序:在用UNION組合查詢時(shí),只能使用一條ORDER BY。 E.組合不同的表:使用UNION的組合查詢可以應(yīng)用不同的表。 ![1572930648.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleHPDV3MH`9YU27_7}J0N]X2F.jpg](/ueditor/php/upload/image/20191105/1572930648.jpg) ![1572930656.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleY_@D]WV%RHR9X1}9SADEAEF.jpg](/ueditor/php/upload/image/20191105/1572930656.jpg)  第六章 全文本搜索 18.1 理解全文本搜索 A.并非所有引擎都支持全文本搜索:MySQL支持幾種基本的數(shù)據(jù)庫(kù)引擎。MyISAM支持全文本搜索,而InnoDB不支持全文本搜索。 18.2 使用全文本搜索 A.為了進(jìn)行全文本搜索,必須索引被搜索的列,而且要隨著數(shù)據(jù)的改變不斷地重新索引。 B.不要在導(dǎo)入數(shù)據(jù)時(shí)使用FULLTEXT:如果正在導(dǎo)入數(shù)據(jù)到一個(gè)新表,此時(shí)不應(yīng)該啟用FULLTEXT索引。 C.使用完整的Match()說明:傳遞給Match()的值必須與FULLTEXT()定義中的相同。如果指定多個(gè)列,則必須列出它們(而且次序正確) D.搜索不區(qū)分大小寫:除非使用BINARY方式,否則全文本搜索不區(qū)分大小寫。 E.使用查詢擴(kuò)展:查詢擴(kuò)展用來設(shè)法放寬所返回的全文本搜索結(jié)果的范圍。利用查詢擴(kuò)展,能找出可能相關(guān)的結(jié)果,即使它們并不精確包含所查找的詞。 F.行越多越好:表中的行越多,使用查詢擴(kuò)展返回的結(jié)果越好。 G.布爾文本搜索(boolean mode):即使沒有FULLTEXT索引也可以使用。但這是一種非常緩慢的操作。在布爾方式中,不按等級(jí)值降序排序返回的行。 H.以布爾方式,可以提供關(guān)于如下內(nèi)容的細(xì)節(jié):要匹配的詞,要排斥的詞。排列提示,表達(dá)式分組,另外一些內(nèi)容。
 第七章 插入數(shù)據(jù) 19.1 數(shù)據(jù)插入 A.插入可以用幾種方式使用:插入完整的行;插入行的一部分;插入多行;插入某些查詢的結(jié)果。 B.插入及系統(tǒng)安全:可針對(duì)每個(gè)表或每個(gè)客戶,利用MySQL的安全機(jī)制禁止使用INSERT語(yǔ)句。 19.2 插入完整的行 A.INSERT INTO Customers VALUES(NULL, ‘Pep E. LaPew’, ‘100 Main Street’, ‘Los Angeles’, ‘CA’, ‘90046’, ‘USA’, NULL, NULL); 沒有輸出:INSERT語(yǔ)句一般不會(huì)產(chǎn)生輸出。 B.總是使用列的列表:一般不要使用沒有明確給出列的列表的INSERT語(yǔ)句。 C.仔細(xì)地給出值:不管哪種INSERT語(yǔ)法,都必須給出VALUES的正確數(shù)目。 D.省略列:如果表的定義允許,則可以在INSERT操作中省略某些列。省略的列必須滿足以下某個(gè)條件。該列定義為允許NULL值(無值或空值)。在表定義給出默認(rèn)值。 E.如果數(shù)據(jù)檢索是最重要的,則你可以通過在INSERT和INTO之間添加關(guān)鍵字LOW_PRIORITY,指示MySQL降低INSERT語(yǔ)句的優(yōu)先級(jí)。這也適用與UPDATA和DELETE語(yǔ)句。 F.編寫INSERT語(yǔ)句的更安全的方法:INSERT INTO Customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email) VALUES( ‘Pep E. LaPew’, ‘100 Main Street’, ‘Los Angeles’, ‘CA’, ‘90046’, ‘USA’, NULL, NULL);它在表名后的括號(hào)里明確地給出了列名。在插入行時(shí),MySQL將用VALUES列表中的相應(yīng)值填入列表中的對(duì)應(yīng)項(xiàng)。 19.3 插入多個(gè)行 A.可以使用多條INSERT語(yǔ)句,設(shè)置一次提交它們,每條語(yǔ)句用一個(gè)分號(hào)結(jié)束?;蛘咧灰織lINSERT語(yǔ)句中的列名(和次序)相同:INSERT INTO Customers(cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country) VALUES( ‘Pep E. LaPew’, ‘100 Main Street’, ‘Los Angeles’, ‘CA’, ‘90046’, ‘USA’),( ‘M. Martain’, ‘42 Galaxy Way’, ‘New York’, ‘NY’, ‘11213’, ‘USA’);其中單條INSERT語(yǔ)句有多組值,每組值用一對(duì)圓括號(hào)括起來,用逗號(hào)分隔。后者的性能高。 19.4 插入檢索出的數(shù)據(jù) A.INSERT SELECT:它由一條INSERT語(yǔ)句和一條SELECT語(yǔ)句組成的。 B.INSERT SELECT中的列名:不一定要求列名匹配。MySQL只用的是列的位置,因此SELECT中第一列將用來填充表列中指定的第一列,以此類推。 第八章 更新和刪除數(shù)據(jù) 20.1 更新(修改)數(shù)據(jù) A.UPDATE:更新表中特定行;更新表中所有行。 B.UPDATE語(yǔ)句由3部分組成:要更新的表;列名和它們的新值(SET);確定要更新行的過濾條件。 C.在UPDATE語(yǔ)句中使用子查詢。IGNORE關(guān)鍵字:如果用UPDATE語(yǔ)句更新多行,并且在更新這些行中的一行或多行時(shí)出現(xiàn)一個(gè)錯(cuò)誤,則整個(gè)UPDATE操作被取消。忽略錯(cuò)誤,繼續(xù)進(jìn)行更新。UPDATE IGNORE customers… D.為了刪除某個(gè)列的值,可設(shè)置它為NULL 20.2 刪除數(shù)據(jù) A.DELETE語(yǔ)句:從表中刪除特定的行;從表中刪除所有行。 B.刪除表的內(nèi)容而不是表;更快的刪除:如果想從表中刪除所有行,不要使用DELETE,可使用TRUNCATE TABLE語(yǔ)句(實(shí)際是刪除原來的表并重新創(chuàng)建一個(gè)表)。 20.3 更新和刪除的知道原則 A.小心使用:MySQL沒有撤銷(undo)按鈕。 B.除非確實(shí)打算更新和刪除每一行,否則絕對(duì)不要使用不帶WHERE子句的UPDATE或DELETE語(yǔ)句。 C.保證每個(gè)表都有主鍵。 D.先使用SELECT測(cè)試WHERE子句,保證它過濾的是正確的記錄。 E.使用強(qiáng)制實(shí)施引用完整性的數(shù)據(jù),這樣MySQL將不允許刪除具有與其他表相關(guān)聯(lián)的數(shù)據(jù)的行。 第九章 創(chuàng)建和操縱表 21.1 創(chuàng)建表 A.一般有兩種創(chuàng)建表的方法:使用具有交互式創(chuàng)建和管理表的工具(實(shí)際上也是使用了MySQL語(yǔ)句);表也可以直接用MySQL語(yǔ)句操縱。 B.處理現(xiàn)有的表:在創(chuàng)建新表時(shí),指定的表名必須不存在,否則將出錯(cuò)。不能簡(jiǎn)單地用創(chuàng)建表語(yǔ)句覆蓋已有的表。 C.如果你僅想在一個(gè)表不存在時(shí)創(chuàng)建它,應(yīng)該在表名后給出IF NOT EXITS。 D.如果不指定NOT NULL,則認(rèn)為指定的是NULL。NULL值是沒有值,它不是空串??沾且粋€(gè)有效的值,它不是無值。 E.使用AUTO_INCREMENT:AUTO_INCREMENT告訴MySQL,本列每當(dāng)增加一行時(shí)自動(dòng)增量。每個(gè)表只允許一個(gè)這樣的列,而且它必須被索引。 F.指定默認(rèn)值(DEFAULT):如果插入行時(shí)沒有給出值,MySQL允許指定此時(shí)使用的默認(rèn)值。使用默認(rèn)值而不是NULL值,特別是對(duì)用于計(jì)算或數(shù)據(jù)分組的列更是如此。 G.引擎類型:ENGINE=InnoDB語(yǔ)句,與其他DBMS一樣,MySQL有一個(gè)具體管理和處理數(shù)據(jù)的內(nèi)部引擎。但MySQL與其他DBMS不一樣,它具有多種引擎。它打包多個(gè)引擎,這些引擎都隱藏在MySQL服務(wù)器內(nèi),全都能執(zhí)行Create TABLE和SELECT等命令。 H.InnoDB是一個(gè)可靠的事務(wù)處理引擎,它不支持全文本搜索。MEMORY在功能上等同于MyISAM,但由于數(shù)據(jù)存儲(chǔ)在內(nèi)存中,速度很快,適合于臨時(shí)表。MyISAM是一個(gè)性能極高的引擎,它支持全文本搜索。但不支持事務(wù)處理。 I.外鍵不能跨引擎:即使用一個(gè)引擎的表不能引用具有使用不同引擎的外鍵。 21.2 更新表 A.ALTER TABLE之后給出要更改的表名,所做更改的列表。例如,ALTER TABLE vendors ADD vend_phone CHAR(20); ALTER TABLE vendors DROP COLUMN vend_phone; B.ALTER TABLE的一種常見用途是定義外鍵。 21.3 刪除表 A.DROP TABLE語(yǔ)句 21.4 重命名表 A.RENAME TABLE customers TO customers; 第十章 使用視圖 22.1 視圖 A.需要MySQL 5 ,它添加了對(duì)視圖的支持。視圖是虛擬的表,它只包含使用時(shí)動(dòng)態(tài)檢索數(shù)據(jù)的查詢。 B.為什么使用視圖:重用SQL語(yǔ)句。簡(jiǎn)化復(fù)雜的SQL操作。使用表的組成部分而不是整個(gè)表。保護(hù)數(shù)據(jù),給用戶授予表的特定部分的訪問權(quán)限而不是整個(gè)表的訪問權(quán)限。更改數(shù)據(jù)格式和表示。使用視圖要考慮性能問題。 C.視圖的規(guī)則和限制
 22.2 使用視圖 A.CREATE VIEW ,SHOW CREATE VIEW viewname,DROP VIEW viewname,更新視圖時(shí),可以先用DROP再用CREATE,也可以直接用CREATE OR REPLACE VIEW。    B, 創(chuàng)建可重用的視圖:創(chuàng)建不受特定數(shù)據(jù)限制的視圖是一種好方法。例如上面創(chuàng)建的視圖返回購(gòu)買所有產(chǎn)品的客戶而不僅僅是生產(chǎn)TNT2的客戶。 C, 用視圖重新格式化檢索出的數(shù)據(jù): D, 用視圖過濾不想要的數(shù)據(jù): E, WHERE子句與WHERE子句:如果從視圖檢索數(shù)據(jù)時(shí)使用了一條WHERE子句,則兩組子句(一組在視圖中,另一組是傳遞給視圖的)將自動(dòng)組合。 F, 使用視圖與計(jì)算字段 G, 更新視圖:通常,視圖是可更新的。基本上可以說,如果MySQL不能正確地確定被更新的基數(shù)據(jù),則不允許更新。一般,應(yīng)該將視圖用于檢索(SELECT語(yǔ)句)而不用于更新(INSERT,UPDATE和DELETE) 第十一章 使用存儲(chǔ)過程 23.1 存儲(chǔ)過程(需要MySQL 5) A.存儲(chǔ)過程簡(jiǎn)單來說,就是為以后的使用而保存的一條或多條MySQL語(yǔ)句的集合??蓪⑵湟暈榕募?,雖然它們的作用不僅限于批處理。 23.2 為什么要使用存儲(chǔ)過程 A.通過把處理封裝在容易使用的單元中,簡(jiǎn)化復(fù)雜的操作。 B.由于不要求反復(fù)建立一系列處理步驟,這保證數(shù)據(jù)的完整性。(防止錯(cuò)誤) C.簡(jiǎn)化對(duì)變動(dòng)的管理。(安全性,通過存儲(chǔ)過程限制對(duì)基礎(chǔ)數(shù)據(jù)的訪問減少了數(shù)據(jù)訛誤的機(jī)會(huì)) D.提高性能。 E.你可能有沒創(chuàng)建存儲(chǔ)過程的安全訪問權(quán)限。編寫存儲(chǔ)過程需要更高的技能,更加豐富的經(jīng)驗(yàn)(這是缺陷)MySQL將編寫存儲(chǔ)過程的安全和訪問與執(zhí)行存儲(chǔ)過程的安全和訪問區(qū)分開來。 23.3 使用存儲(chǔ)過程(如何執(zhí)行(運(yùn)行)它們) A.執(zhí)行存儲(chǔ)過程(調(diào)用:CALL語(yǔ)句):CALL productpricing(@pricelow, @pricehigh, @priceaverage); B.創(chuàng)建存儲(chǔ)過程,例如:CREATE PROCEDURE productpricing() BEGIN SELECT Avg(prod_price) AS priceaverage FROM products; END; C.臨時(shí)改變命令行實(shí)用程序的語(yǔ)句分隔符:DELIMITER // 這表示告訴命令行實(shí)用程序使用//作為新的語(yǔ)句結(jié)束分隔符。 D.刪除存儲(chǔ)過程:DROP PROCEDURE (IF EXISTS) productpricing; E.使用參數(shù):一般存儲(chǔ)過程并不顯示結(jié)果,而是把結(jié)果返回給指定的變量(variable:內(nèi)存中的一個(gè)特定的位置,用來臨時(shí)存儲(chǔ)數(shù)據(jù)) F.MySQL支持IN(傳遞給存儲(chǔ)過程),OUT(從存儲(chǔ)過程傳出)和INOUT(對(duì)存儲(chǔ)過程傳入和傳出)類型的參數(shù),所有MySQL變量都必須以@開始。 G.建立智能存儲(chǔ)過程(包含業(yè)務(wù)規(guī)則和智能處理) H.檢查存儲(chǔ)過程SHOW CREATE PROCEDURE語(yǔ)句,SHOW PROCEDURE STATUS; 第十二章 使用游標(biāo) 24.1 游標(biāo)(需要MySQL 5) A.有時(shí),需要在檢索出來的行中前進(jìn)或后退一行或多行。 B.游標(biāo)(cursor)是一個(gè)存儲(chǔ)在MySQL服務(wù)器上的數(shù)據(jù)庫(kù)查詢,它不是一條SELECT語(yǔ)句,而是被該語(yǔ)句檢索出來的結(jié)果集。 C.主要是用于交互式應(yīng)用。只能用于存儲(chǔ)過程:不像多數(shù)DBMS,MySQL游標(biāo)只能用于存儲(chǔ)過程(和函數(shù))。 24.2 使用游標(biāo) A.創(chuàng)建游標(biāo):用DECLARE語(yǔ)句創(chuàng)建 CREATE PEOCEDURE processorders() BEGIN DECLARE ordernumbers CURSOR FOR SELECT order_num FROM orders; END; B.打開和關(guān)閉游標(biāo):OPEN CURSOR語(yǔ)句和CLOSE CURSOR語(yǔ)句。 C.在一個(gè)游標(biāo)打開后,可以使用FETCH語(yǔ)句分別訪問它的每一行。 D.DECLARE語(yǔ)句定義的局部變量必須在定義任何游標(biāo)或句柄之前定義。
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|