真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

    

創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為忠縣企業(yè)提供專(zhuān)業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),忠縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

MySQL數(shù)據(jù)庫(kù)連接查詢(xún)

  • 連接是關(guān)系數(shù)據(jù)庫(kù)模型的主要特點(diǎn)。連接查詢(xún)是關(guān)系數(shù)據(jù)庫(kù)中最主要的查詢(xún),主要包括內(nèi)連接、外連接等。通過(guò)連接運(yùn)算可以實(shí)現(xiàn)多個(gè)表查詢(xún)。當(dāng)查詢(xún)數(shù)據(jù)時(shí),通過(guò)連接操作查詢(xún)出存放在多個(gè)表中的不同實(shí)體信息。當(dāng)兩個(gè)或多個(gè)表中存在相同意義的字段時(shí),便可以通過(guò)這些字段對(duì)不同的表進(jìn)行連接查詢(xún)。如下將介紹多表之間的內(nèi)連接查詢(xún)、外連接查詢(xún)以及復(fù)合條件連接查詢(xún)。

內(nèi)連接查詢(xún)

內(nèi)連接(inner join)使用比較運(yùn)算符進(jìn)行表間列數(shù)據(jù)的比較操作,并列出這些表中與連接條件相匹配的數(shù)據(jù)行,并組合成新的記錄。新建學(xué)生表、班級(jí)表,在兩個(gè)表之間實(shí)現(xiàn)連接查詢(xún)。其中tb_class中的主鍵id為tb_student的外鍵,表結(jié)構(gòu)如下:

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

表中數(shù)據(jù)如下:

       Mysql數(shù)據(jù)庫(kù)連接查詢(xún)        Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

  表的連接查詢(xún)語(yǔ)句為:SELECT tb_student.*,tb_class.name FROM tb_student,tb_class WHERE tb_student.classID=tb_class.id; 或 SELECT tb_student.*,tb_class.name FROM tb_student INNER JOIN tb_class ON tb_student.classID=tb_class.id;

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

如果在一個(gè)連接查詢(xún)中,涉及到的兩個(gè)表都是同一個(gè)表,這種查詢(xún)稱(chēng)為自連接查詢(xún),自連接是一種特殊的內(nèi)連接,它是指相互連接的表在物理上為同一張表,但可以在邏輯上分為兩張表。如下是對(duì)tb_student表的查詢(xún),查詢(xún)和id為1的學(xué)生為同一個(gè)班的同學(xué):

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

外連接查詢(xún)

   連接查詢(xún)將查詢(xún)多個(gè)表中相關(guān)聯(lián)的行,內(nèi)連接時(shí),返回查詢(xún)結(jié)果集合中的僅是符合查詢(xún)條件和連接條件的行。但有時(shí)需要包含沒(méi)有關(guān)聯(lián)的行中數(shù)據(jù),即返回查詢(xún)結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左連接)、右表(右連接)或兩個(gè)邊表中的所有數(shù)據(jù)行。外連接分為左外連接和右外連接;

  1. LEFT JOIN(左連接):返回包括左表中的所有記錄和右表中連接字段相等的記錄

  2. RIGHT JOIN(右連接):返回包括右表中所有記錄和左表中連接字段相等的記錄

  • LEFT JOIN 左連接

左連接的結(jié)果包括LEFT OUTER子句中指定的左表的所有行,而不僅僅是連接列所匹配的行。如果左表的某行在右表中沒(méi)有匹配行,則在相關(guān)聯(lián)的結(jié)果行中右表的所有選擇列表列均為空值。如下是學(xué)生表和班級(jí)表,查詢(xún)所有學(xué)生所在班級(jí)的名稱(chēng),包括還沒(méi)有給分配班級(jí)的學(xué)生。

                          Mysql數(shù)據(jù)庫(kù)連接查詢(xún)      Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

左連接語(yǔ)句為:SELECT tb_student.name,tb_class.name FROM tb_student LEFT OUTER JOIN tb_class ON tb_student.classID=tb_class.id;

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

  • RIGHT JOIN 右連接

