欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
PHP教程(11)分組統計+鏈接查詢(xún)+子查詢(xún)+自然查詢(xún)+視圖(增刪改查)

回顧

列屬性:注釋和唯一鍵

關(guān)系:一對一,多對一,多對多

范式:規范數據表設計的方式

外鍵:外鍵約束(嚴格,置空,級聯(lián))

高級數據操作:增刪改查


查詢(xún)操作

完整語(yǔ)法

select select選項 表達式 from子句 where子句 group by子句 having子句 order by子句 limit子句

group by分組

分組語(yǔ)法

group by就是根據某個(gè)條件對數據進(jìn)行分組。

語(yǔ)法:group by 字段

分組之后,會(huì )對數據進(jìn)行取第一條。

分組主要是用來(lái)進(jìn)行數據統計。

統計函數

(分組統計函數)

         max:求最大值

         min:最小值

         avg:平均值

         count:總記錄數,如果使用count(*)那么是統計記錄數,如果count(字段)其實(shí)也是統計記錄數,如果改字段某個(gè)值為null,那么不統計。

         sum:求和

count不統計為空的字段(以字段為統計單位)

分組統計原理

group_concat:將分組統計中的某個(gè)字段的所有數據進(jìn)行連接操作

多字段分組

group by字段1,字段2….

分組排序

語(yǔ)法:group by 字段 [asc|desc]

回溯統計

注:能理解就去花時(shí)間

系統根據分組的情況,逐層向上回溯,最終直到頂層。

語(yǔ)法:在所有的分組字段之后使用 with rollup;

having子句

having子句與where子句一樣,都是用于條件判斷的。

區別1

where是判斷數據從磁盤(pán)讀入內存的時(shí)候

having是判斷分組統計之前的所有條件

區別原理

區別2

having子句中可以使用字段別名,而where不能使用

區別3

having能夠使用統計函數,但是where不能使用

order by子句

排序子句,對對應的字段進(jìn)行排序。排序依賴(lài)校對集。

語(yǔ)法

order by 字段 [asc|desc];

多字段排序

order by 字段 [asc|desc],字段2 [asc|desc];

limit子句

limit的基本使用用于限制數據的訪(fǎng)問(wèn)量。

limit標準使用語(yǔ)法

limit  offset,length;

從指定位置(offset)開(kāi)始,獲取對應長(cháng)度(length)條記錄

limit的應用:分頁(yè)

