久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

student、sc、course 三張表講透 SQL:建表、查詢與優(yōu)化

student、sc、course 三張表講透 SQL:建表、查詢與優(yōu)化 簡介這是一份配合《數(shù)據(jù)庫系統(tǒng)概論》課程的SQL建表與數(shù)據(jù)插入練習(xí)文檔面向正在學(xué)習(xí)數(shù)據(jù)庫原理與SQL基礎(chǔ)操作的學(xué)生。PDF內(nèi)完整給出了student、course、sc三張經(jīng)典表的建表語句包含主鍵、唯一約束、默認(rèn)值及外鍵關(guān)聯(lián)并附帶覆蓋學(xué)生選課場景的示例插入數(shù)據(jù)可幫助讀者理解關(guān)系模型、參照完整性及SC復(fù)合主鍵的設(shè)計(jì)思路。整個(gè)壓縮包僅含1個(gè)PDF文件大小48KB輕量易用適合課前預(yù)習(xí)、實(shí)驗(yàn)參考或考前快速復(fù)習(xí)。文檔將創(chuàng)建數(shù)據(jù)庫、建表、插入數(shù)據(jù)與更新預(yù)修課程學(xué)分等步驟按順序拆解并在course表插入中特別說明了外鍵約束下不能一次性插入的原因便于讀者避開常見操作誤區(qū)。目前已有1907人學(xué)習(xí)下載對初學(xué)數(shù)據(jù)庫系統(tǒng)概論、需要動手搭建練習(xí)環(huán)境的學(xué)習(xí)者具有直接參考價(jià)值。1. 數(shù)據(jù)庫系統(tǒng)概論里的 student、sc、course一套練習(xí)表為什么能講透 SQL數(shù)據(jù)庫系統(tǒng)概論課程里流傳最廣的一套SQL練習(xí)就是用 student、sc、course 這三張表反復(fù)折騰查詢很多學(xué)校的實(shí)驗(yàn)課、期末復(fù)習(xí)題、甚至面試前突擊都在用它。這套表的數(shù)據(jù)量不大結(jié)構(gòu)卻把主鍵、外鍵、多對多關(guān)系、聚合、連接、子查詢這些核心概念全串起來了比去 LeetCode 刷零散題目要完整得多。網(wǎng)上流傳的配套 PDF 往往只給題目和答案缺了建表腳本和邊界情況的說明新手拿到手第一反應(yīng)是“表長什么樣”都不知道。我按最常見的教材結(jié)構(gòu)把整套環(huán)境重建一遍從建庫到驗(yàn)證一條龍講清楚學(xué)生能照著跑準(zhǔn)備 SQL 面試的能當(dāng)復(fù)習(xí)提綱想自己出練習(xí)題的也能直接參考這套設(shè)計(jì)。2. 先建庫再建表student、sc、course 的結(jié)構(gòu)設(shè)計(jì)與建表 SQL2.1 三張表的字段設(shè)計(jì)外鍵怎么連、主鍵怎么定先看這套表的數(shù)據(jù)模型。student 表存學(xué)生基本信息course 表存課程信息sc 表是學(xué)生選課成績表用來連接前兩者。之所以需要 sc 這張中間表是因?yàn)橐粋€(gè)學(xué)生可以選多門課一門課也可以被多個(gè)學(xué)生選學(xué)生和課程之間是多對多關(guān)系直接在一個(gè)表里加字段會造成大量數(shù)據(jù)冗余和更新異常。sc 表把學(xué)號和課程號各存一條記錄再加上成績字段就把多對多關(guān)系拆成了兩個(gè)一對多關(guān)系。student 表的常見字段是學(xué)號、姓名、性別、年齡、系別主鍵用學(xué)號 sno。course 表的主鍵是課程號 cno同時(shí)會有一個(gè) cpno 字段表示先修課程號這個(gè)字段指向課程表自身的主鍵形成自引用外鍵用來做“查先修課”這類的遞歸查詢練習(xí)。sc 表的主鍵是 (sno, cno) 聯(lián)合主鍵sno 和 cno 分別引用 student 和 course 的主鍵grade 字段存百分制成績。這個(gè)設(shè)計(jì)的巧妙之處在于兩個(gè)字段的聯(lián)合主鍵能防止同一學(xué)生同一課程出現(xiàn)兩條重復(fù)選課記錄這是數(shù)據(jù)完整性約束里的典型考點(diǎn)。練習(xí)時(shí)還會用到 cpno 為 NULL 的“沒有先修課”的記錄這就把 SQL 里的 NULL 處理難題也帶出來了。字段類型也要留意學(xué)號和課程號雖然是數(shù)字但常見教材把它們定義成 CHAR 而不是 INT目的是讓前導(dǎo)零能保留也方便練習(xí)字符串比較。2.2 標(biāo)準(zhǔn)建表腳本MySQL 與 SQL Server 的語法差異很多初學(xué)者從 PDF 里抄答案時(shí)發(fā)現(xiàn)在自己電腦上建表總是報(bào)錯(cuò)原因往往是教材示例用的 SQL Server 語法而本機(jī)裝的是 MySQL。兩種數(shù)據(jù)庫的建表語法大體相似但在字符集、自增列、外鍵約束這些細(xì)節(jié)上有差異。下面給出兩套腳本先看 MySQL 版本這也是目前自學(xué)環(huán)境最常見的配置。CREATE DATABASE IF NOT EXISTS school DEFAULT CHARSET utf8mb4; USE school; CREATE TABLE student ( sno CHAR(9) PRIMARY KEY, sname VARCHAR(20) NOT NULL, ssex CHAR(2) DEFAULT 男, sage SMALLINT, sdept VARCHAR(20) ) ENGINEInnoDB; CREATE TABLE course ( cno CHAR(4) PRIMARY KEY, cname VARCHAR(40) NOT NULL, cpno CHAR(4), ccredit SMALLINT ) ENGINEInnoDB; CREATE TABLE sc ( sno CHAR(9) NOT NULL, cno CHAR(4) NOT NULL, grade DECIMAL(5,1), PRIMARY KEY (sno, cno), FOREIGN KEY (sno) REFERENCES student(sno), FOREIGN KEY (cno) REFERENCES course(cno) ) ENGINEInnoDB;這段腳本里幾個(gè)參數(shù)要單獨(dú)說明。DEFAULT CHARSET utf8mb4 是為了讓中文姓名和課程名正常存儲如果使用默認(rèn)的 latin1 字符集插入中文時(shí)會變成亂碼或者直接報(bào)錯(cuò)utf8mb4 比 utf8 多支持 emoji 等四字節(jié)字符對練習(xí)環(huán)境來說更保險(xiǎn)。表引擎指定 InnoDB是因?yàn)橥怄I約束只有 InnoDB 支持MyISAM 引擎雖然查詢快但建外鍵時(shí) MySQL 會靜默忽略不報(bào)錯(cuò)也不生效這是最隱蔽的一個(gè)翻車點(diǎn)。sage 用 SMALLINT 而不是 INT是教材里的經(jīng)典設(shè)計(jì)用來讓大家理解“夠用就好”的字段長度設(shè)計(jì)思路。grade 用 DECIMAL(5,1)意思是總長度 5 位、小數(shù) 1 位最高能存 999.9百分制成績足夠用而且能保留一位小數(shù)方便練習(xí) AVG 聚合時(shí)看到非整數(shù)值。如果是 SQL Server 環(huán)境比如學(xué)校機(jī)房或者公司里的老項(xiàng)目建表腳本要微調(diào)。SQL Server 不區(qū)分 utf8mb4默認(rèn)就是在排序規(guī)則屬性里處理中文自增列需要 IDENTITY 關(guān)鍵字CHAR 字段在 SQL Server 里默認(rèn)非 Unicode插入中文要改成 NCHAR 或者設(shè)置合適的排序規(guī)則。CREATE DATABASE school; GO USE school; GO CREATE TABLE student ( sno CHAR(9) PRIMARY KEY, sname NVARCHAR(20) NOT NULL, ssex NCHAR(1) DEFAULT N男, sage SMALLINT, sdept NVARCHAR(20) ); GO CREATE TABLE course ( cno CHAR(4) PRIMARY KEY, cname NVARCHAR(40) NOT NULL, cpno CHAR(4), ccredit SMALLINT ); GO CREATE TABLE sc ( sno CHAR(9) NOT NULL, cno CHAR(4) NOT NULL, grade DECIMAL(5,1), PRIMARY KEY (sno, cno), FOREIGN KEY (sno) REFERENCES student(sno), FOREIGN KEY (cno) REFERENCES course(cno) ); GO這里把姓名、系別、課程名都換成了 NVARCHAR原因很實(shí)在SQL Server 的 VARCHAR 只能存英文字符N 前綴類型才能存中文給 ssex 字段加 DEFAULT N男 是因?yàn)?SQL Server 默認(rèn)值里如果直接寫中文字符常量在有些中文排序規(guī)則下會報(bào)“對象名無效”一類的怪異錯(cuò)誤實(shí)測最穩(wěn)的方式就是加 N 前綴。用了 GO 分隔批次是因?yàn)?SQL Server 的 CREATE DATABASE 之后必須 USE 切換上下文如果兩個(gè)語句在同一個(gè)批次里執(zhí)行后面的 CREATE TABLE 可能仍然被解析到 master 庫。這塊屬于 SQL Server 特有的玄學(xué)問題按上面分批次寫就不會出錯(cuò)。2.3 插入練習(xí)數(shù)據(jù)覆蓋基礎(chǔ)查詢需要的典型取值建完表之后必須插入數(shù)據(jù)才能練習(xí)。數(shù)據(jù)量不用大但要覆蓋邊界情況NULL 成績、先修課缺失、同系別多人、男女都有、成績重復(fù)這些都會在后續(xù)查詢練習(xí)里反復(fù)用到。下面這套插入數(shù)據(jù)是經(jīng)典教材里的標(biāo)準(zhǔn)樣本數(shù)值我按常用版本保持基本一致。INSERT INTO student (sno, sname, ssex, sage, sdept) VALUES (201215121, 李勇, 男, 20, CS), (201215122, 劉晨, 女, 19, CS), (201215123, 王敏, 女, 18, MA), (201215125, 張立, 男, 19, IS); INSERT INTO course (cno, cname, cpno, ccredit) VALUES (1, 數(shù)據(jù)庫, NULL, 4), (2, 數(shù)學(xué), NULL, 2), (3, 信息系統(tǒng), 1, 4), (4, 操作系統(tǒng), 6, 3), (5, 數(shù)據(jù)結(jié)構(gòu), 7, 4), (6, 數(shù)據(jù)處理, NULL, 2), (7, PASCAL語言, 6, 4); INSERT INTO sc (sno, cno, grade) VALUES (201215121, 1, 92), (201215121, 2, 85), (201215121, 3, 88), (201215122, 2, 90), (201215122, 3, 80), (201215123, 2, 85), (201215123, 1, NULL);這段插入腳本里有兩處需要細(xì)看。course 表里課程 3 的 cpno 是課程 1課程 5 的 cpno 是課程 7形成了一個(gè)有向的“先修課鏈條”練習(xí)自連接時(shí)可以查“間接先修課”這類題目。sc 表里最后一條記錄 grade 為 NULL表示王敏選了數(shù)據(jù)庫課但還沒出成績這就是聚合函數(shù)和 WHERE 條件練習(xí)里最容易出錯(cuò)的地方COUNT(grade) 會忽略 NULL而 COUNT(*) 不會。INSERT 語句用多值逗號分隔語法比逐條 INSERT 效率高很多而且一旦中間某行出錯(cuò)整個(gè)語句會回滾不會出現(xiàn)“插了一半”的臟數(shù)據(jù)。數(shù)據(jù)插入后建議先跑兩條驗(yàn)證語句確認(rèn)環(huán)境可用。SELECT COUNT() FROM student; 應(yīng)該返回 4SELECT COUNT() FROM sc; 應(yīng)該返回 7。如果數(shù)字對不上優(yōu)先檢查是否漏跑了某個(gè)批次或者外鍵約束攔截了部分插入。3. 練習(xí)題的梯度設(shè)計(jì)從單表查詢到窗口函數(shù)3.1 第一梯度單表查詢、排序與去重表建好、數(shù)據(jù)插完就可以開始真正的練習(xí)。第一梯度只涉及單張表目標(biāo)是練 SELECT 的基礎(chǔ)功投影、選擇、排序、去重。這類題目在面試?yán)锟粗唵蔚芏嗳藢懗鰜淼?SQL 在邊界情況下是錯(cuò)誤的尤其是去重和 NULL 處理。先看一個(gè)最基礎(chǔ)的查詢查所有學(xué)生的學(xué)號和姓名。這道題沒有難度但能驗(yàn)證表結(jié)構(gòu)是否正常。SELECT sno, sname FROM student;接著看一個(gè)稍微有考點(diǎn)的題目查詢所有學(xué)生的系別。如果直接寫 SELECT sdept FROM student結(jié)果里會出現(xiàn)重復(fù)的 CS。要得到唯一的系別列表得去重。SELECT DISTINCT sdept FROM student;DISTINCT 在這里的語義是“對查詢結(jié)果整體去重”也就是說只有兩行所有選中列的值都相同才合并。它作用于整個(gè) SELECT 的投影列表而不是只作用于緊挨著的那個(gè)字段。很多人以為 SELECT DISTINCT sname, sdept 的意思是“只對 sname 去重保留 sdept”實(shí)際上它是把 (sname, sdept) 作為一個(gè)整體判斷重復(fù)。這是一個(gè)高頻面試題也解釋了為什么同樣一句 DISTINCT 在不同組合列下結(jié)果差異巨大。第二梯度之前還要過一個(gè)排序練習(xí)查全體學(xué)生名單按年齡降序排列。SELECT sno, sname, sage FROM student ORDER BY sage DESC;ORDER BY 的執(zhí)行順序在 SQL 邏輯中排在 SELECT 之后所以它可以使用 SELECT 列表里的別名比如 ORDER BY 年齡。這個(gè)順序問題很多人混淆實(shí)際上 SQL 語句的書寫順序是 SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY但邏輯執(zhí)行順序是 FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY。搞清楚這個(gè)順序后面理解“為什么 WHERE 里不能使用別名”才不會靠死記硬背。3.2 第二梯度多表連接、聚合與分組第二梯度是這套練習(xí)表的重頭戲也是 SQL 能力分水嶺。連接查詢要把兩張或多張表按條件拼接聚合查詢則把多行匯總成一行。兩者經(jīng)常組合出現(xiàn)。最常見的連接練習(xí)查詢每個(gè)學(xué)生的選課成績需要 student 表和 sc 表通過 sno 連接。SELECT student.sno, sname, cno, grade FROM student, sc WHERE student.sno sc.sno;這是隱式連接寫法教材里用得最多但實(shí)際項(xiàng)目里我更推薦顯式 JOIN 寫法結(jié)構(gòu)更清晰也更容易排查漏連接條件的問題。SELECT s.sno, s.sname, sc.cno, sc.grade FROM student s JOIN sc ON s.sno sc.sno;這兩條 SQL 邏輯等價(jià)但顯式寫法把連接條件從 WHERE 中分離出來WHERE 里只留過濾條件。這種拆分的實(shí)際意義是當(dāng)查詢超過三張表時(shí)隱式連接特別容易漏寫一個(gè)連接條件導(dǎo)致產(chǎn)生笛卡爾積結(jié)果行數(shù)爆炸到幾十萬條這就是俗稱的“翻車現(xiàn)場”排查時(shí)還不好定位。顯式 JOIN 配合縮進(jìn)每個(gè)連接關(guān)系一眼就能看全。連接之后接聚合查詢每門課的選課人數(shù)和平均成績。SELECT cno, COUNT(*) AS cnt, AVG(grade) AS avg_grade FROM sc GROUP BY cno;這段 SQL 的執(zhí)行順序是先 FROM sc 拿到全表GROUP BY cno 把相同課程號的記錄分到一組然后 SELECT 對每組執(zhí)行 COUNT 和 AVG。這里有一個(gè)關(guān)鍵細(xì)節(jié)AVG(grade) 會自動忽略 NULL所以王敏那條沒有成績的記錄不會拉低平均值。如果想把 NULL 當(dāng)作 0 參與平均就得先寫 CASE WHEN grade IS NULL THEN 0 ELSE grade END 把 NULL 轉(zhuǎn)換掉但這在實(shí)際業(yè)務(wù)中是否合理要看場景一般成績表里 NULL 代表“缺考/未出分”忽略比當(dāng) 0 處理更符合業(yè)務(wù)語義。再進(jìn)階一步查詢選了 2 門及以上課程的學(xué)生學(xué)號。這要用 HAVING 對分組結(jié)果做過濾。SELECT sno FROM sc GROUP BY sno HAVING COUNT(*) 2;HAVING 和 WHERE 的區(qū)別必須在這里說透WHERE 在分組之前過濾行HAVING 在分組之后過濾組。同一個(gè)條件寫在 WHERE 和寫在 HAVING 里語義完全不同。比如查出平均成績大于 85 的課程AVG(grade) 85 這個(gè)條件只能放在 HAVING 里因?yàn)樗恰敖M”的特征不是“行”的特征。很多初學(xué)者把聚合條件誤寫在 WHERE 里報(bào)錯(cuò)就是因?yàn)闆]理解這個(gè)執(zhí)行順序。3.3 第三梯度子查詢、EXISTS 與窗口函數(shù)第三梯度是進(jìn)階內(nèi)容也是 PDF 練習(xí)里區(qū)分“會寫”和“寫得優(yōu)雅”的部分。子查詢分相關(guān)子查詢和非相關(guān)子查詢兩類。非相關(guān)子查詢的結(jié)果不依賴外層查詢先執(zhí)行一次即可相關(guān)子查詢每處理一行都要執(zhí)行一次子查詢性能差異很大。經(jīng)典題目查詢選修了課程 1 且成績高于該課程平均分的學(xué)生學(xué)號。SELECT sno FROM sc WHERE cno 1 AND grade ( SELECT AVG(grade) FROM sc WHERE cno 1 );這個(gè)子查詢是典型的非相關(guān)子查詢內(nèi)層執(zhí)行一次得到課程 1 的平均分外層再逐行比較。注意如果 AVG 結(jié)果帶多位小數(shù)和外層 grade 比較時(shí)不會因類型問題出錯(cuò)因?yàn)?MySQL 會按 DECIMAL 精度自動比較。這道題練習(xí)的價(jià)值在于它要求先理解聚合結(jié)果是標(biāo)量值然后才能把它當(dāng)作 WHERE 的右值。再來看 EXISTS 子查詢這也是 SQL 面試題的常駐嘉賓。查出所有選了課程 2 的學(xué)生姓名。SELECT sname FROM student s WHERE EXISTS ( SELECT 1 FROM sc WHERE sc.sno s.sno AND sc.cno 2 );EXISTS 子查詢只關(guān)心“有沒有返回行”不關(guān)心返回什么列所以子查詢里寫 SELECT 1 是業(yè)界慣例比 SELECT * 性能略優(yōu)且語義清晰。這個(gè)查詢是相關(guān)子查詢對 student 表每一行都要執(zhí)行一次子查詢但數(shù)據(jù)庫優(yōu)化器通常會把它改寫成 JOIN 或 semi-join 來提升性能。練習(xí)時(shí)可以把 EXISTS、IN、JOIN 三種寫法都試一遍觀察執(zhí)行計(jì)劃差異這是理解優(yōu)化器行為的很好素材。窗口函數(shù)是近幾年 SQL 面試的高頻考點(diǎn)這套表同樣能練。比如查每門課成績排名前 2 的學(xué)生。SELECT cno, sno, grade FROM ( SELECT cno, sno, grade, ROW_NUMBER() OVER (PARTITION BY cno ORDER BY grade DESC) AS rk FROM sc WHERE grade IS NOT NULL ) t WHERE rk 2 ORDER BY cno;窗口函數(shù)的邏輯是OVER 子句定義窗口范圍PARTITION BY 劃分組ORDER BY 組內(nèi)排序ROW_NUMBER() 在窗口內(nèi)生成序號。和 GROUP BY 不同的是窗口函數(shù)不會把多行合并成一行每行仍然保留自己的身份。這個(gè)特性讓“分組 top N”這類查詢變得非常簡潔。注意內(nèi)層先 WHERE grade IS NOT NULL 過濾掉 NULL 成績否則排序時(shí)空值會默認(rèn)排最前面結(jié)果就錯(cuò)了。3.4 練習(xí)答案的驗(yàn)證方式用 EXPLAIN 看執(zhí)行計(jì)劃光寫出能跑出結(jié)果的 SQL 不算完還得知道它是怎么跑的。數(shù)據(jù)庫提供了 EXPLAIN 命令來查看執(zhí)行計(jì)劃這是從“會寫 SQL”到“能調(diào) SQL”的必經(jīng)一步。以 MySQL 為例EXPLAIN SELECT s.sno, s.sname, sc.grade FROM student s JOIN sc ON s.sno sc.sno WHERE sc.cno 1;執(zhí)行計(jì)劃里最需要關(guān)注的是 type 列和 rows 列。type 顯示訪問表的方式從好到差依次是 system、const、eq_ref、ref、range、index、ALL。如果看到 ALL說明這條 SQL 正在做全表掃描。rows 列是預(yù)估掃描行數(shù)兩張表 join 的最終掃描行數(shù)異常大時(shí)要檢查外鍵列上有沒有索引。sc 表的 sno 和 cno 列如果沒建索引JOIN 就會退化成嵌套循環(huán)全表掃數(shù)據(jù)量小的時(shí)候感覺不到到了生產(chǎn)環(huán)境幾百萬行就徹底卡死了。做練習(xí)時(shí)每寫完一道題都順手把執(zhí)行計(jì)劃拉出來看一眼。等把 system→const→ref→range→ALL 這幾檔都親眼見過一遍才算真正對 SQL 優(yōu)化有了體感。到這一步student、sc、course 這套練習(xí)表的價(jià)值才算被完全榨干——它不僅教你寫 SQL還教你診斷 SQL。4. 做這套練習(xí)常見的 5 個(gè)坑從建表失敗到結(jié)果對不上4.1 主鍵重復(fù)與 NULL插入數(shù)據(jù)時(shí)的第一道坎現(xiàn)象執(zhí)行 INSERT 語句報(bào)錯(cuò)提示 duplicate entry 或者不能為 NULL。原因聯(lián)合主鍵的任意重復(fù)都會觸發(fā)沖突比如向 sc 表重復(fù)插入 (201215121, 1) 這條選課記錄。另外student 表的 sno 是主鍵插入 NULL 也會被拒絕但 sc 表的 sno 和 cno 是外鍵同時(shí)又是聯(lián)合主鍵的一部分如果這兩列有一個(gè)為 NULLInnoDB 對主鍵列有隱式 NOT NULL 約束同樣報(bào)錯(cuò)。解決插入前先用 SELECT 確認(rèn)數(shù)據(jù)是否存在。習(xí)慣性在插入腳本里加 INSERT IGNORE 或者 ON DUPLICATE KEY UPDATE 確實(shí)能跳過錯(cuò)誤但練習(xí)場景不建議這么做因?yàn)檫@會掩蓋數(shù)據(jù)本身的重復(fù)問題。更推薦的方法是直接面對報(bào)錯(cuò)通過 SELECT sno, cno, COUNT() FROM sc GROUP BY sno, cno HAVING COUNT() 1 查重復(fù)數(shù)據(jù)再決定保留哪一條。4.2 字符集與排序規(guī)則中文亂碼的根源現(xiàn)象插入中文后查詢顯示亂碼或者 CREATE TABLE 直接報(bào)錯(cuò)字符集不識別。原因MySQL 默認(rèn)字符集可能是 latin1中文無法存儲。SQL Server 則可能是排序規(guī)則不匹配導(dǎo)致數(shù)據(jù)庫兼容級別或排序規(guī)則沖突。解決MySQL 建庫時(shí)顯式指定 DEFAULT CHARSET utf8mb4并且連接字符串里也要加上 characterEncodingutf8 或 utf8mb4。一個(gè)容易被忽略的坑是即使數(shù)據(jù)庫和表的字符集都對了如果客戶端連接的字符集不對插入時(shí)仍會出現(xiàn)亂碼。先執(zhí)行 SHOW VARIABLES LIKE character_set%; 看當(dāng)前會話的字符集再把連接參數(shù)統(tǒng)一。SQL Server 那邊建庫時(shí)把排序規(guī)則指定為 Chinese_PRC_CI_AS 基本可以一勞永逸。4.3 外鍵約束與刪除順序先刪 sc 還是先刪 student現(xiàn)象執(zhí)行 DELETE FROM student WHERE sno201215121; 報(bào)錯(cuò)提示 foreign key constraint fails。原因sc 表里有引用這個(gè)學(xué)號的記錄而 sc 表的外鍵約束默認(rèn)行為是 NO ACTION即存在子記錄時(shí)不允許刪除父記錄。解決先刪子表再刪父表。正確順序是 DELETE FROM sc WHERE sno201215121; 然后 DELETE FROM student WHERE sno201215121;。這個(gè)順序問題的價(jià)值不僅在于完成刪除操作它本身就是關(guān)系模型里“引用完整性”的絕佳教學(xué)案例。實(shí)際業(yè)務(wù)中還有一種做法是給外鍵加上 ON DELETE CASCADE讓數(shù)據(jù)庫自動刪子記錄但這在生產(chǎn)環(huán)境非常危險(xiǎn)一不小心就級聯(lián)刪掉大量業(yè)務(wù)數(shù)據(jù)我一般建議顯式控制刪除順序而不是依賴級聯(lián)。4.4 連接條件漏寫笛卡爾積的翻車現(xiàn)場現(xiàn)象多表連接查詢返回的結(jié)果行數(shù)異常多比如 student 4 行和 sc 7 行連接后返回 28 行。原因連接條件沒寫或者寫錯(cuò)數(shù)據(jù)庫把兩表做了笛卡爾積每行和另一表的每行配對。解決連接查詢時(shí)先確認(rèn)結(jié)果行數(shù)是否等于符合業(yè)務(wù)邏輯的行數(shù)。經(jīng)驗(yàn)判斷標(biāo)準(zhǔn)是如果多表連接沒有 WHERE 或 JOIN ON 條件返回行數(shù)是各表行數(shù)乘積必然有問題。連接條件漏寫時(shí)數(shù)據(jù)庫不會報(bào)錯(cuò)因?yàn)榈芽柗e在語法上是合法的這是最讓人頭疼的地方。實(shí)踐中寫多表查詢時(shí)先分別跑一遍 SELECT COUNT(*) FROM 各表估算出預(yù)期結(jié)果行數(shù)范圍再執(zhí)行連接查詢。另外養(yǎng)成每張表用別名、JOIN 條件顯式寫在 ON 子句里的習(xí)慣能顯著降低漏寫概率。4.5 聚合與非聚合混用GROUP BY 的經(jīng)典報(bào)錯(cuò)現(xiàn)象執(zhí)行 SELECT sno, cno, AVG(grade) FROM sc GROUP BY sno; 報(bào)錯(cuò)提示 cno 不在 GROUP BY 子句中。原因SQL 標(biāo)準(zhǔn)要求 SELECT 列表中出現(xiàn)的非聚合列必須全部出現(xiàn)在 GROUP BY 中。這是因?yàn)榉纸M后每組只有一行非聚合列如果不在分組鍵里數(shù)據(jù)庫不知道該取組內(nèi)哪行的值。MySQL 的 ONLY_FULL_GROUP_BY 模式默認(rèn)開啟所以直接報(bào)錯(cuò)如果關(guān)掉這個(gè)模式雖然能執(zhí)行但返回的 cno 是組內(nèi)隨機(jī)一行結(jié)果不可預(yù)測。解決搞清楚查詢意圖。如果確實(shí)想查每個(gè)學(xué)生的學(xué)號和他每門課的成績就不該用 GROUP BY如果只想查每個(gè)學(xué)生平均分SELECT 里就不該出現(xiàn) cno。這個(gè)報(bào)錯(cuò)其實(shí)是數(shù)據(jù)庫在保護(hù)你比暗中返回隨機(jī)值好得多。練習(xí)時(shí)遇到這種錯(cuò)誤先停下來理清“我要的是明細(xì)還是匯總”再動手改 SQL是最快的路徑。5. 把練習(xí)成果接到真項(xiàng)目驗(yàn)證方法、索引設(shè)計(jì)與一條實(shí)用技巧5.1 用索引設(shè)計(jì)與執(zhí)行計(jì)劃對比來驗(yàn)證練習(xí)效果練習(xí)做完后建議做一個(gè)加索引前后的對比實(shí)驗(yàn)。以 sc 表為例在不建任何輔助索引的情況下執(zhí)行按 cno 過濾的查詢EXPLAIN 結(jié)果會顯示 typeALL 全表掃描。然后手動加一個(gè)索引CREATE INDEX idx_sc_cno ON sc(cno);再執(zhí)行同樣的查詢EXPLAIN 里 type 會變成 refrows 預(yù)估數(shù)明顯下降。這個(gè)對比就是把前面練習(xí)里學(xué)到的東西真正用到性能優(yōu)化上的關(guān)鍵一步。實(shí)際業(yè)務(wù)中聯(lián)合索引的設(shè)計(jì)比單列索引更值得關(guān)注。sc 表最常見的查詢模式是按 (sno, cno) 查成績或者按 cno 查選課名單。如果業(yè)務(wù)偏向前者聯(lián)合主鍵已經(jīng)覆蓋如果后面要頻繁按 cno 查單建 idx_sc_cno 就能避免每次回表。5.2 把三張表遷移到真實(shí)業(yè)務(wù)場景邊界在哪里student、sc、course 畢竟是教學(xué)模型遷移到真實(shí)項(xiàng)目時(shí)有三個(gè)明顯的邊界要注意。一是數(shù)據(jù)量生產(chǎn)環(huán)境單表百萬行起步這套練習(xí)表沒有分區(qū)、沒有數(shù)據(jù)生命周期管理直接照搬會有性能問題。二是缺失審計(jì)字段真實(shí)業(yè)務(wù)表幾乎都要有 create_time、update_time、操作人這幾個(gè)字段教學(xué)表里完全沒有上線前要補(bǔ)。三是沒有軟刪除和狀態(tài)字段真實(shí)業(yè)務(wù)不會物理刪除記錄而是用 status 字段標(biāo)記有效性練習(xí)表的 DELETE 操作要改成 UPDATE status。一個(gè)比較實(shí)用的落地方式是把這三張表當(dāng)作一個(gè)“最小可運(yùn)行的數(shù)據(jù)模型”在公司內(nèi)部做技術(shù)分享或者新人培訓(xùn)時(shí)用來演示慢 SQL 優(yōu)化和連接查詢原理。數(shù)據(jù)量小、字段簡單、問題復(fù)現(xiàn)快比拿生產(chǎn)庫演練安全得多。我有一個(gè)習(xí)慣每次講 SQL 優(yōu)化之前先在本地用這套表造 10 萬行數(shù)據(jù)然后故意寫幾條不帶 WHERE 的連接查詢讓新人親眼看到全表掃描導(dǎo)致查詢時(shí)間從毫秒級變成秒級再讓他們自己用 EXPLAIN 定位問題。這種直觀對比比講半小時(shí)理論都有用。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲素人综合| 少妇干B| 人人看黄色视频| 亚洲精品国产熟女久久久| 亚洲综合影院| 日韩欧美天堂| 色婷婷综合久久久久中文一区二区| 亚洲女人91| 久久99网站| 亚洲高清欧美总合| 综合视频91| 午夜理论片在线观看免费| 天操老女人| 激情综合二| 亚洲青青草| 精品久久人妻成人网| 黑人性欧美| 日本亚洲vr欧美不卡高清专区| 国产精品片| 不卡九肏| 五月丁香社区婷婷日韩欧美精品影院| 亚洲天堂男人天堂网| 天美传媒国产原创中文字幕亚洲欧美另类 | 欧美日韩插逼视频| 东京热精品97综合网| 久久人妻视频网| 热思思免费视频| 久久久久久久久久久久久久久久9| 超碰97资源大奶| 殴美在线AⅤ| 八戒午夜福利理论片| 我想要啊 啊 啊| 丝袜六区| 青青草国产亚洲精品久久| 91色情黑丝搞鸡在线观看一区二区三区三州| 操我无码| 黄在线| 男人天堂电影院| 久久精品区| 久久最新免费视频23| 男人a天堂手机在线版| 精品国产乱码| 五月丁香社区婷婷日韩欧美精品影院 | 亚洲成aⅴ人片不卡无码| 亚洲精品九九九| 这里都是精品| 精品1区2区3区| 蜜臀Av一区二区三区| 哈哈操电影| 91丝袜人妻| 青青草日本中文字幕| 欧美性爱一级操| 91狠狠综| 九九九九九精品| 精品人妻一区二区三区视频| 色九九九综合| 欧洲精品在线播放| 久久久久久久久久久久黄色 | 亚洲一二三四区在线免费看视频| 啊啊啊在线看| 91精品国产91熟女| 亚洲av噜噜噜噜噜噜| 我爱搞逼综合网| 九九玖玖精品| 小草三级久久观看| 又黄又爽在线观看视频| 丁香六月啪啪| 熟女中出视频| 97人亚洲综合字幕| 夜色97| 一区超碰一区| 一起草三级AV电影在线观看 | 女性喷水高潮在线观看| 伊人久久大香线蕉无码| 国产亚洲日韩在线三区黑人| 中文字幕一区二区三区字幕| 柠檬AV导航| 久久精品国产亚洲AV无码做| 久久人人妻| 国产熟妇一区二区| 美女诱惑在线一区| 国产福利合集| 国产美女mm131爽爽爽爽| 日本久久久久久久久| 大香蕉欧美伊| 香蕉精品二区二区| 国产大学生口爆吞精合集| 综合久久欧美| 热久日综合| 大香蕉懂9| 国产精品99999| 亚洲AV操| 亚码人妻| 涩综合导航| 亚殴在线| 欧美操逼熟女| 激情综合av| 亚洲综合网91| 日韩欧美aⅴ综合网站发布| 亚洲激情综合| 麻豆精品天美| 视频不卡中文字幕| 色综合色综合网| 伊人久久亚洲中文字幕不卡| 婷婷伊人五月| 婷婷六月天| 麻豆区99999| 亚洲永久永久永久永久一级一级一级精品| 熟妇色99| 吖在线不卡一区二区国产剧情| 午夜.DJ高清在线观看免费7| 久热大香蕉| 欧美性,亚州色| 超碰97人人乐| 欧美成熟性爱精品| 密臀在线免费观看| 亚洲天堂男人天堂网| A 天堂在线观看视频| 亚洲色香| 熟女精品va中文字幕| 96精品久久久久中文字幕| 我想要 啊 啊 啊| 婷婷色综合| 中文精品少妇天堂| 日本三级黄页| 美女久久久| 欧美另类色图片| 97碰碰色| 久久婷婷国产一区二区色| 久久日韩肥臀| 玖色AV| 999久久久九九九九| 看日韩操逼| 超碰到97情色| 无码高清少妇久久| 色盈盈影院| 日韩无码视频黄色| 亚洲欧美日韩国产丝袜自拍中文| 国产在线能看的你懂的| 性色中出| www黄片免费看com| 国产麻豆91欧美一区二区久久婷婷国产精品| 美女操逼福利视频| 插B在线观看| av在线资源| 日骚逼视频| 天天色播| 欧美 日韩 亚洲 春色| 男人下部插入女人下部 | 岛国黄色短视频| 人人操人人爽人人操人人| 中文字幕精品丝袜| 风流老熟女一区二区三区l| 婷婷精品久久av影视| 97免费在线观看视频| 尹人大香蕉视频在线| 高清孕妇孕交| 国产精品对白自产拍| 亚洲激情综合| 白天啪啪晚上啪啪视频| 日韩精品一二三| 91啪9色| 久久久久久69国产一区二区| 99这里只有精品| 色综合美国| 亚洲欧洲无码bt精品合集| 久久a久久| 91女人的网站| 91色综合| www.超碰| 成人性爱av.com| 国产91丝袜在线播放蜜月| 色色亚洲| www色色色com| 国产精品99久久久www| 久久9精品视频| 黄片免费视频2019| 丰满人妻-区二区三区| 男人的天堂久久狠| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 有码免费观看| 国产女人成人精品视频| 天天激情干| 色图综合| 日韩视频中文字幕| 欧美日韩人人精品| 久久久A∨| 操操操日本的逼| 精品人妻av区天天看片| 亚春色色| 污到发麻的视频 国产| 搡老熟女老女人老熟妇免费视频| 日本成人A片网站| 青青草一区二区高清无码视频| 在线观看A啊啊啊| 啊a一区在线| 天天摸,夜夜摸| 国产精品岛国片在线观看| 国产家庭乱伦性爱视频| 国产家庭乱伦表演| av网站免费看| 97天天日| 国产精品午夜AV完会免费 | 大干人妻| 成人精品水蜜桃久久久久久久| 色眯眯射| 夜夜国产一区| 九九九九九九九九九五码| 欧美午夜色妇色鬼| 97综合久第一页| 人妻内射一区二区在线视频| 久久少妇人妻| 国外91| 五月综合视频| 精品视频久久久久九九九九9999| 男人高清无码一区二区| 欧美色综合影院| 亚洲 国产 精品一区| 亚洲欧美日韩夜夜| 日本人体九九九九九九| 国产乱子伦一区二区三区免看| 9999亚洲电影| 懂色av中文字幕一区二区三区天美 | 久久精品99久久久久久| 亚洲清纯综合| 久久双插| 黄在线| 伊人女女资源在线观看| 久久久人体| 韩国轻伦国内自拍一区| 成人熟女区| 97免费视频在线观看视频| 亚洲欧美啪啪| 精品在线蜜臀| 亚洲天堂一区二区久久| 亚洲欧美经典一区二区| 丰满人妻一区二区三区免费,| 亚洲 欧美都市激情| 密臀AV在线| 在线小说视频一区| 一区二区三| 最新日日夜夜天天干干| 久久人妻精品| 欧美综合制服在线| 97人人爱人人乐| 国产精品精品系列在线观看| 日韩精品永久在线观看| 久妇网| 在线情色电影 91大| 人妻熟女一区二区在线视频| 久久精品国产亚洲妲己影视| 五月婷婷性爱| 一区中文字幕二区日韩| 黑人猛交| av片在线观看免费播放| 色香伊人| 黄色无码高清黄色无码网站| 久久久久婷婷| 青青欧洲黑| 韩国三级色呦呦| 99精品视频在线观看免费| 午夜丁香| 超碰久久精品| 黄片免费视频2019| 男人的天堂不卡一区二区| 久久精品天美| 欧美色女人| 欧美日本一区二区a人| 精品久久久久瑟瑟| 精品无码欧美三级| 中文字暮97| 青青草一区二区三区四| a v网站在线播放| 97超碰无码网| 夜夜嗨视频| 丁香婷婷啪啪| 亚州色图欧美色图| 操逼日韩无码| 欧美极品色| 国产精品国产自产高清AV| 志村玲子视频一区二区| 97 色综合| 久久曰曰| 久久久久久人| 日韩婷婷| 久久精品成人| 不卡啪啪视频| 国产精品高朝久久久久久久| 成人a大片在线观看| 人妻大相焦在线| 亚州欧美色图| 久久手机好看网站| 99色网| 亚洲精品丝袜-不卡成人免费……| 日日玩天天干| 丁香啪啪| 97aiaiai| 蜜臀在线免费观看在线免费观看| 久久久精品网站| 这里只有精品久久| 亚洲欧美情色| 色女综合| 国产精品999zyz| 久草在| 热久久无毒不卡| 午夜一级免费毛片| 在线 欧美 亚洲| 国产黄色av大片网站| 韩国嫰模上门援交视频| 岛国精品视频在线观看| 日日夜夜骑| 日日日日日| 国产一级高清免费观看| 久久大线蕉一区| 精品人妻中文字幕4399| 国产精品午夜福利| 91 丝袜在线| 国产亚洲中文不卡二区| 久久人妻熟女一区二区| 日韩内射视频| 欧美人妻精品一区二区| 欧美日韩中文字幕人妻| 97精品视频免费| 26UUU欧美激情一区二区| 91国产在线精品| 中文字幕丰满人妻日本| 蜜桃视频精品一区二区| 狠狠操夜夜| 加勒比av官网在线| 久久久无码国精品无码三区三区| 日本人妻丰满熟妇久久久久久| 亚洲最大的黄色电影网站。| 日韩探花精品在线视频| 九七超碰| 久久熟女嫩草成人片免费| 后入美女国产| 精品性爱一区二区| 日本韩高清无砖码22o| 精品无码一二三四区| WWW黄片COM| 亚洲男人天堂Av| 少妇一级无码精品| 97综合激情| 久久久久久久国产| 色色色色色色色色色色色色色色综合| 成人aⅴ一区二区三区| 91蜜臀人妻中文字幕在线| 久久综合日韩亚洲欧美| 大香蕉手机视频| 欧美一级美片在线观看免费| 天天亚洲| 国产精选视频| 精品国产久久乱码| 精品久久久久瑟瑟| 国产欧美第五页| 无码日韩人妻av一| 白丝被操91| 久久αⅴ| 亚洲欧美校园| 超碰午夜| 中出人妻中文字幕91在线| 内射日韩大臀美女| 五月婷婷激情| www久| 凹凸久久人人| 亚欧性爱无码| 色天使亚洲综合在线观看| 国产精品2020| http://qxhbdz.com| 强奸乱亚洲| 免费在线黄片视频| 国产黄色影片在线观看| 亚洲伊人成综合成人网| 亚洲欧美另类图片| 久久大黄片| 91制服丝袜| 99精品丰满人妻无码| 久久久久网站-538在线视频-欧美永久乱码 | 黄骗免费网站| 色欧美天天| 强奸a片网| 岛国艾薇凹凸视频天堂| 国产h片在线观看视频| 91影库| 久久久精品中文字幕爱豆| 综合另类| 一级@啪啪视频| 中文字幕一区二区三区四区在线视频| 18禁无码永久免费无限制| 国内精品嫩模A∨私拍小视频| 欧美高清色| 久久老女人| 放黄片放3级黄片没穿衣服| 日夜伊人网| 91w欧美| 国产中出内射一区二区| 中文字幕中文字幕一区二区| 激情综合二| 久久久久久久国产a∨| 91强奸乱轮| 成人日韩欧美| 精品v1区| 亚洲网污污污污| 欧美日韩精品久久久久东北老熟妇| 久久是精品| 理论久久婷婷网8| 五十路三区在线| 日本性爱视频一级| 福利视频一区二区微拍| 亚洲成人在线播放| yiren97| 中出后入| 96精品久久| 免费家庭乱伦视频| 亚洲欧美一区二区三区一猛片| 五月婷久久| 美女人妻色网站| 91l欧美在线| 老司机香蕉| 澳门黄片一香蕉视频| 99性爱在线观看| 99久久9| 国产高清不卡视频| 超碰人人干天天射| 岛国免费黄色网址| 五月激情小说| 人妻天天爽| 亚洲无码一区成人免费午夜| 尤物黄色在线观看网站| 天天做天天爱| 青女在线| 三上悠亚在线毛片91| 免费又黄又裸乳的视频| 欧美夜夜狠| 和协影院中文字幕三区| 懂色Av一区二区三区| 操迟操逼在巾线Fre看| 超碰九色| 91 综合 色| 69天堂| 91爆操视频| 欧美黑人与女人91~| 久久亚洲一区女同性恋中文字幕| 大黄片做爱的大的| 亚洲中文字幕有码视频一区二区三区| 玖玖无码超碰| 天天精品| 好屌色综合| a男人的天堂久久一级A毛片| 国产后入精品| 91色插| 91精品国产高清久久久久久,亚洲成人 | 国产91精品福利在线| 亚洲欧洲小说图片视频| 国际精品久久久| 国产亚洲美日韩Aⅴ中文字幕无码成人| 国语人妻精彩刺激| 搡老女人老熟女91老熟女综合网| 强奸乱伦动态污图免费| 加勒比人妻综合| 亚洲天堂五月天国产| 亚洲影视综合网| 日本亚洲嫩草影院啪啪| 亚洲综合色婷婷| 吊色| 亚洲精品日韩国产欧美| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 久久久久久亚洲Av无码精| 屌逼传媒| 加勒比伊人| 色色色色色色色色色色色色色色综合| 久久久亚洲精品中文字幕人妻| 亚洲精品第一| 熟女一区二区三区四区| 大香蕉久| 国产精品久久久| 麻豆av一区二区三区| 久久久少妇| 日韩国产品视频中文字| 久久 国产 无码| 口爆欧美91| 亚洲精品三区在线观看| WWW美腿丝袜香蕉中文| 熟女人妻一区二区三区| 农村少妇久久久久久久| 精品超碰中文在线| 日本国产亚洲一区在线观看| 97爱爱爱| 亚洲色图 欧美| 91精品久久久久久77777| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 亚洲色性情三级| 男人的天堂2019AV| 中文字幕三四区| 91丝袜美腿网站| 超碰97人人cao| 亚洲精品1区| 日人妻视频91| 加勒比aⅴ| 亚洲欧美天堂在线| 日韩人成网站在线播放| 97在线观| 久久久久亚洲精品| 日本一级黄色电影| 日韩精品资源专区二区| 精品无码产区一区二| 99热综合| 国产一区在线观看无码AV| 亚洲乱熟女一区二区| 亚洲一区中文字幕久久,果冻传媒一区二区天美传媒 | 麻豆天美电影一区二区| 免费一级黄色录像影片| 亚洲在线a| 91草草草| 嗯嗯啊啊视频在线看| 黄色片A级一区二区三区| AV男人天堂网| 日欧美色| 一区二区三区四区色图| 色狠狠 - 百度| 欧美亚洲今日在线| 久久97超碰香蕉| 久都青青视频| 人人透人人操| 偷拍亚洲熟女视频播放| 97精品在线视频| 九九九九九九九九九九九九九九九女| 熟女丰满人妻一区| 岛国片在线观看视频亚洲| 精品无码久久久久久久杏吧| 97欧美日韩精品| 北京美女一区二区| 毛片17S| 欧美特大黄一级片片免费| 免费视频在线一区二区不卡| 亚州综| 日本最新1区2区3区| 国产精品 午夜福利| 任你草| 欧美成人午夜免费福利785| 天天激情综合站| 亚洲av青草久久一区二区| 97在线亚洲| 色网1| 蜜臀99999| 青青草日逼视频| 无码免费一区二区三区啪啪| 狼人久草| 无码国产精品午夜不卡(| 精品人妻一区| 岛国黄| 欧美日韩另类在线播放| 翔田千里AⅤHD无码| 爱妃国产亚洲视频中文字幕| 黄色大片视频在线免费看| 99热伊人| 九九九热| 台湾一区国产高清在线| 17c嫩草51久久91嫩草| 美女久久久| 97欧美在线| 中文字幕在线免费观看| 蜜臀久久99精品久久久| 97色碰| 天天综合亚洲综合| 国产高清午夜成人在线观看| 乱操乱伦AV| 国产日韩无码一区二区三区久久区| 免费岛国一级片| 日韩特级毛片免费观看全集| 黑人精品一区二区在线播放| 最新三级网址| 免费操逼视频下载| 九九aV| 天天操夜夜操| 毛片视频白嫩| 亚洲高清视频在线观看| 九九九九精品一区| 亚洲激情欧美色图 | 成人亚欧免费视频| 成人av动漫在线观看| 狼人综合婷婷激情四射| 国产AV人人 夜夜人人澡| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 九色视频91| 俺去也婷婷| 日本丝袜美腿人妻九九| 天天色踪合| 狠狠色五月亚洲91| jizz啪啪| 92人人操人人| 国产伦精品一区二区三区视频女| 男人久久精品| 91高清欧美| 亚洲本色精品一区二区久久| 一区二区三区探花在线观看| 久热99| 欧美 传媒 麻豆 日韩 偷拍| 素人伊尹大香蕉免费下载视频| 久操免费在线| 亚洲精品第一| 久久综合乱子伦国产免费| 超碰日韩美妻| 91亚州| 91精品伊人久久久大香线蕉91| 加勒比无码一区二区三区| 婷婷另类小说| 啊啊啊啊免费视频| 精品亚洲国产成人精品| 国产人妻精品久久久一区二区三区| 日本超碰97日韩精品人妻| 啊啊啊啊免费视频| 黄色一级视| 三级片大波波| 亚洲春色欧美| 中文字幕91页| 96精品久久久久中文字幕| 一本色道久久综合亚洲二区三区| 国产亚洲精品激情| 久久精品视频久久久| 久久一二三四五六七八九区| 乱伦一区二区三区‘| 黑操B| 日本久久久久久久久久| 精品九九国产无码| 夜夜操夜夜爽夜夜高潮| 992大香蕉| 亚洲啪啪视频一区二区| 天天综合香 ld视频| 日本女人久久久| 无色无码| 久久久久久久久久久久九| 国产精品一区二区a| 色久综合| 啪啪啪男女亚洲中文字幕99| 久久亚洲精品成人av| 操B久久| 亚洲无992tv| 91狠狠色丁香婷婷综合久久| 色哟哟精品1精品2| 国产综合网站在线播放 | 长久操视频| 激情 欧美 亚洲 小说| 九九久久久久久爱| 国产精品诱惑| 亚洲精品男人的天堂| 97久久久久久久久久| 日本一级二级三级网站| 啊啊啊啊啊啊啊啊要喷了| 成人日韩3| 91爱做| 亚洲无吗在线视频| 日韩色女精品| 亚洲av淫乱| K8久久久久| 色婷婷色99国产综合精品| 色97欧美| 日本人体九九九九九九| 又粗又长又大国产不卡| 亚洲不卡av在线| 99e久久国产精品| 色香在线| 黄片直播三级黄片两女一男| 日韩欧美~中文字| 天天日天天爽| 国产捆绑一区| 射欧美综合| 午夜操逼不卡| 久久久久人| 无套内射性感少妇视频| 亚洲乱妇p22| 97中文字幕色| 成人a大片在线观看| 亚欧操逼片在线观看 | 夂久色| 色欲天天综合久久久无码网中文| 亚洲清纯唯美| 久久精品三级影视| 欧综合网| 亚洲综合影片| 精品国产乱码久久久久久口爆网站 | 色网综合网| 美国一区二区免费视频| 91亚洲欧洲| 伊人久久大香线综合无码| 把腿张开老子CAO烂你| JuliaAnn丝袜熟女系列| 亚洲永久永久永久永久一级一级一级精品 | 亚洲精品官网在线观看| 大鸡巴久久| 人妻精品一区二区全免费| 被体育老师抱着c到高潮| 97在线免费看视频| yy少妇精品久久| 九九热精品视频在线观看| 一级人妻性爱视频| 欧美小说区视频区| 亚洲熟女乱熟乱熟妇综合网二区| 国产在线精品偷| 成人五级久久| 91老司机精品| 2017大香蕉国产精品久久| 色婷婷在线视频| 色狠狠 - 百度| 少妇一区二区三区| 综合大香蕉美。| 九九久久99| 色五月婷婷久久| 久久综合日韩亚洲欧美| 少妇干B| 亚洲无码精品AV久久久| 婷婷20月天青娱乐| 九一性生活免费视频| 成 人 影视 一区 二区 三区 四区| 东京热男人的天堂精品| 精品一区二区国产日韩| 99热伊人| 中文字幕av一区二区三区人妻少妇| 成人综合网 欧美| 啊啊啊啊嗯嗯嗯用力好爽| 操逼不卡中文字幕| 日韩无码操逼片| 欧美亚洲高清| 97欧美日韩综合| 久久一二三四五六七八九区| 欧美韩日精品资源| 九九成人精品| 999久久久九| 天天操狠狠日夜夜干超碰撸com视频在线观看| 日韩一级特黄av毛片| 四虎国产精品永久入口| 黄片www视频免费| 久久中出| 亚洲精品九九九| 男人的天堂99| 91天堂| 国产区在线| 亚洲自拍小说| 性欧美999| 国产在线激情| 久久爱97| 大香蕉中文在线| 78超碰| 中文字幕一二三| 夜夜嗨视频| 九九九九免费| 天天看天天日天天操| 人人爱人人乐人人操| 日本爽爽爽爽爽爽免费视频| 亚洲欧美成人网站AAA| 搡老女人老熟女91| 午夜啪| 日韩性爱视频在线免费观看| 国产乱伦亚洲| 中文字幕123| 婷婷丁香六月| 少妇二级| 91视频成人福利网站在线一区| 久久综合女优| 夜夜骑操视频| 熟妇人妻一二三区免费| 96精品久久| 99亚洲国产精品色一区二区三区| 囯产精品久久久久久久久久梁医生| 婷婷97| 99爱精品| 熟女啪啪视频| 久久精9| 欧美熟女丝袜| 欧美高清91| 久久精品一区二区一8| 欧美一级美片在线观看免费| 激情视屏国产乱伦强奸| 激情综合五月丁香| 啊啊啊好湿国产一二| 欧美 日韩 另类 亚洲| 日本不卡免费二区| 麻豆久久精品亚洲精品88| 人人操我人人干| 国产美女高潮叫床视频| 乱人伦 国语对白:视频直接看| 中文字幕一区二区三区人妻少妇在线| 97精品综合久久网| 亚洲情色 自拍| 男女日B国产| 中文自拍欧美影视| 天天摸夜夜摸| 校园春色美腿丝袜| 久久这里只精品免费福利| 国产真实野战在线视频| 操人妻少妇中文| Aa东京男人的天堂| 97色碰| 18禁超污无遮挡无码免费网| 亚洲熟妇图片| 免费精品AB| 日韩av在线精品观看| av国产无码| 久久久∴| 国产精品香蕉| 精品性爱无码在线播放| 丰满少妇高潮无码| 天天综合中文字幕 91| 天天插夜夜操| 青娱乐导航AV| 日夜尻逼网| 亚洲一区中文精品| 五月天婷婷综合网| 制服丝袜第二页| 免费看片黄| 美女诱惑爱爱| 男人的天堂三级| 午夜.DJ高清在线观看免费7| WWW4虎| 美女久久久久久久久久久| 欧美十八禁网站| 成人在线视频一区| 国产精品久久久吖| 大香蕉免费中文| 四虎影视国产精品| 人摸人人操人| 欧美精品久久| 无码高清操逼网址| 国产性刺激| 97综合久久| 久久免费精彩视频| 亚洲天堂少妇| 一区二区三区激情在线观看| 欧美亚洲国产日本在线,久久精品国产| 国产高清视频无码在线| 91大神电影天堂| 天天日天天干少妇日| 韩国黄色片精品久久久| 91久热| 亚洲AV无码乱码在线观看性色| 日韩人妻丝袜美腿中文| 日韩 欧美 另类 人妻| 四虎国产成人精品免费一女五男| 91免费看一区二区三区| 亚州成人A√| 天堂69亚洲精品中文字| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国产精品久久久| 久久色激情一区二区三区| 91狠狠| 夜夜操夜夜爽夜夜高潮| 一级性爱视频免费在线| 久久夜色一区二区| 亚洲成人性爱网站在线播放| 日日干男人的天堂| 熟女人妇一区二区三区| 久久激情视频| 99热这里都是精品| 久久AV无码AV| 熟女欧美日韩综合婷婷| 很黄很色的视频在线观看| 九九综合网| 婷婷综合| 精品无码久久久久久久杏吧| 国产熟女| 青青草天天亲夜夜操网| 熟妇色99| 夜夜騷av、一區二區| 中国大陆国产高清AⅤ毛片| 亚洲情色综合网| 亚洲精品99| 黄色成人网久久久久久| 超碰免费欧美7| 婷婷久久网| 成全动漫视频观看免费下载| 欧美高清18A片| 好吊色一区| 人妻日日干| 五十路三区在线| 后入人妻一区| 久久精品高清AV| 好吊色青靑草| 欧美激情一区二区| 欧洲熟妇xxXx欧美老妇裸体| 天美传媒婬乱| 丝袜美腿射精91| 天天爱天天韩国日本牛牛牛牛 | 亚洲欧洲国产综合av| 99热这里只有精品18| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | AV99热18这里只有精品| 久综合网| 国产美女销魂在线观看不卡| 欧洲色综合| 欧美超碰96| 人人扣人人操| 黄色激情电影在线观看| 亚洲欧美清纯| 日夜尻逼网| 欧洲亚洲人人爽爽视频| 国产毛片精品一区二区色欲黄A片| 黄色无码高清黄色无码网站| 人妻色情天天操| 成人网欧美风情| 婷婷性爱| 91社操逼| 欧美呦呦性爱| 91亚洲人| 超碰碰小说97| 亚洲自拍一区夜夜操| 啊啊啊好爽快点啊啊啊嗯嗯| 99精品久久久久久久婷婷| 立川理惠被中出无码| 天天日天天干天天整| 淫淫总合网| 在线观看成人性爱免费小视频| 91丝袜视频在线观看| 香蕉大久久久| 国产原创精品| 九九黄色网| 欧美成人四级在线播放| 久久久久久精品免费看A级| 免费操逼91| 九九久久国产精品怡红院| 一区二区三区蜜桃成人撸久久东京热| 亚洲天堂,男人| 日本在线播放不卡一区| 日本免费中文字幕在线| 香蕉国产精品麻豆亚洲欧美日韩| 男人天堂东京热| 欧美久久人体| 精品白丝一区| 麻豆传媒一区二区在线观看| 国产中文福利| 蜜臀AV成人精品蜜臀| 国产精品亚洲四五区在线观看| 亚州情色j区| 长长久久曰曰夜夜成人网| 丁香五月久久| 91九九| 狠狠色婷婷777| 国产视频97| 欧美人妻二区三区| 奸色色 男人天堂 天天射| 午夜天堂精品久久久久91| 色5月婷婷| 亚洲人妻av| 狠狠色婷婷7777久| 五月婷婷激情网| 久久98| 中文字幕老熟妇黄色视频| 欧美色图天堂在线| 69超碰综合| 1区2区3区在线视频| 国产精品熟女AV中文字幕在线播放| 91色碰| 国产精品 午夜福利| 绑缚麻绳人妻寝取完整版| 欧美一区二区成人一卡| 天天综合网~91综合网| 蜜桃狠狠色伊人亚洲综合| 日韩电影免费网站麻豆视频| 五月天AV资源| 久9九综合在线| 亚洲伊人成综合成人网| 亚洲激情综合另类男同| 国产三级多多影院2022国产AA一级毛片无码 | 东京热男人的天堂网| 亚洲av夫妻操穴网| av操操不卡| h色99999| 久久久啊啊啊| 翔田千里AV无码秘 三区| 91在线精品一区二区三区| 精品中文字幕第一页| 国产97视频免费观看| 激情文学网伊人| 97超碰色屌| 91亚洲丝袜熟女| 91亚洲网| 欧美亚洲色图另类国产| 婷婷久月| 亚洲成人一二三区| Julia Annxxxxx| 亚洲97在线| 欧美综合娱乐久久| 久久久国产三级黄色片| 区一在线观看| 怡红院亚洲怡春院av| 丝袜美腿亚洲| 蜜乳AV网址| 少妇诱惑视频| 人乳av| 欧美精品久久久久久久丰满| 久久婷婷亚洲| 天堂在线一区二区| 亚洲精品视频在线| 麻豆九九九| 中文字幕青青草| 91看黄片| 丁香五月激情综合| WWW.加勒比人妻一区不卡.com| 99色热| 亚洲天堂AV在线播放| 91在线欧色| 91 亚欧| αⅴ天堂| 国产精品情侣啪啪| 青女偷拍网| 人人看人人爰人人操| 日韩人妻精品久久久久| 天堂精品| 国产一区二区三区白丝| 亚洲男人bt天堂| 亚洲青青草| 涩综合导航| 日本超碰在线国产一区| 国产精品69久久久久孕妇欧美| 国产精品久久久无码aV去| 国产11页| 白嫩91在线亚洲| 美女写真| 美国久久一二三四| 国产乱伦视频污| 亚洲男人天堂2019| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 摸奶性爱视频网站在线免费播放| 一本一道人妻久久一区二区三区| 91超碰丝袜制服| 亚洲一欧洲中文字幕在线 | 亚洲无码日韩电影| 小情侣高清国产在线视频| 999 久久久| 国产乱伦亚洲| 亚洲中文字幕日产无码久久| a亚洲欧美色欲| 美女人妻色网站| 视频不卡中文字幕| 精品少妇一区二区三区免费观看| 春色91| 91九色网| 97在线免费看视频| 婷婷爱五月| 99热销国产这里有精品| 色色操| 亚洲欧美洲综合| 桃色五月天| 欧美色青| 久久久久性熟视频| 欧州一区二区三区四区| 中文久久一区| 国产精品分类在线观看| 色眯眯射| 艹精品| 日韩色图 一区二区| 色噜噜人妻丝袜a∨先锋影| 亚洲风情综合网| 亚洲人妻AV| 久久97精品久久久久久久不卡| 麻豆天美国美国产| 日B操| 精品久久九| 俺去俺来也在线www| 久久久久99精品成人片蜜臀| 伊人综合色网| 亚欧无码线免费观看视频| 99RE在线视频精品,这里只有精品| 乱伦1色页| chaopen97久久| 欧美美女自慰一区二区三区| 中英熟女操女| 欧美性爱一区二区三区四区| 激情综合网五月婷婷五月天| 久热精品在线| 伊人成人中文字幕久久网| 日韩免费簧片| 婷婷久草| 婷婷大香蕉| 澳门黄片一香蕉视频| AV久日| 黄色AV影视| 国产人妖的免费的视频| 另类老少妇| 无码91| 黄片com.| 97免费在线| 亚洲91网站| 天天综合色| 2017人人操,人人摸| 91激情国产| 精品久久99| 天天干夜夜一操| 久艹日日日| 超碰伊人在线| 骚货人妻偷情自拍在线视频| 国产一区免费午夜视频| 欧洲亚洲人妻无码高清久久三区四区| 日韩一级二级在线| 久操不卡视频| 国模无码人体一区二区三| 久久97视频| 97精品97| www.色婷婷| av在线一区二区三区| 白丝一区| 97精品人妻一二三四| 求求你操操我| 九九成人视频| 色黄色美女大长腿午夜视频| 老熟女91| 青青草色AV| 精品国产久久乱码| 精品无吗久久| 激情五月天婷婷| 日va操| 久久久久久久久久va| 国产AV中文| 五十路人妻在线| 大香蕉伊人在线成人AV在线观看| 五月婷婷影院| 日韩欧美天天爽爽爽天天爽爽| 午夜欧美J进J出白浆流出久久久| 日欧亚洲二三区大片不卡| 亚洲欧洲日韩天堂av| 蜜臀99久久国产| 日本一久是| 91天天综合网,天天综合网| 99天堂网| 国产精品久久成人免费| 亚洲h片在线免费观看| av激情亚洲五月天| 欧美日韩欧美| 97超碰影音| 欧美在线|亚洲| 999 久久久| 最新精品久久蜜桃| 亚洲官网在线| 99re6久热只有精品6在线直播| 丁香婷婷色五月| 天堂8在线新版官网| 日韩一性一交一A片俄罗斯| 日韩欧美成人午夜福利| se吧提供国产乱老熟视频胖女人| 欧美精品宗合| 亚洲精品少妇| 中日韓欧美高清| 久久69| 欧洲亚洲少妇| 欧美资源| 91少妇| 神马久久久久久| 精品欧美老熟女一二区| 麻豆精品一区二区三区四区免费观看| 60秒不遮不挡| 91亚洲欧洲| 国产精品人妻无码久久久老鸭窝 | 欧美视频一区二区三区| 人人澡人人澡人人| 国产av色网| 国产精品999zyz| jizzjizz欧美| 91快色色色色色| 无码 有码 国产18p| 噜噜噜无码AV一级一级久久影院| 日本性爱少妇|