|
第一章 了解SQL 1.1 數(shù)據(jù)庫(kù)基礎(chǔ) A. 數(shù)據(jù)庫(kù)(Database):保存有組織的數(shù)據(jù)的容器(通常是一個(gè)文件或一組文件),是通過(guò)DBMS創(chuàng)建和操縱的容器。 B. 表(table):某種特定類(lèi)型數(shù)據(jù)的結(jié)構(gòu)化清單。表名具有唯一性。 C. 模式(schema):關(guān)于數(shù)據(jù)庫(kù)和表的布局及特性的信息。 D. 列(column):表中的一個(gè)字段。所有表都是由一個(gè)或多個(gè)列組成的。 E. 分解數(shù)據(jù):正確地?cái)?shù)據(jù)分解為多個(gè)列極為重要。這樣才有可能利用特定的列對(duì)數(shù)據(jù)進(jìn)行排序和過(guò)濾。 F. 數(shù)據(jù)類(lèi)型(datatype):所容許的數(shù)據(jù)的類(lèi)型。每個(gè)表列都有相應(yīng)的數(shù)據(jù)類(lèi)型,它限制或容許該列存儲(chǔ)的數(shù)據(jù)。 G. 行(row):表中的一個(gè)記錄。 H. 主鍵(primary key):一列(或一組列),其值能夠唯一區(qū)分表中的每個(gè)行。(應(yīng)該總是定義主鍵,主鍵列不允許NULL值) I. 主鍵的好習(xí)慣:不更新主鍵列中的值;不重用主鍵列的值;不在主鍵列中使用可能會(huì)更改的值。 1.2 什么是SQL A. SQL(Structured Query Language):結(jié)構(gòu)化查詢語(yǔ)言。 第二章 MySQL簡(jiǎn)介 2.1什么是MySQL A.MySQL是一種DBMS,即它是一種數(shù)據(jù)庫(kù)軟件。種類(lèi):一類(lèi)基于共享文件系統(tǒng)的DBMS,另一類(lèi)基于客戶機(jī)-服務(wù)器的DBMS。 B.客戶機(jī)-服務(wù)器軟件:服務(wù)器部分是負(fù)責(zé)所有數(shù)據(jù)訪問(wèn)和處理的一個(gè)軟件,它運(yùn)行在稱為數(shù)據(jù)庫(kù)服務(wù)器的計(jì)算機(jī)上??蛻魴C(jī)是與用戶打交道的軟件(所有請(qǐng)求或更改來(lái)自運(yùn)行客戶機(jī)軟件的計(jì)算機(jī))。 C.服務(wù)器軟件為MySQL DBMS,客戶機(jī)可以是MySQL提供的工具,腳本語(yǔ)言,web開(kāi)發(fā)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言。 2.2 MySQL工具(已經(jīng)集成到MySQL Workbench) A.MySQL命令實(shí)用程序 B.MySQL Administrator:用于簡(jiǎn)化MySQL服務(wù)器的管理。 C.MySQL Query Browser:用來(lái)編寫(xiě)和執(zhí)行MySQL命令。 第三章 使用MySQL 3.1 連接 A.如何連接和登錄到MySQL,為了連接到MySQL,需要一下信息:主機(jī)名(計(jì)算機(jī)名)——如果連接到本地MySQL服務(wù)器,為localhost;端口(使用默認(rèn)端口3306之外的端口);一個(gè)合法的用戶名;用戶口令(如果需要的話)。 3.2 選擇數(shù)據(jù)庫(kù) A.在執(zhí)行任何數(shù)據(jù)庫(kù)操作前,需要選擇一個(gè)數(shù)據(jù)。為此,可使用USE關(guān)鍵字。 B.關(guān)鍵字(key word):作為MySQL語(yǔ)言組成部分的一個(gè)保留字。 C.(USE crashcource;)必須先使用USE打開(kāi)數(shù)據(jù)庫(kù),才能讀取其中的數(shù)據(jù)。 3.3 了解數(shù)據(jù)庫(kù)和表 A.(SHOW DATABASES;)數(shù)據(jù)庫(kù)、表、列、用戶、權(quán)限等信息被存儲(chǔ)在數(shù)據(jù)庫(kù)和表中。 B.不過(guò),內(nèi)部的表一般不直接訪問(wèn)。(可用SHOW命令來(lái)顯示這些信息,MySQL從內(nèi)部表中提取這些信息。)SHOW TABLES; SHOW COLUMNS FROM customers; C.什么是自動(dòng)變量?某些表列需要唯一值。在每個(gè)行添加到表中時(shí),MySQL可以自動(dòng)地為每個(gè)行分配下一個(gè)可用編號(hào),不用在添加一行時(shí)手動(dòng)分配唯一值。 D.DESCRIBE語(yǔ)句:MySQL支持用 DESCRIBE作為SHOW COLUMNS FROM的一種快捷方式。 第四章 檢索數(shù)據(jù) 4.1 SELECT語(yǔ)句 A.SELECT語(yǔ)句的用途是從一個(gè)或多個(gè)表中檢索信息。 4.2 檢索單個(gè)列 A.SELECT prod_name FROM products; B.未排序數(shù)據(jù):如果沒(méi)有明確排序查詢結(jié)果,則返回的數(shù)據(jù)的順序沒(méi)有特殊意義。 C.結(jié)束SQL語(yǔ)句:多條SQL語(yǔ)句必須以分號(hào)分隔。如果使用的是MySQL命令行,必須加上分號(hào)來(lái)結(jié)束SQL語(yǔ)句。 D.SQL語(yǔ)句和大小寫(xiě):SQL語(yǔ)句不區(qū)分大小寫(xiě),但是一般對(duì)所有SQL關(guān)鍵字使用大寫(xiě),而對(duì)所有列和表名使用小寫(xiě)。 E.使用空格:在處理SQL語(yǔ)句時(shí),其中所有空格都被忽略。 4.3 檢索多個(gè)列 A.當(dāng)心逗號(hào):在選擇多個(gè)列時(shí),一定要在列名之間加上逗號(hào),但最后一個(gè)列名后不加。SELECT prod_id, prod_name, prod_price FROM products; B.?dāng)?shù)據(jù)表示:SQL語(yǔ)句一般返回原始的,無(wú)格式的數(shù)據(jù)。數(shù)據(jù)的格式化是一個(gè)表示問(wèn)題,而不是一個(gè)檢索問(wèn)題。因此,表示(對(duì)齊和顯示上面的價(jià)格值,用貨幣符號(hào)和逗號(hào)表示其金額)一般在現(xiàn)實(shí)該數(shù)據(jù)的應(yīng)用程序中規(guī)定。 4.4 檢索所有列 A.SELECT * FROM products; B.使用通配符:一般,除非你確定需要表中的每個(gè)列,否則最好不要使用*通配符。檢索不需要的列通常會(huì)降低檢索和應(yīng)用程序的性能。 C.檢索未知列:由于不明確指定列名,所以能檢索出名字未知的列。 4.5 檢索不同行 A.SELECT vend_id FROM products; B.SELECT DISTINCT vend_id FROM products; 關(guān)鍵字DISTINCT指示MySQL只返回不同的值(唯一)。 C.DISTINCT關(guān)鍵字應(yīng)用于所有列而不僅是前置它的列。 4.6 限制結(jié)果 A.SELECT prod_name FROM products LIMIT x,y; x和y為數(shù)字,第一個(gè)為開(kāi)始位置,第二個(gè)數(shù)字為要檢索的行數(shù)。 B.檢索出來(lái)的第一行為行0而不是行1。 C.在行數(shù)不夠時(shí),MySQL將只返回它能返回的那么多行。 D.MySQL 5的LIMIT語(yǔ)法 4.7 使用完全限定的表名 A.使用完全限定的名字來(lái)引用列(同時(shí)使用表名和列字) B.SELECT products.prod_name FROM products; C.SELECT products.prod_name FROM crashcource.products; 第五章 排序檢索數(shù)據(jù) 5.1 排序數(shù)據(jù) A.關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論認(rèn)為:如果不明確規(guī)定排序順序,則不應(yīng)該假定檢索出的數(shù)據(jù)的順序有意義。 B.子句(clause)SQL語(yǔ)句由子句構(gòu)成,一個(gè)子句通常由一個(gè)關(guān)鍵字和所提供的數(shù)據(jù)組成。 C.SELECT prod_name FROM products ORDER BY prod_name; D.通常,ORDER BY子句使用的列將是為顯示所選擇的列。但是,用非檢索的列排序數(shù)據(jù)是完全合法的。 5.2 按多個(gè)列排序 A.SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name; 5.3 指定排序方向 A.默認(rèn)是升序排序,為了進(jìn)行降序排序,必須指定DESC關(guān)鍵字。DESC關(guān)鍵字只應(yīng)用到直接位于其后面的列名。如果想在多個(gè)列上進(jìn)行降序排序,必須對(duì)每個(gè)列指定DESC。 B.SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC; C.區(qū)分大小寫(xiě)和排序順序在字典排序順序中,A被視為與a相同,這是MySQL的默認(rèn)行為。不過(guò)有需要可以改變數(shù)據(jù)庫(kù)的設(shè)置。 D.使用ORDER BY和LIMIT的組合,能夠找出一個(gè)列中最高或最低的值。SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1; 第六章 過(guò)濾數(shù)據(jù) 6.1 使用WHERE子句 A.只檢索所需數(shù)據(jù)需要指定搜索條件(search criteria)或過(guò)濾條件(filter condition) B.SELECT prod_name, prod_price FROM products WHERE prod_price = 2.5; C.SQL過(guò)濾與應(yīng)用過(guò)濾數(shù)據(jù)也可以在應(yīng)用層過(guò)濾。但是,這種實(shí)現(xiàn)并不令人滿意。 D.WHERE子句排在ORDER BY之前。 6.2 WHERE子句操作符 A.SELECT prod_name, prod_price FROM products WHERE prod_name = ‘fuses’;MySQL在執(zhí)行匹配時(shí)默認(rèn)不區(qū)分大小寫(xiě)。 B.何時(shí)使用引號(hào):?jiǎn)我?hào)用來(lái)限定字符串的。如果將值與串類(lèi)型的列進(jìn)行比較,則需要限定引號(hào),用來(lái)跟數(shù)值列進(jìn)行比較的值不用引號(hào)。 C.范圍值檢查:為了檢查某個(gè)范圍的值,可使用BETWEEN操作符。SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10; D.NULL 無(wú)值(no value)它與字段包含0,空字符串或僅僅包含空格不同。SELECT prod_name FROM products WHERE prod_price IS NULL; E.NULL與不匹配,在過(guò)濾數(shù)據(jù)時(shí),一定要驗(yàn)證返回?cái)?shù)據(jù)中確實(shí)給出了被過(guò)濾列具有NULL的行。 第七章 數(shù)據(jù)過(guò)濾 7.1 組合WHERE子句 A.為了進(jìn)行更強(qiáng)的過(guò)濾控制,MySQL允許給出多個(gè)WHERE子句,以AND子句的方式或OR子句的方式使用。 B.操作符(operator)用來(lái)聯(lián)結(jié)或改變WHERE子句中的子句的關(guān)鍵字,也稱為邏輯操作符(logical operator) C.AND 用在WHERE子句中的關(guān)鍵字,用來(lái)指示檢索滿足所有給定條件的行。OR 它指示MySQL檢索匹配任一條件的行。 D.在WHERE子句中使用圓括號(hào)任何時(shí)候使用具有AND和OR操作符的WHERE子句,都應(yīng)該使用圓括號(hào)明確地分組操作符。 
![1572929974.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle)AQ_]V}BRC7}Z2}`AF8DRT9.jpg](/ueditor/php/upload/image/20191105/1572929974.jpg)
7.2 IN操作符 A.IN操作符用來(lái)指定條件范圍,范圍中的每個(gè)條件都可以進(jìn)行匹配,IN取合法值的由逗號(hào)分隔清單,全都括在圓括號(hào)中。 B.IN的最大優(yōu)點(diǎn)是可以包含其他SELECT語(yǔ)句,使得能夠更動(dòng)態(tài)地建立WHERE子句。 SELECT prod_name,prod_price FROM products WHERE vend_id IN (1002,1003) ORDER BY prod_name; 7.3 NOT A.WHERE子句中用來(lái)否定后跟條件的關(guān)鍵字。(NOT IN) B.MySQL中的NOT MySQL支持使用NOT對(duì)IN,BETWEEN和EXISTS子句取反,這與多數(shù)其他DBMS允許使用NOT對(duì)各種條件取反有很大的差別。SELECT prod_name, prod_price FROM products WHERE vend_id NOT IN (1002, 1003) ORDER BY prod_name; 第八章 用通配符進(jìn)行過(guò)濾 8.1 LIKE操作符 A.利用通配符可創(chuàng)建比較特定數(shù)據(jù)的搜索模式。 B.通配符(wildcard)用來(lái)匹配值的一部分的特殊字符。 C.搜索模式(search pattern)由字面值,通配符或兩者組合構(gòu)成的搜索條件。 D.LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配進(jìn)行比較。 E.謂詞:操作符在它作為謂詞(predicate)時(shí),不是操作符,從技術(shù)上說(shuō),LIKE是謂詞而不是操作符。 F.百分號(hào)(%)通配符:在搜索串中,%表示任何字符出現(xiàn)任意次數(shù)。以下例子使用了搜索模式’jet%’: 
G.區(qū)分大小寫(xiě):根據(jù)MySQL的配置方式,搜索可以是區(qū)分大小寫(xiě)的。 
H.注意尾空格:尾空格可能會(huì)干擾通配符匹配。注意NULL:雖然似乎%通配符可以匹配任何東西,但是有一個(gè)例外,即NULL。 I.下劃線(_)通配符:下劃線只匹配單個(gè)字符而不是多個(gè)字符,不能多也不能少。 8.2 使用通配符的技巧 A.使用通配符搜索的處理一般要比前面討論的其他搜索所花時(shí)間更長(zhǎng)。 B、不要多度使用通配符。在確實(shí)需要使用通配符時(shí),除非絕對(duì)有必要,否則不要把他們用在搜索模式的開(kāi)始處。仔細(xì)注意通配符的位置。 第九章 用正則表達(dá)式進(jìn)行搜索 9.1 正則表達(dá)式介紹 A.正則表達(dá)式是用來(lái)匹配文本的特殊的串(字符集合)。所有種類(lèi)的程序設(shè)計(jì)語(yǔ)言,文本編輯器,操作系統(tǒng)等都支持正則表達(dá)式。 9.2 使用MySQL正則表達(dá)式 A.MySQL僅僅支持多數(shù)正則表達(dá)式實(shí)現(xiàn)的一個(gè)很小的子集。 B.LIKE匹配整個(gè)列值。如果被匹配的文本僅在列值中出現(xiàn),LIKE將不會(huì)找到它,相應(yīng)的行也不被返回(除非使用通配符)。而REGEXP在列值內(nèi)進(jìn)行匹配,如果被匹配的文本在列值中出現(xiàn),REGEXP將會(huì)找到它,相應(yīng)的行將被返回??聪旅娴睦樱?/p> 

C.匹配不區(qū)分大小寫(xiě)MySQL中的正則表達(dá)式匹配不區(qū)分大小寫(xiě),為區(qū)分大小寫(xiě)可使用BINARY關(guān)鍵字,如WHERE prod_name REGEXP BINARY ‘JetPack .000’。 D.進(jìn)行OR匹配:為搜索兩個(gè)串之一,使用|,如下所示: ![1572930023.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle}]7LCHZJYM2S}}Z[1JRV536.jpg](/ueditor/php/upload/image/20191105/1572930023.jpg)
E.匹配幾個(gè)字符之一:匹配任何單一字符。如下所示: 
F.可使用-來(lái)定義一個(gè)范圍。如[1-9],[a-b]。.在正則表達(dá)式中匹配任意一個(gè)字符。 G.為了匹配特殊字符,必須用為前導(dǎo),例如-,.等。這種處理即轉(zhuǎn)義(escaping)。 H. 為了更方便工作,可以使用預(yù)定義的字符集,稱為字符類(lèi)(character class)。 ![1572930054.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleX7%_(8]}`Q@($$0W@B5J`LS.jpg](/ueditor/php/upload/image/20191105/1572930054.jpg)
I. 正則表達(dá)式重復(fù)元字符: ![1572930062.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle)`@(8LJJ0V]U3WLRJAD~XWC.jpg](/ueditor/php/upload/image/20191105/1572930062.jpg)
J.定位符: 
K.使REGEXP起類(lèi)似LIKE的作用,它們的區(qū)別在于LIKE匹配整個(gè)串而REGEXP匹配子串。利用定位符,通過(guò)用^開(kāi)始每個(gè)表達(dá)式,用$結(jié)束每個(gè)表達(dá)式。 L.簡(jiǎn)單的正則表達(dá)式測(cè)試:可以在不使用數(shù)據(jù)庫(kù)表的情況下用SELECT來(lái)測(cè)試正則表達(dá)式。REGEXP檢查總是返回0或1(匹配)。 
![1572930091.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleSMMLEG]CHP7Y[M`~QMM5YS8.jpg](/ueditor/php/upload/image/20191105/1572930091.jpg)
![1572930108.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle]O7[}_42`N}NHF{V@}IZAXG.jpg](/ueditor/php/upload/image/20191105/1572930108.jpg)