分頁(yè)必須知道的條件:頁(yè)碼,每頁(yè)顯示的數據長(cháng)度

         length:長(cháng)度

         offset:(頁(yè)碼 – 1 * length

聯(lián)合查詢(xún)

聯(lián)合查詢(xún):將多個(gè)查詢(xún)的結果,進(jìn)行縱向的聯(lián)合,而不改變字段數,只改變記錄數。

語(yǔ)法

select 語(yǔ)句

         union union選項

select 語(yǔ)句

union選項:與select選項完全一致,union選項默認的是distinct(去重)

注意

1.      union使用的時(shí)候,必須保證多條查詢(xún)語(yǔ)句之間的字段數要求一致

2.      union使用的時(shí)候,沒(méi)有數據的類(lèi)型的概念,只有列數相同的概念。

union意義

1.      合并不同表的數據(數據量太大,導致一張表存不下),往往是用于數據的統計

2.      對同一張表進(jìn)行數據的不同形式的展示。

需求:將學(xué)生表中1班的學(xué)生按照年齡升序排序,2班的學(xué)生按照年齡降序排序

order by使用

(select 語(yǔ)句 order by子句)

union

(select 語(yǔ)句 order by 子句);

union中使用order by必須搭配limit

(select 語(yǔ)句 order by子句 limit子句)

union

(select 語(yǔ)句 order by 子句 limit子句);

需求:

1.      獲取1班的所有學(xué)生

select * from student where c_id = 1;

2.      獲取1班的所有學(xué)生,還要獲取對應的班級信息

連接查詢(xún)

連接查詢(xún):將兩個(gè)表中的數據,進(jìn)行字段上的拼接,字段數一定會(huì )增加。

連接查詢(xún)分為幾類(lèi):內連接,外連接,交叉連接,自然連接

連接關(guān)鍵字:join

左表:join關(guān)鍵字左邊的表是左表

右表:join關(guān)鍵字右邊的表是右表

交叉連接

select * from 1,2;

交叉連接:cross join

交叉連接得到的結果是笛卡爾積,所以應該盡量避免笛卡爾積出現。

內連接

內連接:左表中出現的數據,在右表中也同樣存在,那么記錄保存,如果不存在就不需要該記錄。

語(yǔ)法:

l_table [inner] join r_table on 連接條件

沒(méi)有連接條件的內連接

內連接

內連接原理

內連接的條件匹配可以使用where,on可以用where代替

外連接

外連接:以某一張表為主表,拿著(zhù)表中的所有記錄去另外的一張表中匹配,如果匹配成功,保留全部記錄,如果匹配失敗,那么未匹配成功的字段全部置空。

語(yǔ)法:

左(外)連接:左表為主表,右表為副表,l_table left [out] join r_table on 連接條件

右(外)連接:右表為主表,左表為副表,l_table right [out] join r_table on 連接條件

左連接

右連接

左連接轉右連接

需求:獲取學(xué)生以及對應的班級信息,要求只獲取1班的所有的學(xué)生

自然連接

自然連接:在連接表的時(shí)候,不需要指定連接條件,系統自動(dòng)匹配。

自然連接包括:自然內連接,自然外連接

語(yǔ)法:

l_table natural [left/right] join r_table;

自然內連接

修改student表的name字段之后

自然連接在匹配之后,只會(huì )保留一個(gè)同名字段(保留的是左表)

自然外連接

內連接和外連接模擬自然連接:使用同名字段作為連接條件,并且合并同名字段。

語(yǔ)法:using(字段列表)

內連接模擬

外連接模擬

using模擬多字段自然連接

注意:實(shí)際項目開(kāi)發(fā)中,需求上的滿(mǎn)足通常是使用內連接和外連接,很少使用自然連接和交叉連接。

多表連接:與兩張表完全一樣

A join B on A.字段 = B.字段 join C on A.字段 = C.字段

需求:

1.      查出所有1班的學(xué)生;

select * from student where c_id =1;

2.      查出所有PHP141115班的學(xué)生

解決方案1select * from student s left join class c on s.c_id = c.id where c.name = 'PHP141115’;

解決方案2

         找出php141115對應的班級idselect id from class where name = 'PHP141115’;

         通過(guò)id找出所有該班級學(xué)生:select * from student where id = ?;

子查詢(xún)

一條查詢(xún)語(yǔ)句出現在另外一條查詢(xún)語(yǔ)句的內部,這條語(yǔ)句就被稱(chēng)之為子查詢(xún)語(yǔ)句。

子查詢(xún)分類(lèi)

子查詢(xún)可以根據子查詢(xún)返回的結果以及子查詢(xún)出現的位置兩種方式進(jìn)行分類(lèi)

按結果分類(lèi):

         標量子查詢(xún):子查詢(xún)返回的結果是一行一列,一個(gè)字段的某一個(gè)值

         列子查詢(xún):子查詢(xún)返回的結果是一列,多行,一個(gè)字段有多個(gè)值

         行子查詢(xún):子查詢(xún)返回的結果是一行多列,多行多列

         表子查詢(xún):子查詢(xún)返回的結果多行多列

按照位置分類(lèi):

         where子查詢(xún):子查詢(xún)出現在where條件之后

         from子查詢(xún):子查詢(xún)出現在from之后

         exists子查詢(xún):出現在exists之后,exists出現在where之后

標量子查詢(xún)

子查詢(xún)返回的結果是一個(gè)標量

列子查詢(xún)

子查詢(xún)返回的結果是一列。

需求:獲取所有班級的所有學(xué)生,學(xué)生必須在班級中存在。

select * from student where c_id is not null; -- 無(wú)法解決

解決方案

1.      獲取所有的現有班級的idselect id from class;

2.      從學(xué)生表中查出所有數據,判斷學(xué)生的班級id是否在剛查出來(lái)的班級id中存在

集合判斷條件(理解性知識)

集合(1,2,3,4,5

any:任意一個(gè),1 = any(集合),只要結果在集合中出現過(guò),就返回true

all:全部,必須滿(mǎn)足全部條件才返回真

some:等于其中的一部分,與any完全一致

行子查詢(xún)

子查詢(xún)返回的結果是一行多列

需求:找出所有班級中年齡最大,同時(shí)身高最高的學(xué)生;

行子查詢(xún)必須構建行元素:有多個(gè)字段的元素

select * from 表名 where (字段1,字段2…) =/in (select 字段1,字段2… from 表名);

表子查詢(xún)

表子查詢(xún)從返回結果的層面上講與行子查詢(xún)完全一樣。因為其出現的位置不是在where之后,而是在where之前,from之后。from后接數據源。

需求:求出每個(gè)班中身高最高的1個(gè)學(xué)生。

表子查詢(xún)出現的原因:因為某些時(shí)候,希望order bygroup by之前先執行。

視圖

視圖:視圖是一張虛擬表,存在表結構,但是沒(méi)有數據。

視圖關(guān)鍵字:view

創(chuàng )建視圖

語(yǔ)法:

create view 視圖名字 as select語(yǔ)句;

視圖創(chuàng )建之后發(fā)生了什么?

1.      創(chuàng )建視圖結構(虛擬表)

2.      在數據庫對應的文件夾下創(chuàng )建結構文件

視圖是虛擬表,只有結構,沒(méi)有數據。

視圖查看

1.      視圖可以像表一樣的查看

show tables/show create table/desc 視圖名

2.      可以通過(guò)視圖查看創(chuàng )建語(yǔ)句的方法

show create view 視圖名;

3.      查看視圖數據:與查看表完全一致

視圖不保存數據:數據的來(lái)源指的是當視圖被調用的時(shí)候,系統會(huì )自動(dòng)調用視圖的創(chuàng )建語(yǔ)句中的select語(yǔ)句去執行。

修改視圖

視圖修改的本質(zhì)是修改視圖的數據來(lái)源。

語(yǔ)法

alter view 視圖名字 as select語(yǔ)句;

刪除視圖

語(yǔ)法

drop view 視圖名字;

視圖作用

1.      節省查詢(xún)語(yǔ)句的長(cháng)度

2.      對外提供訪(fǎng)問(wèn)接口

保證數據表(基表)的數據安全性。

視圖能夠選擇性的從基表獲取數據,并提供給外部。

3.      對外友好性

視圖能夠對外提供不同的數據信息。(不同的接口定義不同的視圖)

視圖數據增刪改

視圖可以為基表進(jìn)行數據的增刪改操作,必須滿(mǎn)足以下條件

視圖新增數據

1.      視圖的數據來(lái)源(基表)只能有一個(gè)

多表視圖不能插入數據

2.      視圖中的所有字段,必須包含了基表中不為空或者沒(méi)有默認值的全部字段。

更新數據:基本沒(méi)有限制

單表視圖更新

多表視圖更新

刪除數據:與插入數據條件一致,只有單表視圖可以刪除,多表不能刪除

單表視圖刪除

多表視圖刪除

視圖算法

視圖在執行的過(guò)程中(視圖被查詢(xún)),到底是如何去執行視圖對應的查詢(xún)語(yǔ)句。

視圖算法分為三種:

         合并:merged,先將視圖的SQL查詢(xún)與與外部的查詢(xún)語(yǔ)句進(jìn)行語(yǔ)法合并

         臨時(shí)表:temptable,先執行視圖里面的查詢(xún)語(yǔ)句,結果變成一個(gè)臨時(shí)表

         未定義:undefined,系統自己判斷到底使用合并還是臨時(shí)表,默認的

算法指定語(yǔ)法

create view algorithm = 算法 視圖名字 as select語(yǔ)句

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
數據庫基礎筆記-SQL
ABAP 7.53 中的ABAP SQL(原Open SQL)新特性
sqlserver數據庫操作大全
sql語(yǔ)句優(yōu)化
經(jīng)典SQL查詢(xún)語(yǔ)句大全
SQL高級查詢(xún)技巧
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久