右連接是左連接的反向連接,將返回右表的所有行,如果右表的某行在左表中沒(méi)有匹配項(xiàng),左表將返回空值,如下圖所示,tb_student表中沒(méi)有計(jì)算機(jī)5班的學(xué)生,故計(jì)算機(jī)5班前學(xué)生名為空。

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

子查詢(xún)

子查詢(xún)是指一個(gè)查詢(xún)語(yǔ)句嵌套在另一個(gè)查詢(xún)語(yǔ)句內(nèi)部的查詢(xún),在SELECT子句中先計(jì)算子查詢(xún),子查詢(xún)結(jié)果作為外層另一個(gè)查詢(xún)的過(guò)濾條件,查詢(xún)可以基于一個(gè)表或者多個(gè)表。子查詢(xún)中常用的操作符有ANY(SOME)、ALL、IN、EXISTS。子查詢(xún)可以添加到SELECT、UPDATE和DELETE語(yǔ)句中,而且可以進(jìn)行多層嵌套。子查詢(xún)中也可以使用比較運(yùn)算符,如“<”、“<=”、“>”、“>=”和“!=”等。本節(jié)將介紹如何在SELECT語(yǔ)句中嵌套子查詢(xún)。

  • 帶ANY、SOME關(guān)鍵字的子查詢(xún)

ANY和SOME關(guān)鍵字是同義詞,表示滿足其中任一條件,他們?cè)试S創(chuàng)建一個(gè)表達(dá)式對(duì)子查詢(xún)的返回值列表進(jìn)行比較,只要滿足內(nèi)層子查詢(xún)中的任何一個(gè)比較條件,就返回一個(gè)結(jié)果作為外層查詢(xún)的條件。ANY關(guān)鍵字接在一個(gè)比較操作符的后面,表示若與子查詢(xún)返回的任何值比較為T(mén)RUE,則返回TRUE。如下是是查詢(xún)比學(xué)號(hào)為1學(xué)生最低成績(jī)(86)高的所有成績(jī)列表:

SQL查詢(xún)語(yǔ)句為:SELECT * FROM tb_score WHERE grade> ANY(SELECT grade FROM tb_score WHERE sID=1);

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)  Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

  • 帶ALL關(guān)鍵字的子查詢(xún)

關(guān)鍵字ALL與ANY和SOME不同,使用ALL時(shí)需要同時(shí)滿足內(nèi)層查詢(xún)的條件,例如,將如上的例子中的ANY改為ALL,則查詢(xún)比學(xué)號(hào)為1的學(xué)生成績(jī)(86,90)都高的成績(jī),則如上可看出查詢(xún)出結(jié)果為空。

  • 帶EXISTS關(guān)鍵字的子查詢(xún)

EXISTS關(guān)鍵字后面的參數(shù)是一個(gè)任意的子查詢(xún),系統(tǒng)對(duì)子查詢(xún)進(jìn)行運(yùn)算以判斷它是否返回行,如果至少返回一行,那么EXISTS的結(jié)果為T(mén)RUE,此時(shí)外層查詢(xún)語(yǔ)句將進(jìn)行查詢(xún);如果子查詢(xún)沒(méi)有返回任何行,那么EXISTS返回的結(jié)果為FALSE,此時(shí)外層語(yǔ)句將不進(jìn)行查詢(xún)。

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

  • 帶IN關(guān)鍵字的子查詢(xún)

IN關(guān)鍵字進(jìn)行子查詢(xún)時(shí),內(nèi)層查詢(xún)語(yǔ)句僅僅返回一個(gè)數(shù)據(jù)列,這個(gè)數(shù)據(jù)列里的值將提供給外層查詢(xún)語(yǔ)句進(jìn)行比較操作。如下兩條語(yǔ)句分別查詢(xún)學(xué)生的語(yǔ)文成績(jī)、查詢(xún)2班學(xué)生的所有成績(jī):