第十章 創(chuàng)建計(jì)算字段 10.1計(jì)算字段 A.存儲(chǔ)在數(shù)據(jù)庫(kù)表中的數(shù)據(jù)一般不是應(yīng)用程序所需要的格式。我們需要直接從數(shù)據(jù)庫(kù)中檢索出轉(zhuǎn)換,計(jì)算或格式化過(guò)的數(shù)據(jù);而不是檢索出數(shù)據(jù),然后再在客戶機(jī)應(yīng)用程序或報(bào)告程序中重新格式化。 B.字段(field):基本上和列(COLUMN)的意思相同,經(jīng)?;Q使用,不過(guò)數(shù)據(jù)庫(kù)列一般成為列,而術(shù)語(yǔ)字段通常用在計(jì)算字段的連接上。 C.客戶機(jī)與服務(wù)器的格式 10.2 拼接字段 A.拼接(concatenate)將值聯(lián)結(jié)到一起構(gòu)成單個(gè)值。(把兩個(gè)列拼接起來(lái)) B.MySQL的不同之處:多數(shù)DBMS使用+或||來(lái)實(shí)現(xiàn)拼接,而MySQL使用Concat()函數(shù)來(lái)實(shí)現(xiàn)。 C.Trim函數(shù):MySQL除了支持RTrim()(去掉串右邊的空格),還支持LTrim()及Trim()。 D.使用別名(alias),別名是一個(gè)字段或值的替換名。別名用AS關(guān)鍵字賦予。任何客戶機(jī)應(yīng)用都可以按名引用這個(gè)列。別名也可稱導(dǎo)出列(derived COLUMN)。 ![1572930126.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleR5}N]V3II64XC30MX[4X98T.jpg](/ueditor/php/upload/image/20191105/1572930126.jpg)  ![1572930140.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleS%YXQ3DJZC`YUZ3ZJ)H[L]E.jpg](/ueditor/php/upload/image/20191105/1572930140.jpg) 10.3 執(zhí)行算術(shù)計(jì)算 A.如何測(cè)試計(jì)算:SELECT提供了測(cè)試和試驗(yàn)函數(shù)與計(jì)算的一個(gè)很好的辦法。 ![1572930149.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle2H1QGOG~VT6)]TT$54M`I0F.jpg](/ueditor/php/upload/image/20191105/1572930149.jpg) ![1572930157.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleX7OWS5GV~U@@]KWF1DZWI)L.jpg](/ueditor/php/upload/image/20191105/1572930157.jpg) 第十一章 使用數(shù)據(jù)處理函數(shù) 11.1 函數(shù) A.函數(shù)沒(méi)有SQL的可移植性強(qiáng):能運(yùn)行在多個(gè)系統(tǒng)上的代碼稱為可移植的(portable)。如果你使用函數(shù),應(yīng)該保證做好代碼注釋。 B.用于處理文本串的文本函數(shù)。用于在數(shù)值數(shù)據(jù)上進(jìn)行算術(shù)操作的數(shù)值函數(shù)。用于處理日期和時(shí)間值并從這些值中提取特定成分的日期和時(shí)間函數(shù)。返回DBMS正使用的特殊信息的系統(tǒng)函數(shù)。
![1572930166.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleB7FYV%0]VAJTC$@RLXBFT~G.jpg](/ueditor/php/upload/image/20191105/1572930166.jpg) C. SOUNDEX是一個(gè)將任何文本串轉(zhuǎn)換為描述其語(yǔ)音表示的字母數(shù)字模式的算法。  ![1572930183.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOle([BZ[P7`})QFNWTV(]]{5EB.jpg](/ueditor/php/upload/image/20191105/1572930183.jpg) ![1572930191.jpg C:UserszhouxiaoAppDataRoamingTencentUsers304593733QQWinTempRichOleBWL9W]Q50IN0(%ZVIN[4~EN.jpg](/ueditor/php/upload/image/20191105/1572930191.jpg)  D. MySQL使用的日期格式:yyyy-mm-dd,應(yīng)該總是使用4位數(shù)字的年份。
 第十二章 匯總數(shù)據(jù) 12.1 聚集函數(shù) A.確定表中行數(shù),獲得表中行組的和,找出表列的最大值,最小值和平均值。要的是匯總信息,而不是表中數(shù)據(jù)。 B. 聚集函數(shù)(aggregate function):運(yùn)行在行組上,計(jì)算和返回單個(gè)值的函數(shù)。  C.只用于單個(gè)列,AVG()只能用來(lái)確定特定數(shù)值列的平均值,而且列名必須作為函數(shù)參數(shù)給出。AVG()函數(shù)忽略列值為NULL的行。 12.2 聚集不同值 A.對(duì)所有的行執(zhí)行計(jì)算,指定ALL參數(shù)或不給參數(shù)(因?yàn)锳LL是默認(rèn)行為)。只包含不同的值,指定DISTINCT參數(shù)。DISTINCT必須使用列名,不能用于計(jì)算或表達(dá)式。 12.3 組合聚集函數(shù)  
信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
|