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

ARTICLE DETAIL

資訊詳情

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

數(shù)據(jù)庫(kù)實(shí)驗(yàn)四實(shí)戰(zhàn):視圖、索引、存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器全解析

數(shù)據(jù)庫(kù)實(shí)驗(yàn)四實(shí)戰(zhàn):視圖、索引、存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器全解析 數(shù)據(jù)庫(kù)系統(tǒng)這門課做實(shí)驗(yàn)的心態(tài)往往分兩個(gè)階段。前三次實(shí)驗(yàn)大家基本都在跟 SQL 語(yǔ)法纏斗——建表、增刪改查、寫子查詢跑出正確結(jié)果就很有成就感。但到了實(shí)驗(yàn)四味道突然變了它不再只問(wèn)你“這條查詢?cè)趺磳憽倍情_始問(wèn)“這條查詢憑什么快”“這筆業(yè)務(wù)憑什么不會(huì)出錯(cuò)”“這個(gè)規(guī)則憑什么自動(dòng)執(zhí)行”。說(shuō)白了實(shí)驗(yàn)四要把你的視野從“寫對(duì)”拉到“寫好”從單條語(yǔ)句拉到數(shù)據(jù)庫(kù)運(yùn)行機(jī)制的整體理解。這篇文章我就拿某高校軟件學(xué)院數(shù)據(jù)庫(kù)系統(tǒng)實(shí)驗(yàn)四的完整過(guò)程來(lái)講把視圖、索引、存儲(chǔ)過(guò)程、事務(wù)和觸發(fā)器這五個(gè)點(diǎn)串進(jìn)一條業(yè)務(wù)線里逐步拆解每一步為什么要這么做、怎么做才能得分、實(shí)驗(yàn)室里最容易翻車的地方在哪。正在啃這個(gè)實(shí)驗(yàn)的同學(xué)可以直接照做想補(bǔ)短板或者以后準(zhǔn)備做助教的人也可以把它當(dāng)一份現(xiàn)成的備課筆記。1. 實(shí)驗(yàn)四到底在考什么需求拆解與整體思路1.1 從課程主線看實(shí)驗(yàn)四的定位數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)驗(yàn)安排一般有一條很清晰的遞進(jìn)線。實(shí)驗(yàn)一建庫(kù)建表練的是 DDL核心是熟悉字段類型、主鍵外鍵約束實(shí)驗(yàn)二做增刪改查練的是 DML核心是單表的 CURD實(shí)驗(yàn)三開始上難度多表連接、子查詢、聚合函數(shù)核心是“把復(fù)雜查詢寫出來(lái)”到了實(shí)驗(yàn)四重點(diǎn)就變成了“把數(shù)據(jù)庫(kù)用明白”。這里的“用明白”包含幾個(gè)層面。第一能不能創(chuàng)建視圖來(lái)簡(jiǎn)化高頻查詢第二能不能用索引讓查詢真正變快而不是停留在“理論上該快”第三能不能用存儲(chǔ)過(guò)程把多步業(yè)務(wù)操作打包成一個(gè)可調(diào)用的單元第四能不能用事務(wù)保證數(shù)據(jù)在并發(fā)和出錯(cuò)環(huán)境下依然一致第五能不能用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)約束和審計(jì)。這五個(gè)點(diǎn)都不是新語(yǔ)法那么簡(jiǎn)單它們的共同特征是每一個(gè)都是在回答“為什么”。我見(jiàn)過(guò)不少同學(xué)實(shí)驗(yàn)四做得稀里糊涂代碼都是從網(wǎng)上抄來(lái)的運(yùn)行能出結(jié)果就提交了。老師驗(yàn)收時(shí)隨口問(wèn)一句“你這個(gè)視圖為什么比直接查表方便”就卡住了。所以做這個(gè)實(shí)驗(yàn)之前先別急著敲代碼把五件事的邏輯關(guān)系想清楚比多寫十條 SQL 有用得多。1.2 一條業(yè)務(wù)線串起五個(gè)知識(shí)點(diǎn)實(shí)驗(yàn)四最好的做法是找一條業(yè)務(wù)線把這五個(gè)知識(shí)點(diǎn)全部串起來(lái)。我當(dāng)時(shí)帶學(xué)生的時(shí)候推薦他們統(tǒng)一采用“學(xué)生成績(jī)管理系統(tǒng)”的場(chǎng)景因?yàn)檎n程所有同學(xué)都能理解而且非常自然。場(chǎng)景是這樣設(shè)計(jì)的學(xué)生選課、考試、成績(jī)錄入然后教務(wù)需要經(jīng)常按課程查看班級(jí)成績(jī)分布。圍繞這個(gè)場(chǎng)景五個(gè)知識(shí)點(diǎn)的出場(chǎng)順序非常順經(jīng)常會(huì)寫“某門課所有學(xué)生的成績(jī)和平均分”這種長(zhǎng) SQL于是封裝成視圖成績(jī)表數(shù)據(jù)量大了以后查詢?cè)絹?lái)越慢于是給高頻查詢字段建索引成績(jī)錄錯(cuò)要修改但不能改一半于是用事務(wù)保證原子性再用存儲(chǔ)過(guò)程把“檢查記錄-更新-提交/回滾”封裝起來(lái)學(xué)生成績(jī)一變就要留痕人工在應(yīng)用里寫日志容易漏于是靠觸發(fā)器自動(dòng)寫入審計(jì)表。五個(gè)點(diǎn)被一條業(yè)務(wù)線串起來(lái)之后實(shí)驗(yàn)報(bào)告也不再是五個(gè)孤立的小題而是“我要在什么場(chǎng)景下解決什么問(wèn)題、為什么選這個(gè)手段、效果如何”的完整閉環(huán)。這個(gè)思路本身就是拿高分的底子。2. 環(huán)境與數(shù)據(jù)準(zhǔn)備動(dòng)手寫 SQL 之前的必修課2.1 數(shù)據(jù)庫(kù)版本和客戶端怎么選實(shí)驗(yàn)四用的數(shù)據(jù)庫(kù)管理系統(tǒng)不同學(xué)校規(guī)定不同。如果你所在課程用的是課內(nèi)統(tǒng)一安裝的版本那沒(méi)什么好挑的如果沒(méi)規(guī)定我的建議是選 MySQL 8.0原因很實(shí)在開源免費(fèi)、安裝包小、出問(wèn)題搜索引擎一搜一大堆答案助教也最熟悉??蛻舳朔矫?DBeaver 和 Navicat 都可以。DBeaver 是免費(fèi)的跨平臺(tái)適合學(xué)生Navicat 對(duì)初學(xué)者更友好圖形界面直觀查看表結(jié)構(gòu)和執(zhí)行計(jì)劃的時(shí)候體驗(yàn)不錯(cuò)。我這里多說(shuō)一句有些同學(xué)偷懶直接在某在線 SQL 網(wǎng)站上做實(shí)驗(yàn)我不太推薦。實(shí)驗(yàn)四不像前面幾次實(shí)驗(yàn)它需要反復(fù)切換會(huì)話去復(fù)現(xiàn)事務(wù)并發(fā)問(wèn)題還需要看執(zhí)行計(jì)劃和鎖等待信息在線網(wǎng)站根本提供不了這些功能。安裝 MySQL 時(shí)有兩個(gè)坑提前說(shuō)一下。一是端口沖突3306 經(jīng)常被之前殘留的舊版本占用裝完連不上先檢查端口二是字符集安裝后默認(rèn)可能是 latin1后面中文亂碼基本都是從這里埋下的我建議建庫(kù)時(shí)直接顯式指定 utf8mb4。2.2 基礎(chǔ)表結(jié)構(gòu)設(shè)計(jì)與樣本數(shù)據(jù)構(gòu)造實(shí)驗(yàn)四的表結(jié)構(gòu)不需要很復(fù)雜三張核心表就夠了學(xué)生表 student、課程表 course、選課成績(jī)表 sc。結(jié)構(gòu)參考如下CREATE DATABASE db_exp4 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE TABLE student ( sno CHAR(9) PRIMARY KEY, sname VARCHAR(20) NOT NULL, sex CHAR(1) DEFAULT 男, dept VARCHAR(30), enroll_year YEAR ); CREATE TABLE course ( cno CHAR(4) PRIMARY KEY, cname VARCHAR(40) NOT NULL, credit DECIMAL(3,1), semester VARCHAR(10) ); CREATE TABLE sc ( sno CHAR(9), cno CHAR(4), score DECIMAL(5,2), PRIMARY KEY (sno, cno), FOREIGN KEY (sno) REFERENCES student(sno), FOREIGN KEY (cno) REFERENCES course(cno) );注意兩個(gè)細(xì)節(jié)一是主鍵用學(xué)號(hào)、課程號(hào)這種有業(yè)務(wù)含義的字段實(shí)驗(yàn)場(chǎng)景里沒(méi)問(wèn)題生產(chǎn)環(huán)境我會(huì)建議用自增 ID但這里沒(méi)必要繞遠(yuǎn)二是成績(jī)用 DECIMAL(5,2)表示三位整數(shù)加兩位小數(shù)比用 INT 精確得多也方便后面算平均分。樣本數(shù)據(jù)這塊很多人不重視覺(jué)得隨便插幾十條就行。但我可以明確告訴你實(shí)驗(yàn)四里“數(shù)據(jù)量”直接決定你索引優(yōu)化的效果能不能體現(xiàn)出來(lái)。只有幾十條記錄全表掃描也在一毫秒以內(nèi)你建索引前后的對(duì)比根本看不出來(lái)。我當(dāng)時(shí)會(huì)讓同學(xué)寫一個(gè)小腳本生成幾百到上千條選課記錄分?jǐn)?shù)分布要盡量自然別全是 90 分以上否則后面的視圖統(tǒng)計(jì)和成績(jī)分布分析會(huì)失真。數(shù)據(jù)里還應(yīng)該故意制造一些“不完美”的情況比如某些學(xué)生沒(méi)有選課有些課程沒(méi)有任何學(xué)生選。這些數(shù)據(jù)在后面驗(yàn)證視圖的外連接、聚合函數(shù)時(shí)非常有用能讓你發(fā)現(xiàn)“用內(nèi)連接統(tǒng)計(jì)會(huì)丟數(shù)據(jù)”這個(gè)經(jīng)典問(wèn)題。2.3 腳本組織與命名約定實(shí)驗(yàn)四的代碼量明顯比前三大多了如果全堆在一個(gè) SQL 文件里執(zhí)行的時(shí)候報(bào)錯(cuò)都不知道錯(cuò)在哪一行。我習(xí)慣把腳本按功能拆成多個(gè)文件01_schema.sql建庫(kù)建表、建約束02_data.sql插入樣本數(shù)據(jù)03_view_index.sql創(chuàng)建視圖和索引04_proc_trigger.sql存儲(chǔ)過(guò)程、觸發(fā)器、事務(wù)操作05_query.sql驗(yàn)證用的查詢語(yǔ)句06_test.sql完整的驗(yàn)收測(cè)試流程這樣做的第一個(gè)好處是調(diào)試定位快哪個(gè)文件報(bào)錯(cuò)就改哪個(gè)文件不需要在一大坨代碼里翻來(lái)翻去。第二個(gè)好處是驗(yàn)收的時(shí)候助教要求“從零開始執(zhí)行一遍”你按文件順序跑一次就能過(guò)不會(huì)因?yàn)槟扯未a在后面引用了前面還沒(méi)創(chuàng)建的視圖而報(bào)錯(cuò)。命名規(guī)范同樣值得養(yǎng)成習(xí)慣視圖用 v_ 開頭存儲(chǔ)過(guò)程用 sp_ 開頭觸發(fā)器用 trg_ 開頭函數(shù)用 fn_ 開頭。學(xué)校不會(huì)強(qiáng)制要求這些但這是行業(yè)里通行的經(jīng)驗(yàn)寫了以后報(bào)告看起來(lái)專業(yè)很多也給自己省不少麻煩。3. 視圖和索引最基礎(chǔ)也最容易丟分的地方3.1 視圖的本質(zhì)與創(chuàng)建要點(diǎn)視圖很多人第一次接觸時(shí)會(huì)覺(jué)得很玄乎其實(shí)它就是一個(gè)命名的查詢。你每次都要寫一遍“學(xué)生選課統(tǒng)計(jì)”的長(zhǎng) SQL不如把它存成一個(gè)虛擬表以后直接查它。視圖不占物理存儲(chǔ)空間數(shù)據(jù)還是存在原來(lái)的表里所以它不會(huì)讓查詢本身變快但能讓查詢語(yǔ)句變短、邏輯變清晰還能隱藏底層表的敏感字段。我建議實(shí)驗(yàn)里至少創(chuàng)建一個(gè)“學(xué)生平均成績(jī)”的視圖CREATE OR REPLACE VIEW v_stu_avg AS SELECT s.sno, s.sname, COUNT(sc.cno) AS course_count, ROUND(AVG(sc.score), 2) AS avg_score FROM student s LEFT JOIN sc ON s.sno sc.sno GROUP BY s.sno, s.sname;這里必須用 LEFT JOIN不能是 INNER JOIN。原因剛才提到過(guò)有些學(xué)生一門課都沒(méi)選內(nèi)連接會(huì)把他們?cè)诮Y(jié)果里抹掉統(tǒng)計(jì)就丟失了這部分記錄。這就是一個(gè)典型的“看起來(lái)全對(duì)、實(shí)際邏輯有漏洞”的點(diǎn)實(shí)驗(yàn)報(bào)告里能主動(dòng)寫出為什么選外連接印象分馬上不一樣。視圖還有一個(gè)容易踩的坑寫視圖定義時(shí)用了SELECT *。剛開始圖省事后來(lái)你給原表加了一個(gè)字段視圖也跟著變但有些老代碼早就寫死了字段順序結(jié)果接口輸出全亂。實(shí)驗(yàn)里不會(huì)鬧這么大動(dòng)靜但養(yǎng)成習(xí)慣視圖里永遠(yuǎn)顯式列出字段。3.2 索引設(shè)計(jì)的取舍索引為什么能讓查詢變快我常用一個(gè)生活類比一本幾千頁(yè)的工具書你要找一個(gè)關(guān)鍵詞一頁(yè)一頁(yè)翻就是全表掃描看目錄定位到頁(yè)碼就是索引查找。數(shù)據(jù)庫(kù)里的索引通常用 B 樹實(shí)現(xiàn)查詢從“順序掃全表”變成“樹里跳轉(zhuǎn)”復(fù)雜度從 O(n) 降到 O(log n)數(shù)據(jù)量越大差距越明顯。但索引不是越多越好這是新手最容易走極端的地方。每建一個(gè)索引寫入時(shí)都要多維護(hù)一棵樹等于每次插入和更新都變慢了。所以建索引的原則是高頻查詢條件字段、外連接字段、排序字段才值得建寫多讀少的表要克制。實(shí)驗(yàn)里我會(huì)讓同學(xué)做一組對(duì)比先不建索引跑一個(gè)“統(tǒng)計(jì)某門課程 90 分以上人數(shù)”的查詢?nèi)缓蠼ㄋ饕鼵REATE INDEX idx_sc_cno_score ON sc(cno, score);再去跑同一句記錄耗時(shí)對(duì)比。復(fù)合索引 (cno, score) 同時(shí)覆蓋了“課程號(hào)過(guò)濾”和“分?jǐn)?shù)范圍判斷”查詢只需要在某個(gè)課程范圍的索引區(qū)間內(nèi)做掃描不需要回表碰成績(jī)數(shù)據(jù)。這個(gè)對(duì)比實(shí)驗(yàn)寫進(jìn)報(bào)告比空談“索引能優(yōu)化查詢”有說(shuō)服力太多。3.3 用執(zhí)行計(jì)劃驗(yàn)證索引而不是靠感覺(jué)很多同學(xué)建完索引以后就默認(rèn)“它生效了”這不對(duì)。索引生效與否執(zhí)行計(jì)劃說(shuō)了才算。MySQL 里在 SQL 前面加個(gè) EXPLAIN 關(guān)鍵字就能看到執(zhí)行計(jì)劃EXPLAIN SELECT s.sname, sc.score FROM sc JOIN student s ON s.sno sc.sno WHERE sc.cno C001 AND sc.score 90;執(zhí)行計(jì)劃里重點(diǎn)看幾列。type 這一行最好不是 ALLALL 就是全表掃描說(shuō)明索引沒(méi)起作用key 列顯示用到了哪個(gè)索引是 NULL 就說(shuō)明沒(méi)用到rows 是預(yù)估掃描的行數(shù)數(shù)字越小越好Extra 出現(xiàn) Using filesort 說(shuō)明排序在內(nèi)存里額外做了通常意味著索引沒(méi)能支持排序。有一個(gè)終極經(jīng)典的坑對(duì)索引列做函數(shù)運(yùn)算。比如WHERE YEAR(enroll_year) 2023哪怕你在 enroll_year 上建了索引執(zhí)行計(jì)劃照樣給你全表掃描。原因是數(shù)據(jù)庫(kù)沒(méi)法對(duì)一列做完函數(shù)后的結(jié)果直接走索引必須把每一行的值都算一遍才知道合不滿足。正確的寫法是寫成范圍條件WHERE enroll_year BETWEEN 2023-01-01 AND 2023-12-31我自己的習(xí)慣是實(shí)驗(yàn)里每驗(yàn)證一個(gè)索引都把 EXPLAIN 的結(jié)果截圖存好然后寫一句“從執(zhí)行計(jì)劃可以看到key 從 NULL 變成了 idx_sc_cno_scorerows 從 XXX 降到了 YYY驗(yàn)證了索引生效”。這句話寫下來(lái)老師很清楚你是真的理解而不是只會(huì)敲代碼。4. 存儲(chǔ)過(guò)程、事務(wù)與觸發(fā)器把業(yè)務(wù)邏輯寫進(jìn)數(shù)據(jù)庫(kù)4.1 存儲(chǔ)過(guò)程的參數(shù)、變量與異常處理存儲(chǔ)過(guò)程本質(zhì)上就是把一段業(yè)務(wù)邏輯封裝在數(shù)據(jù)庫(kù)端需要的時(shí)候 CALL 一下就行。實(shí)驗(yàn)里我會(huì)做一個(gè)“按學(xué)號(hào)和課程號(hào)修改成績(jī)”的存儲(chǔ)過(guò)程它比裸寫一條 UPDATE 多了一層價(jià)值能校驗(yàn)記錄是否存在能在出錯(cuò)時(shí)回滾還能返回處理結(jié)果。DELIMITER // CREATE PROCEDURE sp_update_score( IN p_sno CHAR(9), IN p_cno CHAR(4), IN p_new_score DECIMAL(5,2), OUT p_message VARCHAR(100) ) BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN ROLLBACK; SET p_message 更新失敗已回滾; END; START TRANSACTION; UPDATE sc SET score p_new_score WHERE sno p_sno AND cno p_cno; IF ROW_COUNT() 0 THEN SET p_message 記錄不存在已回滾; ROLLBACK; ELSE COMMIT; SET p_message 更新成功; END IF; END // DELIMITER ;先說(shuō) DELIMITER 這個(gè)看起來(lái)很怪的東西。客戶端默認(rèn)用分號(hào)作為一條語(yǔ)句的結(jié)束標(biāo)志而存儲(chǔ)過(guò)程內(nèi)部每一行 UPDATE 后都有分號(hào)如果不臨時(shí)把分隔符改掉客戶端會(huì)在第一個(gè)分號(hào)處把“語(yǔ)句”斷開后面全部報(bào)錯(cuò)。所以我先把分隔符改成 //等整個(gè)存儲(chǔ)過(guò)程體結(jié)束再用 // 收尾最后再改回分號(hào)。這個(gè)細(xì)節(jié)十個(gè)報(bào)錯(cuò)的同學(xué)有八個(gè)是因?yàn)樗?。再講異常處理DECLARE EXIT HANDLER FOR SQLEXCEPTION 是這份代碼的靈魂。沒(méi)有它事務(wù)中途遇到約束沖突或語(yǔ)法錯(cuò)誤時(shí)已經(jīng)執(zhí)行的語(yǔ)句不會(huì)自動(dòng)回滾數(shù)據(jù)可能處于“改了一半”的狀態(tài)。有了它一旦捕獲異常就整體 ROLLBACK保證原子性。這個(gè)模式的行業(yè)里叫“先聲明異常哨兵再開啟事務(wù)”熟練掌握后寫任何數(shù)據(jù)修改類存儲(chǔ)過(guò)程都能套用。還有一點(diǎn)容易被忽略參數(shù)類型要和表字段完全一致。有一次我見(jiàn)同學(xué)把 p_new_score 聲明成 INT調(diào)用后傳 95.5結(jié)果誤差悄悄就出現(xiàn)了因?yàn)閿?shù)據(jù)庫(kù)把 95.5 轉(zhuǎn)成了 96 再做更新。這種“看起來(lái)沒(méi)問(wèn)題數(shù)據(jù)卻變了”的 bug 最折磨人提前聲明成 DECIMAL(5,2) 就不會(huì)有這回事。4.2 事務(wù)隔離級(jí)別與并發(fā)問(wèn)題的復(fù)現(xiàn)事務(wù)的 ACID 四個(gè)特性背概念容易真正理解要靠動(dòng)手。實(shí)驗(yàn)要求里通常有一條是“演示并發(fā)環(huán)境下事務(wù)的隔離性”這里我給一個(gè)實(shí)際可操作的流程模擬兩個(gè)客戶端同時(shí)處理同一門課的選課人數(shù)。假設(shè)課程容量只剩 1 個(gè)名額兩個(gè)學(xué)生同時(shí)選課。如果不加鎖兩個(gè)事務(wù)都先查“剩余名額”都看到 1都執(zhí)行成功最后容量變成 -1這就叫超賣。解決辦法是查詢名額時(shí)加一把行鎖START TRANSACTION; SELECT quota FROM course WHERE cno C001 FOR UPDATE; -- 業(yè)務(wù)判斷剩余名額是否大于 0 UPDATE course SET quota quota - 1 WHERE cno C001; COMMIT;FOR UPDATE 的作用是把這一行鎖住第二個(gè)事務(wù)同樣執(zhí)行這條 SELECT 時(shí)會(huì)阻塞住直到第一個(gè)事務(wù) COMMIT 或 ROLLBACK它才讀到最新的剩余名額。這個(gè)過(guò)程不親手跑一遍很難體會(huì)“鎖”的含義。隔離級(jí)別是另一個(gè)高頻考點(diǎn)我建議畫一張表來(lái)記讀未提交會(huì)有臟讀和幻讀讀已提交能防臟讀但仍有不可重復(fù)讀和幻讀可重復(fù)讀防了前兩者但可能幻讀串行化全防但并發(fā)性能最差。MySQL 8.0 默認(rèn)是可重復(fù)讀。實(shí)驗(yàn)里復(fù)現(xiàn)這些并發(fā)問(wèn)題有一個(gè)技巧在兩個(gè)會(huì)話里手動(dòng)控制提交時(shí)機(jī)而不是讓程序瞬間跑完。比如在事務(wù)里故意加上 SELECT SLEEP(5); 模擬業(yè)務(wù)處理時(shí)間然后趁這個(gè)窗口在另一個(gè)會(huì)話里去讀同一條數(shù)據(jù)就能清楚觀察到另一個(gè)事務(wù)到底看到的是舊值還是新值。這個(gè)方法很土但非常有效比純講理論直觀得多。4.3 觸發(fā)器的適用場(chǎng)景與邊界觸發(fā)器最有價(jià)值的使用場(chǎng)景是那些“不管從哪個(gè)入口改數(shù)據(jù)都必須伴隨發(fā)生”的邏輯。成績(jī)修改審計(jì)就是一個(gè)標(biāo)準(zhǔn)例子不管成績(jī)是被哪個(gè)應(yīng)用、哪個(gè)用戶改的都必須留下一條審計(jì)記錄。寫代碼的人可能忘了寫日志但觸發(fā)器不會(huì)忘。CREATE TABLE score_audit ( id INT AUTO_INCREMENT PRIMARY KEY, sno CHAR(9) NOT NULL, cno CHAR(4) NOT NULL, old_score DECIMAL(5,2), new_score DECIMAL(5,2), op_time DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TRIGGER trg_score_audit AFTER UPDATE ON sc FOR EACH ROW BEGIN INSERT INTO score_audit(sno, cno, old_score, new_score) VALUES (OLD.sno, OLD.cno, OLD.score, NEW.score); END;AFTER UPDATE 表示行更新完成后觸發(fā)OLD 和 NEW 分別代表更新前、更新后的行。觸發(fā)器里把舊分和新分都寫進(jìn)審計(jì)表事后想查“誰(shuí)把成績(jī)從 58 改成了 88”一條 SELECT 就查出來(lái)了。但觸發(fā)器這個(gè)東西必須克制。我在實(shí)際項(xiàng)目中見(jiàn)過(guò)不少“觸發(fā)器災(zāi)難”有人為了讓系統(tǒng)自動(dòng)同步某張表在表 A 的觸發(fā)器里更新表 B表 B 又有觸發(fā)器更新表 A結(jié)果形成循環(huán)調(diào)用數(shù)據(jù)庫(kù)直接報(bào)錯(cuò)或者死鎖。實(shí)驗(yàn)要求做一個(gè)觸發(fā)器就夠了千萬(wàn)別為了炫技做過(guò)度的級(jí)聯(lián)設(shè)計(jì)翻車率非常高。還有一點(diǎn)要注意同一張表的 AFTER UPDATE 觸發(fā)器里如果再更新同一張表MySQL 會(huì)報(bào)遞歸觸發(fā)錯(cuò)誤ERROR 1442。原因是 AFTER 階段行的最終狀態(tài)已經(jīng)確定了不允許再改動(dòng)這張表。如果確實(shí)要修改應(yīng)該用 BEFORE 觸發(fā)器直接改 NEW 字段或者把邏輯挪到存儲(chǔ)過(guò)程里做。5. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄5.1 中文亂碼字符集問(wèn)題亂碼是實(shí)驗(yàn)四里出現(xiàn)頻率最高的問(wèn)題沒(méi)有之一尤其在一開始建庫(kù)的時(shí)候就沒(méi)管字符集的情況下。亂碼的本質(zhì)是“寫入用的編碼”和“讀取用的編碼”不一致。我用中文“實(shí)驗(yàn)”兩個(gè)字舉例如果服務(wù)器按 utf8mb4 存客戶端卻按 GBK 解讀每個(gè)中文字符的字節(jié)序列拆開再拼起來(lái)就變成了完全不通的字符。排查步驟很簡(jiǎn)單。第一步看建庫(kù)語(yǔ)句有沒(méi)有指定字符集沒(méi)有的話執(zhí)行下面的命令看當(dāng)前是什么SHOW VARIABLES LIKE character_set_%;第二步看客戶端連接設(shè)置DBeaver 或 Navicat 里連接配置都有字符集選項(xiàng)統(tǒng)一選 utf8mb4。第三步看表的字符集SHOW TABLE STATUS LIKE student;能看到默認(rèn)字符集。三處一致亂碼就消失了。我見(jiàn)過(guò)很多“查了很多方法都沒(méi)用”的案例最后都是因?yàn)檫B接串里沒(méi)指定 characterEncodingutf8卡了半天才解決。5.2 觸發(fā)器遞歸和死鎖觸發(fā)器相關(guān)的報(bào)錯(cuò)里ERROR 1442 是最典型的一種。場(chǎng)景通常是同學(xué)想“成績(jī)更新后順手把總分表也更新了”于是在 sc 表的 AFTER UPDATE 觸發(fā)器里寫了 UPDATE sc 的語(yǔ)句結(jié)果直接報(bào)錯(cuò)。原因前面說(shuō)過(guò)AFTER 階段不能再改這張表本身。死鎖則是并發(fā)場(chǎng)景的高發(fā)問(wèn)題。最常見(jiàn)的死鎖原因是兩個(gè)事務(wù)以不同順序加鎖事務(wù) A 先鎖成績(jī)表再鎖課程表事務(wù) B 先鎖課程表再鎖成績(jī)表雙方各拿一把鎖等對(duì)方釋放誰(shuí)也等不到數(shù)據(jù)庫(kù)檢測(cè)到后主動(dòng)把其中一個(gè)事務(wù)回滾釋放資源。排查死鎖有一個(gè)萬(wàn)能命令SHOW ENGINE INNODB STATUS;輸出里找到 LATEST DETECTED DEADLOCK 段落能看到兩個(gè)事務(wù)各自持有哪些鎖、在等待哪個(gè)鎖據(jù)此就能調(diào)整加鎖順序。生產(chǎn)中避免死鎖的核心原則就是“所有事務(wù)按照相同的順序訪問(wèn)表和行”這個(gè)原則做實(shí)驗(yàn)的時(shí)候同樣適用。5.3 索引失靈的幾類典型場(chǎng)景很多同學(xué)跑完對(duì)比實(shí)驗(yàn)發(fā)現(xiàn)“建了索引和沒(méi)建一樣慢”第一反應(yīng)是數(shù)據(jù)庫(kù)有問(wèn)題其實(shí)十有八九是查詢寫法把索引廢了。最常見(jiàn)的幾類對(duì)索引列套函數(shù)比如 YEAR(create_time) 2023前面已經(jīng)說(shuō)過(guò)隱式類型轉(zhuǎn)換比如索引列是 VARCHAR條件里寫 WHERE sno 20230001沒(méi)加引號(hào)數(shù)據(jù)庫(kù)會(huì)先把列轉(zhuǎn)成數(shù)值再比較索引同樣失效前導(dǎo)模糊查詢LIKE %張三% 無(wú)法利用索引因?yàn)樗饕龢涫前辞熬Y組織的而 LIKE 張三% 可以在索引列上用 OR 連接了兩個(gè)非索引條件優(yōu)化器權(quán)衡后可能直接放棄索引。這些場(chǎng)景每一條都可以在實(shí)驗(yàn)里做個(gè)小驗(yàn)證建索引 → 用失效寫法跑 EXPLAIN → 看 key 列變?yōu)?NULL → 改用正確寫法 → 看 key 列恢復(fù)。把這組對(duì)比寫進(jìn)報(bào)告你整篇實(shí)驗(yàn)報(bào)告的專業(yè)程度立刻上一個(gè)臺(tái)階。5.4 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因解決辦法插入中文數(shù)據(jù)后顯示亂碼庫(kù)表字符集或客戶端連接編碼不一致統(tǒng)一使用 utf8mb4檢查連接配置存儲(chǔ)過(guò)程 CALL 報(bào)語(yǔ)法錯(cuò)誤未用 DELIMITER 修改分隔符將分隔符臨時(shí)改為 // 再創(chuàng)建事務(wù)執(zhí)行一半報(bào)錯(cuò)后數(shù)據(jù)沒(méi)變?nèi)碑惓L幚砥魑椿貪L聲明 EXIT HANDLER FOR SQLEXCEPTION觸發(fā)器執(zhí)行報(bào) ERROR 1442AFTER 觸發(fā)器內(nèi)更新了同一張表改為 BEFORE 改 NEW或把邏輯搬到存儲(chǔ)過(guò)程建了索引 EXPLAIN 仍是全表掃描對(duì)索引列做了函數(shù)運(yùn)算或類型轉(zhuǎn)換改寫為范圍條件或統(tǒng)一類型再比較兩個(gè)會(huì)話互相等鎖超時(shí)加鎖順序不一致統(tǒng)一事務(wù)內(nèi)的表訪問(wèn)順序視圖查出來(lái)的數(shù)據(jù)少了誤用了 INNER JOIN 導(dǎo)致無(wú)選課記錄被丟改用 LEFT JOIN 保留主表全量6. 實(shí)驗(yàn)報(bào)告怎么寫才能拿高分6.1 驗(yàn)收時(shí)老師到底在看什么實(shí)驗(yàn)四的驗(yàn)收和前面幾次有很大區(qū)別前面可能看結(jié)果有沒(méi)有跑出來(lái)到實(shí)驗(yàn)四更看重的是一句話“你能不能講清楚為什么”。我自己參與過(guò)幾次驗(yàn)收老師常問(wèn)的問(wèn)題大致就這幾類第一你這個(gè)視圖解決的是什么問(wèn)題它和直接寫長(zhǎng) SQL 有什么區(qū)別第二你的索引為什么選這幾個(gè)字段建EXPLAIN 給你什么信息第三存儲(chǔ)過(guò)程里為什么要用事務(wù)沒(méi)有事務(wù)會(huì)怎樣第四觸發(fā)器為什么不用存儲(chǔ)過(guò)程替代兩者的邊界在哪。這些問(wèn)題全部指向“理解”而不是“代碼能跑”。所以準(zhǔn)備驗(yàn)收的時(shí)候別背代碼背邏輯。把每個(gè)知識(shí)點(diǎn)對(duì)應(yīng)的業(yè)務(wù)場(chǎng)景、為什么選這個(gè)手段、效果怎么驗(yàn)證這三件事理順老師問(wèn)什么你都能從場(chǎng)景出發(fā)講清楚。6.2 報(bào)告結(jié)構(gòu)與加分寫法報(bào)告結(jié)構(gòu)我建議按這個(gè)順序組織實(shí)驗(yàn)?zāi)康?→ 實(shí)驗(yàn)環(huán)境 → 需求與整體設(shè)計(jì) → 表結(jié)構(gòu)和數(shù)據(jù)說(shuō)明 → 各知識(shí)點(diǎn)實(shí)現(xiàn)過(guò)程 → 對(duì)比實(shí)驗(yàn)與結(jié)果分析 → 遇到的問(wèn)題與解決 → 實(shí)驗(yàn)心得。前兩部分控制在半頁(yè)以內(nèi)別寫廢話。需求與整體設(shè)計(jì)部分把“為什么選成績(jī)管理場(chǎng)景、五個(gè)知識(shí)點(diǎn)怎么串起來(lái)”講明白這部分是拉開分?jǐn)?shù)的第一個(gè)機(jī)會(huì)。各知識(shí)點(diǎn)實(shí)現(xiàn)部分代碼要完整運(yùn)行結(jié)果要有截圖關(guān)鍵操作要有執(zhí)行計(jì)劃這是拉開分?jǐn)?shù)的第二個(gè)機(jī)會(huì)。對(duì)比實(shí)驗(yàn)是最大的加分項(xiàng)。無(wú)索引和有索引的查詢耗時(shí)對(duì)比、不同隔離級(jí)別下并發(fā)讀的結(jié)果對(duì)比、不帶異常處理和帶異常處理的存儲(chǔ)過(guò)程執(zhí)行對(duì)比這三組對(duì)比只要做了報(bào)告的分析深度立刻和別人的“代碼堆砌”拉開距離。我自己??吹揭粋€(gè)有意思的現(xiàn)象同樣兩個(gè)知識(shí)點(diǎn)都完成了的同學(xué)寫對(duì)比實(shí)驗(yàn)的人普遍比只貼代碼的人分?jǐn)?shù)高一截。還有一個(gè)細(xì)節(jié)報(bào)告里的每個(gè)截圖都要配一兩句解釋說(shuō)明“從這張圖能看到什么、結(jié)果驗(yàn)證了什么”。只貼圖不解釋等于沒(méi)貼解釋了才證明圖里的信息你真的看懂了。寫在最后這套實(shí)驗(yàn)做完我最大的感受是它把數(shù)據(jù)庫(kù)從“存數(shù)據(jù)的地方”變成了“幫你把數(shù)據(jù)管好的工具”。以前寫一條 UPDATE 我從不考慮后果現(xiàn)在看到任何對(duì)數(shù)據(jù)的修改腦子里會(huì)自動(dòng)彈出三個(gè)問(wèn)題要不要包事務(wù)、要不要留審計(jì)、要不要控制并發(fā)。這個(gè)思維習(xí)慣比記住那些 SQL 語(yǔ)法值錢得多。最后分享一個(gè)小技巧實(shí)驗(yàn)做完之后把全部腳本從頭到尾重新執(zhí)行一遍完全模擬助教驗(yàn)收現(xiàn)場(chǎng)。這一步能提前暴露九成以上的意外問(wèn)題——視圖建錯(cuò)順序、觸發(fā)器重復(fù)創(chuàng)建、樣本數(shù)據(jù)沒(méi)清理干凈全是這種“平時(shí)感覺(jué)沒(méi)事、驗(yàn)收突然爆炸”的隱藏雷。在宿舍里先爆掉總比在老師面前爆掉體面這個(gè)道理做多了實(shí)驗(yàn)自然就懂了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
偷窥自拍亚洲色图| 国产小视频91| 久9热| 久久久久ab| 精品人妻中文字幕高清| 国产成人一级av88| 国产欧洲精品亚洲午夜拍精品| 久久亚洲AV无码白度| 亚洲91极品| 亚洲欧洲激情卡通另类文学四射小说网站 | 亚洲免费97免费| 中文字幕一区二区在线日韩精品| 亚洲精品国产拍免费91在线| 夜色五月天| 九九综合九九综合| 大香蕉日韩| 91爱综合| 亚洲午夜福利在线影院| 97chaopenrihan| 99无码视频| 人人妻人人色一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 婷婷中文字幕| 岛国黄片网站| 亚洲欧美另类图片| 狠色婷婷久久一区二区三区_| 中文字幕日韩人妻视频一区二区三区 | 欲香欲色天天天综合和网| 久久毛卡| 国产色产精品在线观看| 91bbbbbb| 精品人妻一区二区三区不卡断| 77777亚洲蜜臀精品久久综合蜜臀| 久久久成人国产精品无码| 欧美少妇高潮久久91| 免费看日本操逼视频| 91骚熟女| 试看60秒 爽| 加勒比综合88| 高清无码人妻久久久一区二区三区aⅴ| 神马午夜久久久| 精品v日韩欧美国产| 草草草草视频| 五月婷亚洲精品天堂| 性性久久| 97视频在线免费播放| 中文字幕 人妻不满 在线视频| A一区片| chaopen97久久| 丝袜喷水在线| 人人爱人人操人人性| 乱伦图av| 午夜一区| 欧美狠狠弄| 自拍偷拍草一草| 国产日本顶级一区二区三区| 激情久久久| 久久精品国产精品一区 | 成人黄页| 欧美亚洲尤物久久| 中日韩欧美精品无码AⅤ一区二区| 秋霞成人做爱| …亚洲黄色厕厕女女在线播…| 另类视频在线| 婷婷丁香五月天综合东京热| 亚洲性少妇| 91精品久久综合熟女| 91强在线播放| 国产精品电影大全| 高树玛利亚无码流出| 国产精品一区人妻精品阁在线| 被男人吃奶很爽的毛片| 日本高清_区二区三区| a亚洲欧美色欲| 欧美日韩制服| 伊人五月天激情| 丁香五月天激情| www老逼91| 夜夜狼人妻| 性色avv| 丰满精品人妻少妇久久字幕| 久久久久久久唑| 成在线人在线观看视频| 日逼视频日本| 久久久久亚洲?V片无码V| 五月激情在线| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 国精品一区二区三| 久久久久久99999国产精品| 欧美性生活男人的天堂| 91欧美| 九九九九欧美| 少妇久久| 涩爱AV在线| AV天堂因数| 丰满少妇乱子伦精品无| 91欧美长吊| 天天肏视频| 国产亚洲美日韩Aⅴ中文字幕无码成人| 亚洲精品丝袜-不卡成人免费…… 久久久久成人蜜桃精品 | 蜜桃AV天堂| 人人看人人插| 影音综合网| 伊人欧美大香蕉视频| 97中文字幕九区| 欧 美 自 拍 偷 拍| 久久手机好看网站| 国产品精品自在在线午夜免费| 亚洲国产成人精品无码专区| 久久精品女同亚洲女同13| 久久男人精品| 熟妇熟女视频一区二区三区| 中文字幕免费在线观看| 永久免费av无码网站国产app| 国产一级片| 人妻激情在线视频| 亚洲导航深夜福利| 加勒比性爱成人在线| 国产sv美女内射| av无码精品久久久久| 久9久| 久久东京热成人| 亚洲精品aa久久伊人| 久久香蕉国产传媒一区剧情天美| 亚洲人妻久久| 三级片大波波| 日韩探花精品在线视频| 久久精品视频一区三区小泽玛利亚| 91麻豆天美国产欧美高潮| 亚洲精品影视老司机| 级品肉射| 嫩草影院在线观看精品| 熟女久久久| 青娱乐淫乱1314| 久久婷婷伊人| 欧美探花网| 国产精品第二页| 第四色奇米影视777| 啊操爽品善一区二区三区| 久久久99免费| www.91视频网| 久久久久久九九九九九九| 亚欧性爱在线无码| 精品久久久久久中文字幕视频免费| 久久极品一区二区| 人妻无一区二区三区| 午夜福利区| 免费一级视频特黄色大片| 91色夜| 97人妻色| 一类av片在线看| 欧美97se| 天天弄欧美| 999亚洲国产视频| 91亚洲黄色网| 欧亚久久偷拍视频| 国产操伦| 无码不卡八戒| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | A片大香蕉在线| 中文久久96| 91在线页| 99久久这里只有精品| 抽插一区二区视频| 欧美性综合| 夜夜嗨一区二区| 在线a v| 欧美写真视频一区| 中文字幕一区二区三区四五区| 91亚洲人电影| 婷婷五月天激情网| 在线可观看的黄色网址| 亚洲一区二区三区中文字幕| 九九热久久99精品re| 欧美在线大香999| 91最新综合| 五月丁香婷婷色| 中文字幕精品一区二| 久草电影网| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 国产欧美伊人| 亚洲激情在线| 综合激情婷婷| 激情综合网亚洲| 色天堂在线观看| 久久精品亚洲婷婷| 亚洲欧美精品一区天堂久久 | 久久久一级| 国产熟女完整版中字| 久久久久亚洲Av无码专区老牛影视| 91高潮喷水美女| 91久久午夜无码鲁丝片久久人妻| 蜜色网色哟哟| 日韩啪啪啪啪啪| 国产女人91精品嗷嗷嗷嗷| 国产隔壁老王影院在线| 国产嫩草精品A88AV| 亚洲人久久久网| 另类av天堂| 91人妻丝袜无码| 久久久精品国产亚洲伊人| 一级久久久久久久久久久| 人人操人人操人人人操| 69av一区二区三区| 永久电影三级在线观看| 久夜视频| 69天堂| 九九九九九精品十六| 青娱乐 成人娱乐在线| 丁香五月天堂网| 99精品久久| 久久久久婷婷| 亚洲男人天堂Av| 大香蕉宗合网在线| 欧美激情 日韩精品| 久久精品视频久久久| 国产精品久久久亚洲一区| 狠狠操天天干| 日本在线不卡123| 91啪9色| 亚洲综合网图| 精品999日本| 免费97视频| 加勒比综合a∨| 超碰欧美97资源| 91jk色拍| 欧美天堂亚洲电影院一区在线播放| 少妇极品熟妇人妻无码| 色婷婷一区二区三区久久午夜成人不| 亚洲av资源| 秋霞Av理论一级在线| 日韩成人私密一级精品av| 日韩欧无码一区二区三区免费不卡 | 九九探花视频在线观看| 欧美视频边做饭边橾| 五月婷婷深深爱| 情色日播放AV| 久日综合网| 蜜臀网 一区| 人人搞人人插人人操| 不卡中文字幕aⅴ在线| 操逼1区| 91成人精品在线播放| 五月天色色网站| 亚洲男人天堂2019| 男人天堂综合| 人人操人人摸人人骑| 日韩无码视频黄色| 国内精品久久久久影院亚洲| 91AV老熟女视频| 涩涩久久精品| 少妇一区二区三区| 日本 欧美 国产一区| 97在线国产精品| 亚欧美色图| 天天射天天操天天干天天吃2018 | 日韩影片中文字幕一区二区三区| 五十路熟女,国产欧美精品区一区二区三区| 999国产精品999久久久久久| 欧美一二三级精品在线| 亚洲激情久久| 少妇三p| a天堂视频| 一区黄二区黄| 色妺妺AⅤ| 久草电影网| 91av熟女人妻| 亚洲国产剧情少妇激情| 欧美成人精品欧美一级乱黄一区二… | 日韩国产成人自拍视频| 欧美 日韩 国产传媒| 久久亚洲熟妇在线视频| 欧美亚洲激情| 懂色综合久久久| 另类老少妇| 狠狠色伊人亚洲综合网站色| 欧美日韩m| nuu12国产麻豆精品| 国产精品久久久久久久无码AV| 亚洲操人| 97伦乱| 综合欧美激情网| 亚91亚洲网| 国产一二三在线视频五十路| 韩国一级婬片A片AAAAA| 天美传媒av一区二区| 精品无码一区二区三区| 91N欧美| 亚洲无码一区成人免费午夜| 日本精品不卡一二三区| 亚洲人综合| 国产亚洲女v在线观看| 一区=区三区视频| 成人精品无码| 三级片大波波| 色在线综合| 大香蕉国产中文自拍| 伊人热综合| 97综合在线观看| 日韩肏逼视频| 国产视频一区二区在线观看| 亚洲码在线中文在线观看| 婷婷五月天综合网| 无码人妻精品酒店| 高树玛利亚无码流出| 亚洲AV无码秘 蜜桃臀国精产品| 清柠毛片| 亚欧高清| 日日干夜夜欢| 亚洲最大无码中文字幕网站 | wwwcaobibi| 大香交| 色色色网站| 亚洲色阁| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 中精品一区二区三区| 欧美日韩国产高清在线一二三区 | 手机在线观看不卡无码av| 狠狠干妹子| 97久久视频| 亚洲一区二区三区春色| 亚洲 欧美 另类 日韩 人妻一区| 黄页视频网站野外| 国产精品农村妇女| 日本五十路在线| 97摸视频| 啪啪啪东京| 日本高清一本二本免费不卡| 亚洲综合网图| 九九色色| 波多野结衣被操50分钟免费视频| 精品人妻久久久久一区二区三区| 亚洲中文制服诱惑| 国产第25页在线观看| 97在线/亚洲| 久久色激情一区二区三区| 操逼片国产| 五月天久久人妻| 骚乳在线| 国内毛片无码一级毛片| 日本高清视频xxxx| 久操免费观看| 天天影视之亚洲综合网| 黄色大片一区二区密桃丝袜| 日本午夜精品理论片A级APP发布| 色黄污美女啪啪啪免费网站| 色妇综合网| 亚洲综合情色| 97超碰色屌| 五月丁香综合| 亚洲日韩美女中文字幕乱| 亚洲色交| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 超碰欧美97| 狠狠爱夜夜干| 亚洲男人天堂视频| 国产白领连续中出在线播放| 日本不卡码黄色| 天堂种子在线www网资源| 人妻9117c| 美女久久久久久久久久久| 中文字幕伊人| 久久久禁| 九九九九九九成人| 久久综合精品一区二区三区| 夜夜爽77777| 婷婷五月天成人网| 亚洲人人操| 婷婷色中文字幕| 十八岁啪啪视频免费看| 51久久夜色精品国产麻豆| 97香蕉网| 国产精品日韩在线一区| 视频一区二区免费在线| 999久久久免费精品国产牛牛| 亚洲精品国产拍免费91在线| 99在线精品观看视频中文| 玖玖草久草99蜜月一区二区三区| 久久久久大香青草精品综合| 久久久久久久久久黄色网| 色呦呦、国产精品| 宅男91视频在线播放| 欧日韩不卡视.频| 污啪啪啪视频| 人妻天天操天天爽视频免费| 91久久国产综合久久| 无码免费一区二区三区啪啪| 精品久久在线区一区| 91蜜臀在线久久久久| 6080yy午夜理论三级一区二区三区无码| 亚洲精品a人片在线观看视| 日本三级网页| 久久婷婷五月天| 综合网欧美在线| 亚州色交| 色天使大香蕉| 综合情欲网| 日韩91网| 国产区日韩区在线观看| 国产精品一区二区亚洲人成毛片| 亚洲激情综合另类男同| 亚洲日韩美国人妻| 日本午夜福利影院| 日韩三级久久久| 久久欧洲| 91网站18+| 美女诱惑久久| 亚洲图片色图欧美另类| 柠檬AV导航| 久久久久性熟视频| 97在线无精品| 任我爽在线视频免费观看| 激情网色| 家庭乱伦性爱av| 色色色色电影网| 秋霞 色色| 加勒比大香蕉视频在线| 亚洲视频,小说| 成人AV素股で擦久久| 97超碰超碰| 青春草A| 人人摸.人人色| 超碰97玖玖爱| 丰满搜索结果 -第18页- 久久高清无码 | 午夜啪| 97操碰| 亚洲综合影院| 国产成人一级av88| 思思热在线视频精品| 人人爽夜夜操| 亚洲人妻久久| 国语对白在线播放视频| 久久久艹艹艹| 国产又粗又长又大的视频| 成人精品久久久午夜福利| 国产一区二区三区影片| 麻豆久久久久久久久丝袜| 欧美综合 站| 91殴美| 日韩国产乱子伦App| 校园春色 男人天堂| 狠狠躁天天躁日日躁| 96久久久久久久| 精品中文字幕第一页| 蜜臀少妇一区二区| 日本 情色 1区2区3区| 98人妻精品一区二区色欲| 久久人人爽人人爽人人片Ⅴ| 亚洲视频一二区| 国产精品操| 97久久久| 日本天堂在线播放| blacked精品一区国产| 9热9热综合网| 国产女人视频三四五区| 五月天偷拍| 欧美性五月| 国产成年免费大片黄在线观看| 黄色污污污污污污网站| 97鸡把在线视频| 日操粉逼逼| 中文字幕女同在线| 日韩欧美成人综合在线| 有码色中文字幕在线观看| 啊啊嗯嗯好爽| 超碰在线人妻不卡| 国产精品一区二区手机看片| 116美女午夜| 亚洲久久久久| 又大又黄国产| 日韩97| 狠狠躁AV| 超碰在线观看av不卡| 国产亚洲色婷婷99精品91| 成人av性爱电影在线观看| 九九九综合精品| 久热一区二区| 中美日韩毛片| 玖玖爱免费观看视频| 国产精品视频| 男女激情黄色网址| 99精品无码| 国产精品久久久久av| 久久久999国产| 色色激情五月天| 啊啊啊啊啊好多水| 97资源欧美| 黄色片一区二区三区四区五区| 久久綜合很很很| 加勒比久久综合网高清| 啊啊啊 在线| 色久综合| 国产高清吃奶免费视频网站| 97操碰| 九色 人妻 大香蕉| 高潮的A片激情扒开一区| 在线免费试看60秒| 97爱爱爱综合| 能在线播放的国产三级| 欧美92| 日韩精品高清资源在线| 日韩国产欧美伦理在线| 中文字幕人妻丝袜乱一区三区| 久久女人一区二区三区| 一级岛国大片| 99精品无码| 日本特黄f c2| 熟女五十路一区二区三| 加勒比海人人操超碰在线| 香蕉一区二区三区在线视频| 日韩一级特黄av毛片| 日韩超碰97| 超碰538| 欧美99| 2019久久久久久久久福利| 天天日天天干天天摸天天操| 色鬼在线综合| 亚洲AV成人无码一区二区三区在线观看| 亚洲精品九九九| 色悠久久久av| 久久超碰亚洲人| 亚洲欧美经典一区二区| 草草影院最新网址| 午夜操一操| 国产蜜臀在线| 亚洲吊色| 亚洲AV乱码专区国产噜噜亚洲 | Blackedraw视频一区二区| 91熟女网| 啊啊啊啊在线播放| 欧美久久婷婷| www鬼畜国产男人的天堂| 欧亚性爱啪啪| 高潮的A片激情扒开一区| 天天综合中文字幕 91| 中文字幕诱惑制服人妻丝袜美丝袜美| 成人无码专区精品视频| 91黑丝露脚| 首页中文字幕中文字幕免费| 欧美一级特黄淫片在线观看| 69国产对白刺激| 午夜精品久久久久久久第一页按摩| 亚热日本熟女| 亚洲涩涩| 久久久专区| 色眯眯射| 亚州综合电影| 中文字幕视频2区| 婷婷四五区| 激情综合色| 成人精品在线| 婷婷五月天激情四射| 中日韩欧美精品无码AⅤ一区二区| 一级二级三级黑人无码| 欧美亚洲国产91在线| 国产性爱强奸乱伦大全| 欧美一级A一级a爱片久久| 丰满人妻-区二区三区免费看| 91网站在线播放| 啊啊啊在线看| 亚洲图片视频小说| 久九九九九九九九热| 色九色久| 丝袜足交视频| 欧美综合网| 国内毛片欧美香蕉精品| 国内精品久久人妻性色av| 精品日韩人妻视频| 日日夜夜精品| 中国一区二区亚洲人妻| 日韩性爱再线视频| 激情五月天婷婷| 五月婷婷综合网| 日韩AV电影网站| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 超碰免费人妻人人| 国产精品亚洲天堂网址| 性爱边摸边日免费AV| 成年人性爱日韩| 五月婷婷激情综合| 色妺妺在线视频| 黑人中出21连凳花野真衣| 五月天久久婷婷亚洲| 日韩精品大香蕉伊人在线| 色悠久久久av| 日韩有码专区| 亚洲精品一区二区精品| 无码免费精品高清| 中文字幕高清20页视频| 日本一天色道久久久精品视频| 亚洲天堂美臀在线| 五十路一区无码| 国产精品99精品视频网站| 国产女人操逼视频| 超碰97欧美在线| 久久一二三四五六七八九区区| 久久久久96| 国产精品 视频| 免费一级特黄特色大片在线观看看| 五月婷婷丁香中文字幕| 久久久9品一区二区三区| 9精品久久| 欧美性爱一区二区三区| .精品人妻一区二区三| av天堂手机版追回| 六月丁操逼| 日本二三四区| 日逼国产| 四虎884a| 国产精品午夜AV完会免费| 激情接吻视频久久久久久| 99久久com免费视频′| 亚洲污污网站| 日韩精品资源专区二区| 九九亚洲视频| 色香欲天天天天综合色| 日本中文字幕不卡视频| 95人妻爽爽人人做人人澡| 日本新免费二区三区| 狠狠爱大香蕉| 超碰91在线| 91路www| 日本国产亚洲一区在线观看| 色五月综合| 夜夜爽夜夜摸夜夜操免费视频| 熟女乱3伦999| 久久色人体| 性欧美91| 人人色人人操在线| 国产一区二区精品在线视频| 最新av网站在线观看| 亚洲精品一区二区三区新线路| 97久久综合网| 日本123区操B视频| 精彩久久中文| 国产精品免费日韩| 99国产精品久久久在线播放| 中日韩一区二区三区欧美| 天天插天天射| 在线欧美亚洲| 天天日日夜夜| 久久啊啊| 嗯嗯嗯嗯啊啊啊好紧好大| 综合五月天| 婷婷综合| 啊啊啊好想要| 亚洲中文人妻色| a级免费在线观看| 伊人影院在线理论播放| 欧美裸体美女日麻屄| 95精品在线| 亚洲精品久久久久毛片A片拉屎 | 亚洲一区二区三区播放在线| 91草草草| 欧美视频一区二区在线| 锕锕好爽 死我在线观看| 亚洲 国产 精品一区| 蜜乳av一区二区三区| 在线无码操| 97人人夜| 日韩美女久久一区二区三区| 9国产超碰| 成人在线永久| 99日精品欧美国产| 亚州男人天堂| 人妻人人澡人人爽人人| 综合免费无码中文| 人妻熟女一区二区在线视频| 久久久久成人蜜桃精品| 呦呦影院| 久久久久久裸体| 欧美日韩成人在线| 亚洲啪啪视频免费| 偷拍片久久| 99色视频| 性色av大全| 色欲久久99精品久久| 天天添天天干电影| 影音先锋少妇| 色欧美在线| 久久九九一区二区三区成人| 国产真实野战在线视频| 黄页av| surenchaopeng| 久热九九| 26uuu性物| 99re视频这里只有精品| 91精品成人| 强免费黄色网址| 一区二区三区免费视频入口| 欧美第一页| 蜜臀精品1区2区| 欧美日韩性爱操大逼| 亚洲AV无码乱码| 少妇99| 久久久噜噜噜久久久| AA特级绝黄| 东京热男人的天堂| 色偷偷综合91久久噜噜| 亚洲狼狼干综合1| 五月色网| 成人三一级一片aaa| 国产精品久久久| 视频在线97| 神马午夜久久久| 国产精品交换一区二区| 久久国内| 小日子操bb在线看| 精品人妻一二三| 欧美图片校园春色| 91欧美性| 久久超碰大香蕉| 嗯嗯嗯嗯啊啊啊好紧好大| 抽插无码高清一区| 老熟妇一区二区三区…| 国产综合日韩伦理| 精品久久久久久久| 亚洲精品黄码久久久久| 极品AV网站在线观看| 超碰 另类 欧美| 天天日天天插| 久久草大香蕉| 久热伊人| 久久久久9999| 超碰91在线| 蜜桃无码AV一区二区| 美國A片| 亚洲第一黄色av网站| 99e久久国产精品| 玖玖爱在线视频免费观看| 国产精品网址| 欧美劲爆第一页| 一级AAA片一区二区三区| 97jingpin| 日韩精品系列| 夜夜做夜夜爽精品视频| 屁股久久久久久久久| 日韩欧美水蜜桃人妻| 骚熟女吞| 强奸熟女一区二区三区| 夜夜 中文视频rt| 97在线观视频免费观看| 97爱b| 综合激情一一91| 精品综合久久久久久97| 夜夜夜夜爽| 久久中文字幕人妻熟av女蜜柚| 超碰97资源网亚洲| 色淫网站优优视频| 国产精品久久久久久久久久久久久久吹| 青青操日韩| 天啪| 四虎午夜影院| 国产精品亚洲高清在线| 国产精品探花视频| 一区二区娱乐网站| 九九九九九九九精品视频| 亚洲图片欧美91N| 在线视频一区二区传媒| 91AV天堂| 亚洲图片小说欧洲| 亚洲美女AV无码| 日本熟女免费視颖| 黄色片大香蕉| 欧美激情总合网| 欧美97日韩精品| 综合网少妇| 欧美激情激情xxxx欧美专区| 九九热久久99精品re| 成年人一级黄色毛片大全在线观看| 亚洲最大无码中文字幕网站| 日韩精品 资源| 99操| 熟女少妇一区二区三区| 秋霞怕怕片| 国语国产操逼伊人AV网| 日日狠狠久久偷偷色综合免费| 久久综合乱子伦国产免费| 日本好吊色视频| 自拍六区| 亚洲成人无码影院| 69精品少妇一区二区三区蜜桃| 97色诱| 亚洲色婷婷综合久久久久中文| 久久夜夜| 欧亚在线视频| 最新亚洲风情电影| 99精品九九九九九九| 在线人成亚洲视频免费观看| 日韩性爱小视频在线观看| 澳门成人网站久国产日韩| 色综合超碰超| 少妇一级无码精品| AV中文在线| 精品二999| 曰韩中文人妻视频| www.色操逼| 精品999日本| 91亚洲色图| 影音先锋国产精品| 久久久111| 中文一区二区三区影院| 亚洲第一在线视频| 日韩欧美水蜜桃人妻| 午夜操一操| 91狠狠综合久久久| 91久久久久久久| 性色av大全| 91九九九馒头| 精品视频久久| 国模少妇一区二区三区| 精品国产国产AV| 国产无码精品无码| 大胆91| 国产人妻久久精品一区二区三区| 亚洲熟女性高潮久久久| 欧美亚男人的天堂| 国产精品白丝| 精品精品精品| 亚洲黄色AV电影| 日韩一级片| 91熟女视频网| 国产色呦呦| 亚洲色图伊人网| 国产精品久久久久亚洲av | 高潮精品| 嗯嗯嗯好爽| 91制服丝袜中文字幕| 91狠狠综合久久久| 国产一区二区在线看| 丰满人妻av一区二区三区| 久久久久网站-538在线视频-欧美永久乱码 | 加勒比性爱成人在线| 999亚洲国产视频| 亚洲综合骚逼| 日韩av在线免费网站| 中文日韩欧美熟| 久久精品国产96精品亚洲拳交| 日本孕妇孕交| 国产一区二区在线电影| 国产自偷| 99性爱| 91精片| 玖玖蜜臀资源网| 91丨九色丨国产丨人妻在线| 色综和网| 牛牛aV| 国产区在线| 天天日日舔舔| 天天躁日日躁AAAAXXXX国产 | 久久五月天婷婷丁香中文字幕| 热久久国产精品视频大陆精品| 天天操天天射天天日| 啊啊啊啊啊啊啊啊要喷了| ?亚洲伊人伊成久久人综合网| 国产夫妻性生活视频| 狠狠干综合| 日韩一级性爱无码| 中出后入| 色婷婷影视| 成人精品无码| 97在线无精品| 五月天久久久| 国产精品福利资源在线尤物| a人欧美综合天堂麻豆| av在线免费一区二区| 人人妻人人色一区二区三区| 色色国产| 一级人妻性爱视频| 91熟女少妇| 一区二区三区精品黑丝白丝酒店对鸡 | 国产福利合集| 亚洲综合九| 天天干天天拍| 国产一区二区三区白丝| 中日韩久久久免费看| 97视频在线免费看| 午夜无码精品免费看性色| JuliaAnnXXX888| 久久夜夜夜夜| 五月婷丁香| 草草影院日本第一页| 成人一二三区| 综合久久99亚洲人妻中文在线| 激情色播| 精品高清一区二区三区三州| 欧美天天综合在线| 亚洲精品1区| 丝袜六区| 99日精品欧美国产| 韩国手机不卡无码三级视频| 久草精品在线| 久色99999| 观看免费区二区三区二| 天美麻花大全视频| 伊人丁香五月婷婷| 日日骚中文字幕| 日韩精彩视频| 国产中文福利| 欧美综合骚| 日韩九区| 福利伊人玖玖国产| 国产真乱mangent| 97chaopengongkai| 五月天亚洲网| 人妻人妻天天碰| 天天干天天日天天射黄色大片| 成人日本视频人妻在线| 久久无码成人| 丁香五六月啪啪| 亚洲色图图片| 人人妻人人爽一区二区三区| 精品综合久久久久久97| 性爱欧美五月| 久久超碰97中文字幕| 国产av高清版| 99精品在线| 亚洲啪啪性视频| 欧美性巨大╳╳╳╳╳高跟鞋| 乱性AV| 呦呦一区| 麻豆久久一区二区三区| 78超碰| 9Ⅰ超碰| 精品1区2区3区| 老熟女综合网 | 密桃99999| 日本三级黄页| 99热精品在线| 调教熟妇 久久久久久| 99在线精品观看99| 婷婷啪啪| www.99色| 99免费在线视频| 亚洲综合色网| 国产农村妇女一区二区| 亚洲色天堂日韩中| 粉嫩国产精品久久粉嫩| 日韩人妻精品久久久久| 69精品少妇一区二区三区蜜桃| 九九九九久久久| 超碰超碰欧美| 久久伊人网视频一区二区三区| 亚洲aw毛茸茸在线| 99re在线观看| 久偷拍欧美日韩三区| 韩日自拍| 欧美亚洲首页| 曰韩中文人妻视频| 日本1区2区不卡视频| 无码人妻精品一区二区中文| 无码高清国产AV| 成人性爱全视频观看| 欧美精品999| 91黑丝露脚| 蜜臀亚洲中文| 中文字幕在线2| 偷窥自拍亚洲| 97爱| 岛国毛片手机在线观看| 国产精品99久久久www| 欧美成人精品A片免费一区99| 综合影院亚洲| 美美91成人国产精品欧美精品久久久久久久| 加勒比日本在线| 久久久91福利姬| 久久岛国| 国产AAAAAABBBBB| 极品美女福利在线观看| 天天干天天做| 欧洲乱码视频| 蜜臀中文无码午夜| 久久永久无码人妻视频| 黄色电影观看久久9| 九九综合色| 大吊色| 国内外激情在线| 操一操摸一摸| 人人妻人人狠人人| 97中文超碰| 丝袜狠狠草尤物 91| 97超碰欧美精品| 操逼大黄片| 九九av| 超碰这里只有精品| 91亚洲图片| 99re公开精品免费视频| AV 少妇 人妻 偷拍| 丝袜视频一区二区在线播放国产中文| 亚欧美无遮挡| 一级二级三级黑人无码| 日本久久网| 亚州高清色综合| 久久六六| 91久久久久久久久18| 69人妻精品丰满熟女区| 午夜男人的天堂| 日本天天操| 蜜伊人色综合97| 伊人网高清| 日韩AV一起草| 亚洲色91C| 青娱乐休闲视频在线观看| 日本日皮视频逼| 99re99视频在线免费观看| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美操逼视频二区| 中文字幕av色| 狠操91,com| 国产综合色精品在线观看| 韩国一级AAA| 综精品久久久aaaa| 欧姜老司机| 激情综合网五月婷婷五月天| 婷婷五月天久久精品视频一区二区三区| 精品国产乱码久久久久久久| 偷拍自拍在线视频观看| 熟女自慰久久久| 色综合加勒比| 婷婷尹人大香蕉免费| 欧美色吧综合| 九色在线熟女国产黑人| 青青草国产盗摄一二三区| 精品人妻中文字幕高清| 欧美综合站| 操久久久久| 99热自拍| 清纯唯美综合| 国产精品秘 福利姬在线观看| 国产一区二区精品在线视频| 成人av影院在线观看| 91撸色网 玖玖网 欧美| 国产精品精品系列在线观看| 欧美图片偷拍| 欧美综合第一页| 口爆综合网| 美女久久久| 欧美三级一级| 国产午夜精品理论片a大结局| 美女诱惑1区2区| 久久91| 天美AV片| 激情五月天中文字幕色| 91在线美女| 国产无码精品久久久久久| 99久久com免费视频′| 国产一级高清免费观看| 高清不卡国产| 老司机深夜18禁污污网站| 丰满搜索结果 -第18页- 久久高清无码 | 亚洲久草AV色图| 亚洲各类熟们中文字幕| 亚洲情色 自拍| 综合熟女| 日韩免费中文字幕视频| 磁力99AV| 欧美人妻一区| 91色插| 亚洲天堂另类小说男人| 天天干天天燥| 国内外毛片在线观看| 五月天综合| 亚洲影院365| 亚洲精品一区二区免费在线观看| 国产 无码 一区二区| 国产搭汕a级片| 黑丝91视频| 乱伦Av网| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 国产精品爱欲| 日韩特一级久久| 久久精品人体AV| 久久这里只精品免费福利| 欧美91久久久久| www.夜夜| 一级@啪啪视频| 伊人性在线视频| 德国一二三不卡| 欧亚性爱啪啪| 91老女人| 日韩中文9| 丝袜AV一二三区| 精品中文字幕一区二区| 精品人妻一区二区三区不卡断 | 欧美色图色综合| 999综合色| 美女刺激久久国产欧美| 天天懆天天日| 外国免费性情大片| 婷婷15月天青娱乐| 伊人网av| 成人八戒网站| 少妇综合| 欧洲色综合| 久久久久久中文版| 欧洲色色| 五月天丁香婷婷综合网站| 亚洲97综| 国产自偷| 欧美青青视频| 男人下部插入女人下部| 日韩操人| 欧美久久人人网| 久久的免费性爱视频| 91 亚欧| 九九九九免费高| 中文字幕一区二区三区人妻少妇在线| 天堂中文日本在线观看| 免费视频在线一区二区不卡| 日本一线产区和二线产区伦理片| 伊人伊人LD| 超碰色中文| 久久乐| 插欧洲美女欧美精品| 26uuu性| 中文字幕精品免费一区二区| 91熟女丨91老女人| 亚洲se电影| 超碰1997| 欧美日韩一干二干| 色呦呦、国产精品| 天天干少妇| 任你爽视频| 免费看久久久性性| 欧美色性爱| 日韩国产欧美伦理在线| 思思热在线视频免费| 亚洲天堂男人天堂| 亚洲精品91| 久久久久成人网| 我要色综合网站| 九九这里只有精品| 久久精品一区二区三区蜜桃臀| 欧日韩在线观看| 人人妻人人色| 欧美人妻色| 2019AV天堂| 男人的天堂欧美| 国产天天看| 久久一二三四不卡| 欧美白嫩女HD| 亚洲色香| 欧美综合 站| 97超碰人操| 久久骚| 黄站在线免费观看| 亚洲激情深爱文学小说网站| 啊啊啊啊啊舒服| 97日韩欧美亚洲| 久久久久久久| 丰满人妻一区二区三区| 久久神马| 69av一区二区三区| 日韩精品国产一区二区| 色欲无码人妻日韩欧美精品| 久操网无码在线| 中文字幕精品资源在线| 综合久久婷婷| 97爱免费插| 国产农村妇女精品一二区|