查詢(xún)學(xué)生語(yǔ)文成績(jī):SELECT sID,grade FROM tb_score WHERE cID IN (SELECT id FROM tb_course WHERE name='語(yǔ)文');

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

查詢(xún)2班學(xué)生的所有成績(jī):SELECT sID,cID,grade FROM tb_score WHERE sID IN (SELECT id FROM tb_student WHERE classID=2);

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

合并查詢(xún)

利用UNION關(guān)鍵字,可以給出多條SELECT語(yǔ)句,并將它們的結(jié)果組合成單個(gè)結(jié)果集。合并時(shí)兩個(gè)表對(duì)應(yīng)的列數(shù)和數(shù)據(jù)類(lèi)型必須相同。各個(gè)SELECT語(yǔ)句之間使用UNION或UNION ALL關(guān)鍵字分隔。UNION不使用關(guān)鍵字ALL執(zhí)行時(shí),刪除重復(fù)記錄,所有返回行都是唯一的;使用關(guān)鍵字ALL的作用是不刪除重復(fù)行也不對(duì)結(jié)果進(jìn)行自動(dòng)排序。

如查詢(xún)1號(hào)課程且大于80分和4號(hào)學(xué)生的成績(jī):SELECT sID,grade FROM tb_score WHERE grade>80 AND cID=1 UNION SELECT sID,grade FROM tb_score WHERE sID=4;SELECT sID,grade FROM tb_score WHERE grade>80 AND cID=1 UNION ALL SELECT sID,grade FROM tb_score WHERE sID=4;

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

正則表達(dá)式

正則表達(dá)式通常被用來(lái)檢索或替換那些符合某個(gè)模式的文本內(nèi)容,根據(jù)指定的匹配模式匹配文本中符合要求的特殊字符串。例如從一個(gè)文本文件中提取電話號(hào)碼,查找一篇文章中重復(fù)淡出或者替換用戶輸入的某些敏感詞語(yǔ)等等,這些地方都可以使用正則表達(dá)式。MySQL中使用REGEXP關(guān)鍵字指定正則表達(dá)式的字符串匹配模式,a如下表列出了REGEXP操作符中常用匹配列表。

選項(xiàng)說(shuō)明例子匹配值實(shí)例
^匹配文本的開(kāi)始字符'^b'匹配以字母b開(kāi)頭的字符串book,big,banana,bike
$匹配文本的結(jié)束字符'st$'匹配以st結(jié)尾的字符串test,resist,rest,persist
.匹配任何單個(gè)字符'b.t'匹配任何b和t之間一個(gè)字符bit,bat,but,bite
*匹配零個(gè)或多個(gè)在它前面的字符'f*n'匹配字符n前面有任意個(gè)字符ffn,fan,faan,fit
+匹配前面的字符1或多次'ba+'匹配以b開(kāi)頭后緊跟至少有一個(gè)aba,bay,bare,battle
<字符串>匹配包含指定的字符串的文本'ha'happy,hacker,hackman
[字符集合]匹配字符集合中任何一個(gè)字符'[xz]'匹配x或者zdizzy,zebra,x-ray,extra
[^]匹配不在括號(hào)中的任何字符'[^abc]'匹配任何不包含a、b和c的字符串desk,fox,file
字符串{n,}匹配前面的字符串至少n次b{2}匹配兩個(gè)或者更多個(gè)bbb,bbb,bbbb
字符串{n,m}匹配前面字符串至少n次,至多m次。如果n=0,此參數(shù)為可選參數(shù)b{2,4}匹配最少2個(gè),最多4個(gè)bbb,bbb,bbbb

選擇學(xué)生表中information列中首字母為z的行:SELECT * FROM tb_student WHERE information REGEXP '^z'; 

Mysql數(shù)據(jù)庫(kù)連接查詢(xún)

其它正則表達(dá)式的舉例略,大家可以根據(jù)自己需求自行設(shè)計(jì)。


當(dāng)前文章:Mysql數(shù)據(jù)庫(kù)連接查詢(xún)
標(biāo)題來(lái)源:http://weahome.cn/article/ihsjoj.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部