亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

SQL數(shù)據(jù)過濾核心技巧:從WHERE條件到索引優(yōu)化與安全實(shí)踐

SQL數(shù)據(jù)過濾核心技巧:從WHERE條件到索引優(yōu)化與安全實(shí)踐 用戶數(shù)據(jù)中出現(xiàn)了學(xué)生成績相關(guān)的數(shù)據(jù)庫設(shè)計(jì)正好可以結(jié)合 SQL 數(shù)據(jù)過濾的實(shí)操場景來講解。這里我先從最常用的成績單查詢場景出發(fā)講清楚過濾條件的組合與去重邏輯再看復(fù)雜查詢的優(yōu)化技巧。希望這篇的思路和示例代碼能直接幫到你。1. 數(shù)據(jù)過濾的底層邏輯先定位再輸出1.1 過濾的本質(zhì)是行級篩選數(shù)據(jù)過濾說白了就是在一張“滿是數(shù)據(jù)的大表格”里按照你給出的條件一行一行地把不需要的記錄擋在外面只保留符合條件的行。我習(xí)慣把它想象成一個漏斗漏斗口寬進(jìn)來的數(shù)據(jù)多漏斗頸細(xì)篩掉的數(shù)據(jù)多。WHERE 子句就是那個漏斗頸。這個“逐行篩選”的過程是理解 SQL 過濾的第一步。很多新手會把 WHERE 和 SELECT 的順序搞混認(rèn)為先寫 SELECT 就先生效其實(shí)數(shù)據(jù)庫執(zhí)行的時候是先從磁盤或內(nèi)存里把整張表的記錄拿出來然后用 FROM 后面的表按 WHERE 條件做逐行判斷符合條件的才進(jìn)入下一步。等到 SELECT 真正輸出的時候數(shù)據(jù)已經(jīng)是“篩選后剩下的部分”了。我剛?cè)胄械臅r候做過一張學(xué)生成績表表里有 3000 多條記錄每天要按班級、科目、分?jǐn)?shù)段導(dǎo)出一份成績單。當(dāng)時我圖的簡單直接用 SELECT 把所有列都輸出再放到 Excel 里手工篩選。后來有一次數(shù)據(jù)量突然翻到 3 萬條Excel 直接卡死逼著我老老實(shí)實(shí)學(xué) WHERE?,F(xiàn)在回頭看數(shù)據(jù)過濾這個技能越早主動掌握越好因?yàn)樗撬?SQL 查詢的骨架。1.2 SQL 執(zhí)行順序決定了你能在 WHERE 里干什么SQL 語句表面上是從 SELECT 開始寫的但數(shù)據(jù)庫的引擎執(zhí)行順序并不是按你書寫的順序來跑的。對于一條最常見的查詢來說實(shí)際的邏輯順序大致是FROM確定要從哪張表取數(shù)WHERE對 FROM 取到的每一行記錄做條件判斷GROUP BY按字段分組HAVING對分組后的結(jié)果做二次過濾SELECT挑選輸出哪些列ORDER BY排序LIMIT / TOP控制返回行數(shù)這個順序看起來枯燥但我建議你把它當(dāng)成一個“心法”來背。因?yàn)樗苯記Q定了一個新手最容易踩的坑WHERE 子句里不能用 SELECT 里定義的列別名。比如SELECT stu_name, score AS s FROM score WHERE s 60;在 MySQL、PostgreSQL、SQL Server 里這條語句通常都會報錯“找不到列 s”因?yàn)閳?zhí)行 WHERE 的時候SELECT 還沒開始處理輸出列AS s 還沒有誕生。遇到這種情況要么在 WHERE 里直接寫原始列名SELECT stu_name, score AS s FROM score WHERE score 60;要么套一層子查詢SELECT t.stu_name, t.s FROM ( SELECT stu_name, score AS s FROM score ) t WHERE t.s 60;很多人會覺得套子查詢非常啰嗦但當(dāng)你遇到復(fù)雜報表的時候這反而是最干凈的寫法因?yàn)閮?nèi)層查出來的臨時結(jié)果集本身就是一張“新的表”外層可以隨意過濾它。同樣的邏輯在 JOIN 里也成立。如果在 LEFT JOIN 之后用 WHERE 去過濾右表的字段會發(fā)現(xiàn) LEFT JOIN 被“改成”了 INNER JOIN。因?yàn)?LEFT JOIN 會把右表沒有匹配的行保留下來這些行的右表字段全是 NULL而你用 WHERE 一過濾NULL 不滿足條件就又被刪掉了。這里我后續(xù)在講 NULL 時還會展開但先把這個“執(zhí)行順序決定行為”的意識建立起來。2. 條件表達(dá)式的編排從單條件到多條件組合2.1 比較運(yùn)算符與“不等于”的寫法差異過濾條件最基礎(chǔ)的就是比較運(yùn)算。、、、、 這五個符號幾乎沒有歧義誰都能看懂。真正容易出問題的是“不等于”SQL 里有兩個寫法 和 !。 是 SQL 標(biāo)準(zhǔn)的寫法幾乎在所有數(shù)據(jù)庫里都能用! 是編程語言風(fēng)格的寫法MySQL 里能用SQL Server 里也能用PostgreSQL 里也能用但有些老牌的數(shù)據(jù)庫或某些兼容模式下就不支持。我自己寫的時候一律用 不是因?yàn)樗喔呒壖兇馐菫榱藴p少換數(shù)據(jù)庫時的意外報錯。還得提醒一個容易忽略的值類型問題比較運(yùn)算符要求兩邊的類型能互相換算。如果拿字符串類型跟數(shù)值比較數(shù)據(jù)庫通常會做隱式轉(zhuǎn)換。比如SELECT * FROM score WHERE score 60;score 是數(shù)值列60 是字符串MySQL 會先把 60 轉(zhuǎn)成數(shù)值 60再把 score 列轉(zhuǎn)成數(shù)值比較??雌饋聿挥绊懡Y(jié)果但是一旦 score 列里面的值比較復(fù)雜或者字段類型本身是 VARCHAR隱式轉(zhuǎn)換就可能造成無法命中索引這個我們在后面性能部分會重點(diǎn)說。2.2 NULL 的坑三值邏輯NULL 是 SQL 里一個非常特殊的存在它不表示 0也不表示空字符串它表示“不知道”或“不存在”。這就引出了一個叫“三值邏輯”的概念在 SQL 里比較運(yùn)算的結(jié)果除了 TRUE 和 FALSE還有 UNKNOWN。所有對 NULL 做普通比較的表達(dá)式返回的都是 UNKNOWN被 WHERE 過濾掉。所以SELECT * FROM score WHERE score NULL;這條語句永遠(yuǎn)一條記錄都查不出來。哪怕 score 列里真的有 NULL 值也不會被匹配。正確寫法是SELECT * FROM score WHERE score IS NULL;同理如果要篩選“分?jǐn)?shù)不為空”的記錄SELECT * FROM score WHERE score IS NOT NULL;我見過很多新手在這里反復(fù)踩坑最典型的就是把 IS NULL 直接改成 NULL然后排查半天也找不到原因。這里有一個日常類比NULL 就像你并不知道一個人的聯(lián)系方式你在通訊錄里找“聯(lián)系方式等于空的人”系統(tǒng)并不知道該怎么匹配“空”不是一個具體的聯(lián)系人它只能靠“查一下聯(lián)系人這一欄是否為空”這個特殊動作來確定。除此之外NULL 還有一個算術(shù)行為任何數(shù)值和 NULL 做加減乘除結(jié)果都是 NULL不是原值。比如想要算總分時SELECT score_1 score_2 score_3 AS total_score FROM score;只要 score_2 是 NULL整個 total_score 就是 NULL。遇到這種情況要么用 COALESCE 函數(shù)把 NULL 轉(zhuǎn)成 0要么用 IS NULL 先做條件判斷把缺失的字段單獨(dú)挑出來處理。這個細(xì)節(jié)在做成績匯總時特別重要否則你會莫名其妙地發(fā)現(xiàn)“明明成績都不低總分卻不出數(shù)”。2.3 AND / OR 優(yōu)先級與括號多條件組合時AND 和 OR 的優(yōu)先級是個老掉牙但永遠(yuǎn)有人踩的坑。AND 的優(yōu)先級高于 OR也就是數(shù)據(jù)庫先處理 AND再處理 OR。這跟數(shù)學(xué)里的“先乘除后加減”邏輯很像。舉個例子。我們要篩選“三班且成績大于 60或者五班且成績大于 80”的學(xué)生SELECT * FROM score WHERE class_id 3 AND score 60 OR class_id 5 AND score 80;這樣的寫法因?yàn)?AND 優(yōu)先結(jié)果是對的。但如果漏掉了想表達(dá)的意思比如把“班級為 3 班的成績大于 60 分或者成績大于 80 分”寫成SELECT * FROM score WHERE class_id 3 AND score 60 OR score 80;它的意思是class_id 3 且 score 60 的所有記錄再加上 score 80 的全部記錄。后者已經(jīng)包含了所有班級完全不是“三班 80 分”這種窄范圍。要避免這種歧義最穩(wěn)妥的辦法就是加括號SELECT * FROM score WHERE class_id 3 AND (score 60 OR score 80);我自己的習(xí)慣是只要條件里同時出現(xiàn) AND 和 OR一律加括號哪怕有時括號是多余的。寫代碼是給人看的清晰比聰明重要。數(shù)據(jù)庫不會因?yàn)樯僖粋€括號就報錯但業(yè)務(wù)同事會因?yàn)槎嗔艘粋€錯誤條件而出錯誤報表兩相比較括號的成本太低了。2.4 BETWEEN、IN、LIKE 的邊界行為這三個運(yùn)算符在實(shí)際過濾中非常常用但邊界行為很容易被忽略。BETWEEN 是包含邊界值的。BETWEEN 60 AND 80 實(shí)際上等價于 score 60 AND score 80。注意它不是等價于 score 60 AND score 80。我之前做成績區(qū)間統(tǒng)計(jì)用 BETWEEN 60 AND 79 表示“及格”結(jié)果 79 分的被算了進(jìn)去80 分的沒被算進(jìn)去導(dǎo)致統(tǒng)計(jì)口徑跟領(lǐng)導(dǎo)預(yù)期的“80 分以上才算優(yōu)秀”對不上來回對了好幾遍才發(fā)現(xiàn)是邊界包含的問題。IN 的作用是匹配一組固定值。比如篩選一班、三班、五班SELECT * FROM score WHERE class_id IN (1, 3, 5);這個大家都會用但它有一個非常隱蔽的坑如果 IN 后面的列表里有 NULL倒不會出錯但如果子查詢返回的值包含 NULL那么配合 NOT IN 就會出大問題。SELECT * FROM score WHERE class_id NOT IN (1, 3, 5);這條看起來是“查不屬于 1、3、5 班的數(shù)據(jù)”但如果把 1、3、5 換成從另一個子查詢得來的集合而子查詢結(jié)果里存在 NULL那么整個 NOT IN 會返回空集——不會報錯但一條數(shù)據(jù)都沒有。原因是當(dāng) class_id 4而集合里有一個 NULL 時4 不等于 NULL這個判斷結(jié)果是 UNKNOWNUNKNOWN 會被過濾掉所以一行都留不下來。如果你真的想表達(dá)“排除某些班級”而且要安全處理 NULL最好用 NOT EXISTS 替代 NOT IN這個我們在后續(xù)章節(jié)講子查詢時再提。LIKE 是模糊匹配的關(guān)鍵工具。% 表示任意長度的任意字符_ 表示一個任意字符。比如SELECT * FROM student WHERE stu_name LIKE 張%;會查出所有姓張的學(xué)生。如果想查第二個字是“三”的姓名SELECT * FROM student WHERE stu_name LIKE _三%;LIKE 還有一個轉(zhuǎn)義問題如果數(shù)據(jù)本身包含 % 或 _ 字符比如課程名稱叫“C語言_基礎(chǔ)”直接寫 LIKE %C語言_基礎(chǔ)%下劃線會被當(dāng)成通配符匹配出一個奇怪的集合。解決方法是顯式指定轉(zhuǎn)義字符SELECT * FROM course WHERE course_name LIKE %C語言\_基礎(chǔ)% ESCAPE \;ESCAPE 后面的字符表示緊跟其后的通配符按普通字符處理。這個用法用得不多但真遇到了卡住你半天的情況。因?yàn)闆]人會告訴你數(shù)據(jù)里還有這些特殊字符你只會奇怪“明明有這條記錄為什么查不出來”。3. 去重過濾DISTINCT 與窗口函數(shù)的實(shí)戰(zhàn)選擇3.1 DISTINCT 只能做顯式去重數(shù)據(jù)過濾有時候不只是“去掉不滿足條件的行”還需要“去掉重復(fù)的行”。最直接的就是 DISTINCTSELECT DISTINCT class_id FROM score;這樣能查出所有出現(xiàn)的班級不會重復(fù)。但 DISTINCT 有一個關(guān)鍵限制它對 SELECT 后面出現(xiàn)的整組列做去重。什么意思呢比如SELECT DISTINCT class_id, subject FROM score;它會把 class_id 和 subject 的組合認(rèn)為是“一行”來去重。一班語文、一班數(shù)學(xué)算是兩條不同記錄因?yàn)?subject 不同所以不會被合并。如果你只是想看“有哪些班級”卻誤寫成查兩個字段結(jié)果會比你預(yù)想的多。DISTINCT 還有一個我認(rèn)為更值得注意的局限它只能去掉整行完全一樣的重復(fù)項(xiàng)并不能按某列去重并保留一行的完整信息。比如學(xué)生選修課表里每個學(xué)生有多條選課記錄現(xiàn)在想取每個學(xué)生最新選課的那條DISTINCT 就完全做不到。這時候就需要窗口函數(shù)。3.2 排名窗口函數(shù)的“最新記錄”過濾窗口函數(shù) ROW_NUMBER() 是處理“分組取最新”場景的利器。它可以在不合并行的情況下給每一行按分組編號。比如學(xué)生選課表 enrollstudent_idcourse_nameenroll_date101數(shù)學(xué)2024-09-01101英語2024-09-10102數(shù)學(xué)2024-09-02要取每個學(xué)生最新的一條選課記錄寫法如下SELECT student_id, course_name, enroll_date FROM ( SELECT student_id, course_name, enroll_date, ROW_NUMBER() OVER (PARTITION BY student_id ORDER BY enroll_date DESC) AS rn FROM enroll ) t WHERE rn 1;內(nèi)層查詢給每個學(xué)生按 enroll_date 倒序編號日期最新的編號為 1外層用 WHERE rn 1 過濾就拿到了每個學(xué)生最新的一條記錄。這個寫法比 DISTINCT 靈活得多因?yàn)樗A袅怂性剂行畔⒍液Y選條件可以隨意改。比如要取每個學(xué)生“第二個最早”的記錄就把 rn 2 即可。這種技巧在處理數(shù)據(jù)遷移、對賬、埋點(diǎn)日志去重時非常常見。同樣用“去重”這個熱詞時我還推薦另一種思路如果確認(rèn)數(shù)據(jù)里存在完全重復(fù)的行可以用 GROUP BY 把所有判斷重復(fù)的列分組再聚合其他列。比如統(tǒng)計(jì)班級數(shù)SELECT class_id, COUNT(*) AS cnt FROM score GROUP BY class_id;這既能去重又能計(jì)數(shù)一步到位。難點(diǎn)在于你要搞清楚“去重的鍵”是什么是單個字段還是多個字段的組合。這個決定了用 DISTINCT、GROUP BY 還是 ROW_NUMBER()。3.3 去重場景的選型建議我在實(shí)際業(yè)務(wù)里總結(jié)的選型邏輯很簡單只要整行完全重復(fù)想直接去掉優(yōu)先用 DISTINCT要看某個字段值的分布比如有哪些班級、哪些科目用 DISTINCT 或 GROUP BY 均可要按組保留一條明細(xì)記錄比如每位用戶最新登錄、每張訂單最后狀態(tài)用 ROW_NUMBER() 外層過濾要去重后還要做聚合統(tǒng)計(jì)比如按班級算平均分用 GROUP BY。這套選型邏輯聽上去很基礎(chǔ)但很多工作了三五年的開發(fā)都可能搞混。我見過一個線上報表原意是統(tǒng)計(jì)每個商品的最近一次售價有人用 DISTINCT 做出來數(shù)據(jù)錯亂又有人用子查詢做出來性能極差最后改成窗口函數(shù)一次解決。窗口函數(shù)不復(fù)雜只是平時沒有機(jī)會練手建議你在本地數(shù)據(jù)庫里建一張 1 萬行的表多試幾組 PARTITION BY 和 ORDER BY 組合很快就熟了。4. 過濾語句的性能索引、通配符與執(zhí)行計(jì)劃4.1 索引命中三件事等值、范圍、前綴過濾條件寫得對結(jié)果對但跑得很慢同樣是個大問題。我在處理慢 SQL 優(yōu)化時第一件事永遠(yuǎn)都是看 WHERE 條件能不能命中索引。只要過濾字段上有合適的索引數(shù)據(jù)庫就不用從頭到尾掃全表性能能提升一個量級以上。讓索引生效的前提主要有三個第一過濾列盡量用等值條件比如 WHERE student_id 101這里 student_id 只要建了索引直接按索引樹查找。范圍條件也能用索引但效率比等值稍低比如 WHERE score 60 會走索引范圍掃描。第二不要在索引列上做函數(shù)或運(yùn)算。比如SELECT * FROM score WHERE YEAR(create_time) 2024;這條語句在 create_time 有索引的前提下依然會慢。因?yàn)閿?shù)據(jù)庫要對每一行的 create_time 先執(zhí)行 YEAR() 函數(shù)計(jì)算再拿結(jié)果跟 2024 比原來的索引就用不上了。正確寫法是SELECT * FROM score WHERE create_time 2024-01-01 AND create_time 2025-01-01;這樣一來create_time 就變成了一個范圍條件索引就能正常走。第三避免隱式類型轉(zhuǎn)換。比如字段 score 是 VARCHAR卻用 WHERE score 60 去查數(shù)據(jù)庫會嘗試把 score 列的值全部轉(zhuǎn)成數(shù)值再跟 60 比這就相當(dāng)于在索引列上做了函數(shù)運(yùn)算。正確做法是讓參數(shù)的類型和字段類型保持一致如果字段是 VARCHAR就寫 WHERE score 60。這三個原則不算高深但做起來需要養(yǎng)成習(xí)慣。尤其是你會發(fā)現(xiàn)很多 ORM 框架會自動幫程序員把字段包一層函數(shù)導(dǎo)致線上 SQL 慢得離譜最后排查發(fā)現(xiàn)就是這層函數(shù)把索引毀掉的。4.2 LIKE 模糊匹配的前綴優(yōu)先原則LIKE 是過濾中性能差距最大的一個點(diǎn)。規(guī)則很簡單WHERE name LIKE 張% -- 前綴匹配能走索引 WHERE name LIKE %三% -- 包含匹配無法走索引 WHERE name LIKE %三 -- 后綴匹配無法走索引數(shù)據(jù)庫的索引本質(zhì)上是一棵排好序的樹前綴是確定的樹可以按順序查找前綴不確定樹就沒法定位起點(diǎn)只能全表掃描。所以寫模糊條件時要盡量把常量放在前面把通配符放在后面優(yōu)先命中前綴匹配。如果業(yè)務(wù)需求真的需要包含匹配比如搜索姓名里含某個關(guān)鍵詞前綴匹配解決不了有兩個思路一是用全文索引MySQL 的 FULLTEXT適合大量文本場景二是盡量縮小其他先決條件的范圍比如先按班級、按狀態(tài)過濾把數(shù)據(jù)量先減下來再做 LIKE避免在小范圍里全表掃。我實(shí)際調(diào)優(yōu)過一張 1000 萬行的商品表原本搜索詞是 %手機(jī)%查詢耗時 8 秒后來業(yè)務(wù)方改了需求允許只按前綴搜索查詢耗時直接降到 0.05 秒。性能差別就是這么大。在跟業(yè)務(wù)方提方案時可以優(yōu)先把精度要求擺在前面想辦法讓他們接受前綴搜索實(shí)在不行再考慮索引方案。4.3 慢查詢定位看執(zhí)行計(jì)劃寫 SQL 的時候誰都說不準(zhǔn)優(yōu)化器到底會怎么跑最好的辦法就是直接看執(zhí)行計(jì)劃。MySQL 里在查詢前面加 EXPLAINSQL Server 里用 SET SHOWPLAN_ALLPostgreSQL 里用 EXPLAIN ANALYZE。例如EXPLAIN SELECT * FROM score WHERE class_id 1 AND score 80;執(zhí)行計(jì)劃里最重要的字段是 type從好到差大致是 const、eq_ref、ref、range、index、ALL。ALL 代表全表掃描是性能最差的情況。還有 rows它顯示優(yōu)化器預(yù)估掃描的行數(shù)這個數(shù)字越接近表的總行數(shù)越說明過濾沒生效。我第一次用 EXPLAIN 是被一個線上報表逼的。一張訂單表 800 萬行按商戶編號和創(chuàng)建時間過濾查詢要 20 多秒。EXPLAIN 一看type 是 ALLrows 顯示 800 萬說明索引完全沒走到。后來檢查發(fā)現(xiàn)過濾字段上根本沒有建索引。建了組合索引之后type 變成了 rangerows 降到 5 萬查詢時間降到 0.3 秒以內(nèi)。從此以后凡是慢查詢我第一時間先看執(zhí)行計(jì)劃不看執(zhí)行計(jì)劃瞎優(yōu)化就是盲人摸象。5. 動態(tài)過濾條件的安全底線SQL 注入的攻與防5.1 注入是怎么發(fā)生的字符串拼接數(shù)據(jù)過濾既然經(jīng)常要處理動態(tài)條件比如用戶在前端輸入一個班級名稱后端拼接成 SQL 去查那就必須正視 SQL 注入這個問題。雖然聽起來像網(wǎng)絡(luò)安全專題但做數(shù)據(jù)查詢的人如果不懂早晚會把線上數(shù)據(jù)搞到不可收拾。危險代碼長這樣以 Python 為例sql SELECT * FROM student WHERE class_name class_name cursor.execute(sql)如果 class_name 是用戶傳進(jìn)來的攻擊者在表單里填這一段 OR 11拼出來的 SQL 就是SELECT * FROM student WHERE class_name OR 11這個條件永遠(yuǎn)為真整張表的學(xué)生信息都會被查出來。如果攻擊者再結(jié)合 UNION 查詢其他表甚至可以直接讀取用戶表、訂單表后果不堪設(shè)想。這個攻擊之所以能成功根源在于 “用戶輸入被當(dāng)成了 SQL 代碼的一部分”執(zhí)行。過濾條件的本意是只讓數(shù)據(jù)按預(yù)期輸出但因?yàn)槠唇虞斎肜锏膯我柛淖兞?SQL 的結(jié)構(gòu)。我早期練手寫管理系統(tǒng)時曾經(jīng)在登錄功能里直接用字符串拼接驗(yàn)證某個賬號密碼sql SELECT * FROM user WHERE username username AND password password 當(dāng)時根本沒有安全意識直到后來讀到“萬能密碼”示例才冒冷汗。攻擊者在用戶名框輸入 admin --密碼框隨便填拼出來的 SQL 變成SELECT * FROM user WHERE username admin -- AND password xxx在 SQL 注釋符 -- 之后的所有內(nèi)容都會被忽略于是這條 SQL 退化成只校驗(yàn)用戶名不校驗(yàn)密碼。只要知道一個用戶名是 admin就能直接登錄系統(tǒng)。這就是熱詞里“萬能密碼繞過”的原理。它讓 SQL 的過濾邏輯徹底失效從一個“按條件篩選”變成了“無條件通過”。5.2 參數(shù)化查詢才是正解針對 SQL 注入最有效的防御不是寫各種過濾函數(shù)而是使用參數(shù)化查詢。它的核心思想是把 SQL 的結(jié)構(gòu)和用戶輸入的數(shù)據(jù)分開傳遞數(shù)據(jù)庫先解析 SQL 結(jié)構(gòu)再把參數(shù)當(dāng)成純數(shù)據(jù)注入而不是當(dāng)成 SQL 代碼來解釋。Python 的寫法是用占位符sql SELECT * FROM student WHERE class_name %s cursor.execute(sql, (class_name,))Java 用 PreparedStatementPreparedStatement ps conn.prepareStatement(SELECT * FROM student WHERE class_name ?); ps.setString(1, className);PHP 用 PDO$stmt $pdo-prepare(SELECT * FROM student WHERE class_name ?); $stmt-execute([$className]);我在給團(tuán)隊(duì)做代碼評審時有一條硬性規(guī)定動態(tài) SQL 一律禁止直接拼接字符串必須用參數(shù)化。因?yàn)樵偻晟频倪^濾函數(shù)都有可能被繞過單引號、雙引號、注釋符、十六進(jìn)制編碼等花式變體能玩出各種花樣而參數(shù)化查詢是從語法層面杜絕了注入的可能性。這里有個小技巧如果一個查詢語句里既有固定條件又有用戶可控的排序字段、表名這種無法參數(shù)化的部分那就要單獨(dú)做一個白名單校驗(yàn)而不是盲目拼接。比如排序字段只能從 name、score、create_time 里選就在代碼里先校驗(yàn)后再拼進(jìn) SQL。5.3 過濾條件的權(quán)限邊界最后補(bǔ)充一點(diǎn)數(shù)據(jù)過濾不只是技術(shù)層面的 WHERE 條件還隱含了權(quán)限控制。一個普通的業(yè)務(wù)查詢?nèi)绻脩魝髁?class_id 1后端應(yīng)該同時帶上當(dāng)前登錄用戶的查看權(quán)限范圍。比如只允許查看自己所屬班級的數(shù)據(jù)那 SQL 就應(yīng)該是WHERE class_id %s AND region %sdata_filter 的粒度越細(xì)越能防止“越權(quán)查詢”。我見過不少系統(tǒng)功能看著都有但接口沒有做行級權(quán)限過濾導(dǎo)致一個普通用戶傳入大范圍的條件就能把全公司的數(shù)據(jù)拉出來。這類問題在數(shù)據(jù)層面比 SQL 注入更難發(fā)現(xiàn)因?yàn)?SQL 本身沒有語法錯誤只是少了一個條件。6. 常見問題速查與排坑實(shí)錄6.1 過濾條件常見錯誤速查表錯誤寫法問題表現(xiàn)正確寫法WHERE score NULL查不到記錄WHERE score IS NULLWHERE class_id NOT IN (子查詢有 NULL)返回空集WHERE NOT EXISTSWHERE YEAR(create_time) 2024索引失效慢查詢WHERE create_time 2024-01-01 AND create_time 2025-01-01WHERE name LIKE %關(guān)鍵詞%全表掃描數(shù)據(jù)量大時極慢盡可能改為前綴匹配或配合其他等值條件縮小范圍WHERE class_id 1 OR class_id 2 AND score 80結(jié)果集不符合預(yù)期WHERE (class_id 1 OR class_id 2) AND score 80WHERE s 60s 是 SELECT 別名報錯找不到列WHERE score 60 或嵌套子查詢SELECT DISTINCT col1, col2組合去重單列不重復(fù)明確需求按需選擇列這張表是我做內(nèi)部分享時一直保留的每次講數(shù)據(jù)過濾總有人能從里面找到自己剛踩過的坑。6.2 我踩過的三個真實(shí)案例第一個案例是成績匯總時大量 NULL 導(dǎo)致總分為空。當(dāng)時導(dǎo)出的成績表里缺考學(xué)生的成績是 NULL不是 0。我用最簡單的方式去算總分結(jié)果缺考學(xué)生的總分為空整個排名表錯亂。后來我在匯總前先做了 COALESCE(score, 0)才算對。第二個案例是 NOT IN 的 NULL 陷阱。查詢某個班級的補(bǔ)考名單排除掉一些特殊狀態(tài)的數(shù)據(jù)子查詢返回值里有一個 NULL整個查詢結(jié)果為空我一度以為是數(shù)據(jù)被誤刪了排查了兩個小時才發(fā)現(xiàn)是 NULL 的問題。從那以后我寫 NOT IN 之前都會下意識檢查子查詢結(jié)果是否存在 NULL。第三個案例是 LIKE 模糊搜索導(dǎo)致報表超時。當(dāng)時數(shù)據(jù)量 500 萬搜索姓名的 %XX% 寫法約 6 秒才能出結(jié)果前端一直轉(zhuǎn)圈。后來把搜索需求改成了前綴匹配響應(yīng)時間降到百毫秒級別同時把搜索詞做了長度和白名單限制。有時候不是你 SQL 寫得不好而是業(yè)務(wù)方的需求本來就可以調(diào)整優(yōu)化。6.3 數(shù)據(jù)過濾的調(diào)試方法調(diào)試過濾條件時我有幾個固定的操作習(xí)慣先把 WHERE 條件摘出來單獨(dú)跑一遍看返回行數(shù)是否符合預(yù)期。比如疑似多查了數(shù)據(jù)先確認(rèn)條件數(shù)量再分析哪個條件放得太寬。用 EXPLAIN 看執(zhí)行計(jì)劃和預(yù)估行數(shù)確認(rèn)過濾條件有沒有命中索引。這是排查“慢”的唯一可靠手段不要憑感覺猜。對復(fù)雜條件從內(nèi)到外拆分驗(yàn)證。比如多層子查詢先查最內(nèi)層的結(jié)果集再逐層往外查每查一層都停下來看數(shù)據(jù)是否符合預(yù)期。這個習(xí)慣能幫你快速定位是子查詢寫錯了、還是內(nèi)外層關(guān)聯(lián)條件沒帶全。我自己在處理數(shù)據(jù)任務(wù)時還會用臨時表分步處理先 SELECT 到臨時表再對臨時表做過濾和二次加工。這種方式雖然多寫幾步但每一步的結(jié)果都看得見出了錯容易追蹤。等邏輯完全驗(yàn)證正確后再考慮合并成一條復(fù)雜 SQL 去做性能優(yōu)化。收尾一個小技巧最后分享一個我常用的實(shí)用習(xí)慣復(fù)雜的過濾條件建議盡量寫成“范圍條件”的形式不要把邏輯全部堆在 OR 里面。例如篩選指定班級、指定科目、指定分?jǐn)?shù)段優(yōu)先寫成多個 AND 條件拼接而不是每個值都用 OR 窮舉。這樣優(yōu)化器更容易命中組合索引SQL 可讀性也更強(qiáng)。數(shù)據(jù)過濾這個主題看起來是最基礎(chǔ)的 SQL 功能但真正寫好的關(guān)鍵在于對數(shù)據(jù)本身的敏感度——你知道哪些列可能為 NULL哪些字段存在特殊字符哪些條件能走索引。多練多想多記錄排坑經(jīng)驗(yàn)這些積累會慢慢變成你的肌肉記憶。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
美女露胸露尿口| 精品区9| 91无摭挡| 激情五月天婷婷| 国产精品99精品视频网站| 色狠人在线99| 99热这里只有精品8| 大香蕉乱级| 香蕉免费一区二区三区不读| 嗯嗯嗯嗯啊啊啊好紧好大| 日韩无码人妻| 欧美性性性| 91强在线播放| 躁躁日曰躁2020| 大香蕉婷婷| 熟女乱伦A| 懂色Av| 97超碰中文字幕| 99啪啪视频| 丁香五月影院| www.av在线视频| 少妇综合| 在线观看高清AV| 俄罗斯及免费在线看| 人妻喷水| 啊啊啊啊免费视频| 黑人综合网| 超碰三级秋霞| 草草影院最新网址| 思思热在线视频免费| 九九九成人| 亚欧操逼片在线观看 | 日韩欧美三级| 九热中文字幕| 欧美v日韩v亚洲v最新在线| 极品美女嘿咻| 丰满熟女一区二区三区在线播放| 五月婷亚洲精品天堂| 中文字幕第7页| 偷拍新久久| 日天天九九天堂666| 亚洲熟女诱惑| 少妇啪啪自拍| 91超碰人人操| 九九热九九热| 校园春色亚洲无码| 欧姜老司机| 日va操| 美国人人操人人操| 人妻少妇av在线观看| 精品毛片av一区二区| 欧美自拍偷拍综合图片| 人人看人人摸人人色| 天天影视网综合少妇| 亚洲欧美日韩中文久久自慰| 在线A日本| 伊人国产成人av网站| 色鬼在线综合| 亚洲丰满很很操| 试看日韩黄片| 欧美亚洲首页| juliaann精品熟女一区| A V视频日本| 成人九九| 亚洲怡春院| 混色激情av| 欧美精品23| 精品免费囯产一区二区三区| 黄久在线| 免费97视频| 东京热免费视频| 操b在线观看| 日逼视频日本| 欧美日韩香蕉| 性色av婷婷久久一区二区点复制| 蜜臀久久99精品久久综合| 色婷婷亚洲婷婷| 亚欧Av| 欧美 日韩 亚洲 春色| 风月影院十八禁| 亚洲日本大香蕉1| 亚洲天堂日本| 色原狠狠天天天| 另类视频在线| 中文久久96| 亚洲色9| 欧美色自拍| 日日骚av| 欧洲欧美视频一区二区| 日本精品第一视频在'| 日韩欧美女优电影| 五月开心久久AV官网| 99re在线视频国产| 日躁天天爽爽| 26uuu性物| 国模精品娜娜一二三区| 青青草原人妻| a啊啊啊啊啊啊啊啊一区二区| 精品久久97| a片久久久久久久久久久久 | 欧美精品久久久久久久丰满| 无套内射性感少妇视频| 97网址97| 日韩黄片视频试看| 91亚洲黑人| 伊人久久亚洲色欲综合网站| 亚洲成人黄色在线观看| 久久综合99| 日韩AV电影网站| 96国产污污污丝袜| 91天天| 天天操天天舔| 亚洲天堂第一页| 超碰欧美COM| 俺去啦俺来也久久综合| 高清在线偷拍自拍视频| 91影视亚洲| 免费观看网黄| 91成人国产综合久久精品蜜月| 97Ai亚洲| 抽查国产福利主播| 百度百度日本操逼| 嫩草 人人网精品| 国产日韩区| 久久日本熟妇熟色高清| 高清国产无码av| 久九干| 欧美爱三级日韩久久| 婷婷国产精品九区| 精品人妻中文字幕高清| 久久一区,青青青青草视频在线播放| 亚洲欧美内射| 日韩一区二区熟女| 国产 亚洲 丝袜 制服| 好一吊区二区| 久久久久久久国产| 99re视频在线观看这里只有精品| 91久久青青草原精品| 91丝袜美腿网站| 国产肏逼网站| 韩国嫰模上门援交视频| 日日爽夜夜爽| 成人乱人伦一区二区| 人妻素股| 婷婷综合视频| 精品一区二区三区国产| 黄色不卡视频| 欧美大香蕉卡久久| 久久久亚洲欧美综合| 夜夜爽夜夜| 男人的亚洲天堂| 人妻少妇色综合| 51国产午夜精品视频| 婷婷精品国产一区二区三区日韩| 精品少妇一区二区三区在线视频| 亚洲无码视频免费在线观看网址!| 欧洲射精91| 色婷婷五月综合激情中文字幕| 极品色综合| 久久久久9999妇女| 天天爽爽爽爽| 婷婷五月天补不补| 天天干天天日天天射黄色| 亚洲综合成人网| 精品少妇一区二区三区在线视频| 超碰成人公开| 欧美日韩黄片精品在线| 蜜臀视频网站| 99re久久| 精品九九九九九| 亚州,欧美在线| 国产精品。| 久久久草成人网站久久久草成人久久久草久久久| av在线播放国产一区| 成人性交午夜免费片| 久久久91福利姬| 四虎影视 亚洲无码| 蜜臀久久精品久久久久视频| 韩国毛片一区二区三区| 国产精品丝袜在线| 美女网站91| 可乐操在线| 玖玖大干人妻| 国产精品96| 丝袜色综合| 台湾佬中文娱乐网久久久久久久久久com | 99人妻| 特色a在线上| 亚洲加勒比久久日本道| 91精品微拍福利| 99这里只有精品国产| 成人性爱免费播放| 亚洲成熟国产精品美女| 日本成人电影资源网| 超碰在线香蕉| 五月天婷婷影院| 偷拍 精品 另类 四区| 欧美大香蕉在线观看| 男人的天堂在线2| 亚洲色图第四色| 久久视网78| 亚洲成人在线乱码色午夜| 呦呦影院| 亚洲男人天堂Av| 99re69综合| 天美av在线| 大JI巴好深好爽又大又粗视频| 白丝被操91| 美女黄频a美女大全免费皮| 国产后入精品| 欧美精品不卡一二三四在线91| 人澡逼| 亚洲精品乱码线路中文字幕| 99re9在线| 白丝在线一区| 岛国激情视频在线观看| 极品久久久久久久久久久久久久| 操www| 九九热九九热| 国产精品操| 91三级理论片播放器| 久热69九色熟妇97| 97爱爱官网| AV乱伦专区| 久久草草欧美精品| 午夜αv| 中文字幕 码精品视频网站| 免费久久9999| 久久久久亚洲AV无码专区少妇| 熟女在线视频| 国产精品久久久久久久电影渣男| 久艹伊人精品综合在线| 午夜性生活av免费在线看| 亚洲欧美经典一区二区| 4虎在线观看| 亚洲日韩成人性爱视频| 91国精产品| 九九热久久99精品re| 久久动漫精品视频这里只有精品| 99热在线观看| 综合网97| 欧美自拍偷拍免费观看| 极品色电影院| 播播亚洲小说亚洲| 9 1果冻精品视频| 色吧五月| 久9九综合在线| 欧美综合区| 我爱操| 日韩欧美视频青青| 人人操人人摸avav| 亚洲日韩狠狠撸视频| 9999久久久久| 欧美日韩大香蕉| 国产夜夜艹| 精品欧美老熟女一二区| AV99热18这里只有精品| 思思热在线cao| 亚洲AV不卡在线观看尤物| 国产精品一区av在线| 密臀国产在线| 五月天婷精品激情| 日韩精品资源专区二区| 久久九九热| 99热精品免费| 亚洲好看强奸乱伦| 久夜视频| 老鸭窝在线视频播放| 色综合久| 婷婷中文网| 久久黄色视频一区二区三区| 天天日天天干天天操| 天天日天天屌天天操| 91n.欧美| 粉嫩AV一区夜夜嗨| 精品国产网站| 99九九精品| 久久久久久久强迫| 天天舔日美女视频| 丝袜美女诱惑 91 视频| 爱爱动态120秒| 秋霞无码av鲁丝片一区| 亚洲男人综合| 欧美黄色手机在线观看| 亚洲欧美另类激情小说 | 91总综合网| 五月丁香影院| 1禁看欧美黄片免费看| 国产h小视频在线观看免费| nuu12国产麻豆精品| 亚洲视频小说| 制服丝袜第二页| 国产乱弄免费在线视频。 | 伊人黄色片| 天堂中文日本在线观看| 伊人五月天激情| 欧美性爱系列| 六月色婷婷| 视频分类 国内精品| 99国产精品视频尤物| 曰韩人妻中文字幕在线| 亚洲男人天堂AV| 午夜经典| yaouchengrenav| 黄骗免费网站| 国产精品人妻无码久久久互動交流| 国产呦精品系列在线观看| 偷拍综合网| 国产黄色在线播放观看| 国产亚洲日本精品在线| 国产丝袜美女诱惑| 久久鲁夜| 九九九精品一区二区无码| 啊啊啊久久久视频| 大象AV在线| xxx0国产在线播放| 亚洲最大的黄色电影网站。| 超碰欧美97资源| 欧美日韩一二三| 欧美啪啪色吧在线| 久久啊啊啊| 免费在线看黄片av| 亚洲成A∨人影院在线欢看| 色婷五月| 99色婷婷中文字幕乱色| 精品78| 欧日a| 日本女厕偷拍| 天堂综合网| 91视频伊人| 2020国产精品| 一区二区视频你懂的| 激情婷婷丁香网| 欧美天天干| 中文字幕91综合| 凹凸 69堂 在线播放| 永久免费发布性爱网| 久久国产精品91| 91女优在线观看| 亚洲国产美女久久久久| 日韩人妻少妇中文字幕| 亚洲日韩精品一区二区| 国产精品成人蜜臀AV在线| 91高跟美女在线播放| 在线免费观看高清无码视频| 伊人一区二区三区| 双插性欧美一二三区| 精品视频专区| 久久东京伊人一本到鬼色| 极品五月天噜噜| 亚洲久久久久| 精品人妻美妇91job| 久久久久久91香蕉国产| 国产午夜精品理论片一二三区区| 这里是精品| 黄色片,com| 热热热热日日漂亮永久永久国产日| 国产91 丝袜在线播放00-百度| 91干熟女| 97超碰欧美精品| 啊啊啊不要好疼视频| 亚州性色| 亚洲日韩乱码中文无码蜜桃臀网站 | 国色天香av| 男人的天堂免费| 人妻久久久久久久久久久久久久久 | 人人人摸人人| 女人的天堂大香蕉网| 自怕偷自怕亚洲精品| 精品妇操一区二区三区| 国产精品九9| 69av一区二区三区| 精品玖九九久| 美女的肌被草喷水视频| 精品人妻美妇91job| 91天堂网| 国产青青美女玩逼视频| 99日精品欧美国产| 日韩激情电影中文字幕| 欧美在线|亚洲| 插入综合网| 日本东京热加勒比久久| 91欧美大片| 久久人妻无码毛片A片麻豆| 久久久久精| 玖玖97综合| 色视频蜜乳| 啊啊啊骚| 91欧美www| 日韩高清一二三| 日本99一区二区| 黄色二级片网站| 大地资源在线观看中文第二页| 搡老女人老熟女91| 国产区在线| 日本蜜桃| 综合色拍| 色一区二区三区综合| 亚洲涩图欧美| 欧美激情在线观看视频| 色哟哟 日韩精品| 在线不欧美| 黄色高清久久无码依人| 青青草啪啪网| 久操在97| 五月天亚洲网| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 欧美青青草视频| 91夜夜蜜桃臀1区2区3区| 欧美日韩淫加| 欧美大干日韩| 亚洲在线91| 日韩性爱小视频| 超碰精品国产无码| 色在线视频导航| 国产麻豆一级精品视频| 台湾佬激情综合| 嗯嗯啊啊用力视频免费| AV中文字幕剧情1区2区3| 精品无码一区二区三区| 天堂无码| 日韩AV熟女乱伦| 国产av尤物| 97欧美色综合| 婷婷超| 人妻中文字幕日韩电影| 麻豆久久视频在线地址| 久久少妇人妻| 不卡av免费在线网址| 911av网站免费观看| 99精品热| 少妇内射视频| 偷拍偷窥与盗摄视频专区| 黄色视频特级毛片| 精品176精品2| 97超碰色色| 8x福利精品第一福利视频导航 | 中文字幕78| 91九色丨风韵犹存| 男女性感激情网站| 亚洲成人精品久久久| 九九操久久国产免费视频| 日本成人A片网站| 欧美三级免费伊人| 超碰人妻久久| 狠狠色综合网| 亚洲黄色AV电影| 丁香五月色| 麻豆传媒一区二区在线观看| 无码最新| 九99久久| 老鸭窝亚洲毛片| 色妇综合网| 天美精品av| 久久αⅴ| 久久色激情一区二区三区| 天天综合官网| 日韩三级一区| 亚洲网站一区二区在线| 97玖玖超碰| 日本性爱网址| 亚洲欧洲激情卡通另类文学四射小说网站| 六月激情网| 久久春色| 97超碰资源网| 日韩三级视频一区二区三区| 久久久久久九九九| 日本999精品| 日韩欧美俄罗斯A片| 97ai亚洲| 偷拍超碰| 久久精彩免费视频| 熟女精品va中文字幕| 麻豆天天躁天天揉揉AV| 91AV老熟女视频| 操高情无码| 精品国产Av无码久久久伦古装| 男人天堂站| 色翁荡息又大又硬又粗又爽| 熟女高潮精品一区二区| 人人妻人人操人人乐| 亚洲av乱伦色图网站| 欧美自拍偷拍综合图片| 欧美精品系列| 黑人干亚洲| AV丝袜少妇| 99久久婷婷| 狠狠中文字幕| 国产呦精品系列在线观看| 青青草字幕AV| 在线视频一区二区传媒| 91色爽欧美| 五月天激情影院| 亚洲h片在线免费观看| 97色网| 九九亚洲| 97免费在线观看| 久久青娱乐| 97欧美色| 欧美日韩97在线| 亚洲欧洲第二视频在线观看色图| 欧美男人一区| 爱干爱射网啊啊啊| 欧美青青视频| 超碰是碰在线观看| 密臀国产在线| 久久久不卡区一区二区三区久久久| 中文字幕人妻丝袜| 神马视频久久久久久| 91色碰| 亚洲男人天堂网久久| 91在线综合网| 亚洲城人男人的天堂| 中文字幕制服欧美久久一区| 啊啊啊啊二区好大| 综合情欲网| 蜜桃天美传媒AV一区二区三区| 另类专区加勒比| 鸥美中出| 国产乱伦亚洲| 久久精品色欧美aⅴ一区二区| 国模无码一区二区三区在线| 亚洲天堂综合AV| 69AV女优男人的天堂| 亚洲情色 无码专区| 久久免费9| 色视频蜜乳| 欧美日韩激情无码专区| 免费视频无码| 人人妻天天做天天爽| 久久香蕉国产线看观看亚洲女人 | 欧美传媒| 国产精品3| 亚洲性天堂| 3d成人精品一区二区| 亚洲日本韩国在线| 久久超碰大香蕉| 翔田千里AV无码秘 三区| 无码黑人精品一区二区三区三| 91N欧美| 男人天堂最新手机版在线青青草| 大香蕉78| 91天天爽| 亚洲国产婷婷在线播放| 欧美日韩理论一区| 久久免费少妇| 青青操青娱乐| 中日韓欧美高清| 九九热免费视频| 91男人综合| 日韩啪啪啪啪啪| 麻豆区久久久久亚| 青娱乐久久艹| 色香网| 性爱乱伦网址| 中文字幕av丝袜| 高潮毛片无遮挡高清免费| 色色综合网站| 成人怡红院| 97人肏| 色五月婷婷网| 欧美春色| 亚洲精品欧洲精品| 激情综合网五月婷婷五月天| 精品超碰色| 强奸a片网| 这里只有精品97| 国产精品交换一区二区| 国产精品点击进入在线影院高清| 人人色人人射人人妻| 污色区网站| 99re不伦| 久久6热视频免费观看| 欧美久久久15P| 欧美成人午夜免费福利785| 婷婷探花久久精品一区| 久久久久久中文字幕中文字幕最新| 乱欲视频| 日本一二三免费久久| 少妇与黑人高潮在线| 亚洲成人久久一区二区| 日韩猛交| 91色综合色| 亚洲夜色在线| 在线αⅴ| 亚洲中文字幕熟女| 老熟妇一区二区三区| 日韩在线76| 约操熟妇| 亚洲中文一区二区三区| 亚洲色图片区| 亚洲的天堂网| 亚洲国产欧美日韩人妻日中文| 6080YYY午夜理论片在线观看| 亚洲精品人体| 热热色91| 亚洲熟妇白浆无码AV| 国产天天看| 一区=区三区视频| 久久久久久日韩| 日本三级一区二区 在线| 精品对白久久不卡| 操熟女91| 综合亚洲欧美| 免费国产视频| 色欧洲| 熟妇综合一区二区三区| 校园春色亚洲| 欧美黄页| 成人性交午夜免费片| 五月天久久人妻| 男人的天堂久久狠| 亚洲涩涩| 久久久三区二区一区| 激情情色五月天| 深夜激情| 岛国毛片在线观看免费| 日本成人A片网站| 无码高清操逼网址| 久久黄色性爱视频| 成人性爱美曰韩| 国产精品自在线发布| 中国国国产一级特黄毛片| 极品美女福利在线观看| 久久久久久国产精品| 刺激性视频黄页| 超碰人人超在线观看| 亚州情色j区| 蜜臀AV成人精品蜜臀| 欧美成人亚洲精品| 日韩资源网| 亚洲黄色| 亚洲日韩成人性爱视频| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 中美日韩毛片| 国产美女裸体秘 永久无遮挡| 日韩簧片免费看| 色香色欲天天综合网天天来吧| 久久久久国产亚洲一区欧美色图日韩 | 日日97| 精品国产无码中文| 久操热线| 啊啊啊啊啊啊啊啊啊啊在线观看| 国产夫妻性生活视频| 97中文字幕一区| 国产69精品久久久久99尤物| a男人的天堂| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲字幕一区二区| 素颜老阿姨乱情色| 欧美日韩在线视频网站| 亚洲一区二区性爱电影| 国产第11页| 91丨九色丨国产丨人妻在线| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 亚洲成人福利电影免费 | 能看的AV| 九九九不卡| 桃花色涩综合影院| 日本精品一区二区三| 国产三级中文有码在线视频| 青青欧美| 萌白酱自拍视频| 欧美熟女妇同| 久久精品国产精品一区| 五月激情综合网| 欧美精品亚洲精品日韩传电影| av强奸乱轮| 97欧美日韩中文| 免费的黄片wwwwww| 人人九九精| 韩国一级做A片免费的| 午夜AV污污污| 精品四五区| 99老司机精品视频在线观看| 男人天堂2030| 伊人97色天使| 无码高清专| 人爽不卡视频| 日韩av三四区| 黄色免费网页无码| 好爽视频在线观看视频 | 亚洲无码?第一页| 亚洲精品熟妇1区2区3区。| 精品女人999| 可以在线观看的黄色网址| 韩国毛片一区二区三区| 久久久艹艹艹| 日本日皮视频逼| 嗯嗯啊啊啊好爽| 久久999久| 六九九九| 天天做日日爱夜夜爽| 中文字幕精品免费一区二区| 中文字幕一区二区三区四五区| 超碰资源亚洲97| 精品人妻中文字幕4399| 久久99久久99精品天美传媒棢·纸:.| 极品粉嫩一区二区| av天堂影视中文在字幕在线中文 | 天天色粽合合合合合合合| 91美女精品| 嗯嗯嗯啊啊在线观看| 麻豆福利视频导航| 色婷久久| 国产极品一区二区三区三州| 萌白酱自拍视频| 亚洲一区二区久久久久| 夜夜躁狠狠躁日日躁av| 淫纸中9区| 亚洲涩图欧美| 欧美91精彩| 91熟女综合| 大香蕉宅男伊人| 日韩精品人妻中文字幕有码午| 国产综合网站在线播放 | 中文字幕久热视频在线| 中文?日韩?免费?精品| 眼镜人妻101.com| 成年无码动漫av片无尽在线 | 国产精品探花色| 青青操网| 亚洲成?V人片在线观看福利| 亚洲九月丁香| 亚洲九九夜夜| 97超级久久强资源| 国产女人9999| 午夜噜噜噜| 91女色| 欧美爱爱97| a亚洲欧美色欲| 精品人妻一区| 国产高潮AA片免费看| 国产又粗又长又爽又色| 亚洲精品色| 人妻在线中出视频| 丝袜色综合| 色约约一区=区三区| 久久男人天堂| 影音先锋视频在线| 国产91久久九九免费精品无码| 久久本道| 欧美色吧综合| 美女黄页网站| 思思在线免费视频| 99999国产| 国产美女自拍AV| 国产农村一一级特黄毛片| 人人摸人人干| 激情综合 婷婷五月 红杏| 精品无码久久久久久国产浪潮| 久久鲁干| 国内97干免费看| 久久国产熟女影院| 欧美一区二区三区日韩| 丝袜美女诱惑 91 视频| 亚洲图片欧美色| 人人插人人搞人人操| 诱惑人妻欧美一区在线播放| 伊人91| 996热| 久久久无码精品人妻二区| 精品人妻美妇91job| 97精品97| 人人操人人干网页| 久久久∴| 日本中文字幕不卡视频| 91三级理论片播放器| 97欧美精品综合| 亚州综合色| 暖暖精品二区三区观看| 美女诱惑久久| 91蜜臀熟女| 中文字幕欧美丝袜07资源| 丁香婷婷色五月| 春色综合网| 欧美内射少妇| 午夜操逼不卡| 蜜桃丰满熟妇av无码区不卡| 思思热久久成人| 久久久精品中文字幕麻豆| 无码操逼网| 国产精品午夜福利视频| 九九热九九| 国产美女在线精品免费看| 天天天天天超碰| 中文字幕免费看大片| 国产丝袜一区二区三区| 五月激情小说| 亚洲人综合19| 超碰 av 女人天堂| 中字乱伦AV| 一区二区三区免费视频入口| 国内一区二区三区| 啊啊啊啊嗯嗯嗯用力好爽 | 99自拍视频在线观看| 美女高潮国产高清| 欧美天天综| 91精品啪在线观看国产城中村| 精品1区2区3区| 精彩视频日韩| 亚洲久热| 国产呦精品一区二区三区下载| 高清无码91| 日韩丝袜高跟制服在线观看| 麻豆天美电影一区二区| 色在线亚洲视频www| 久伊人网78| 九九九九九精品十六| 五月婷婷影院| 青青草视频久久| 一级啊性爱在线视频| 无码高清操逼| 91春色| 日韩在线电影| 亚州黄站| 丝袜色综合| 蜜臀无码一区二区| 欧美韩日精品资源| 超碰人妻久久人妻中文97| 丁香五月天视频| 五月婷婷激情综合| 亚洲女毛多水多21P| 久久久免费一级黄片| www.91色| 国产高清精品福利| 久久久夜夜嗨免费视频| 成人午夜小视频手机在线看| 秋霞影音一区二区三区| 艹少妇网站| 欧美性生活免费网| av天堂天堂av日韩| 久久精品日韩| 婷色五月天| 操操啪| 性爱久久| 欧美 亚洲 大香| 美日韩在线不卡人妻| 伊人亚洲综合| 男人的天堂va在线| 欧亚无码视频| www.av在线视频| 成视频在线观看免费看| 欧美无圣光在线| 一区二区亚州激情久婷婷欧美| 青青久久久| 男女日B国产| 国内精品伊人久久久久影院会| 人妻少妇久久久| 人妻久久久久久| 亚洲色图 图片| 一起草在线视频| 操我无码| 欧美爆操91| 精品国产乱码久久久久久日本公司| 中文字幕在线免费观看| 亚洲国产麻豆一区二区三区| 18精品一区| 91在线丝袜| 无码高清操逼| 亚洲无线码一区国产欧美国| 亚洲最大黄网| 中文字幕精品探花视频| 伊人色综合网电影| 中文97国产| 精品久久久久久久| 92性色国产午夜福利在线661| 2010男人的天堂| 国产中午字一暮区| 操高情无码| 国产极品久久久| 无码高清操逼网址| 丁香五月电影| 78超碰| 日本三级黄页| 最新制服中文第一页| h无码动漫在线观看| 国产成人亚洲精品无| 操淫穴亚洲五月丁香 | 欧美日日夜夜| 中文字幕国产精品1区| 日韩一级欧美一级在线观看| 综合久久久久久久综合网| 久热最新在线杭州| 风间由美日韩欧美久久| 国产60区。| 精品大久久| 婷婷三区| 九九热免费国产视频婷婷伊人五月 | 99re在线视频这里只有精品| 久久久99999久网站| 久久的网站啊啊啊啊啊| 久久久9品一区二区三区| 丁香六月激情| 国产又粗又又黄又猛| 久久婷婷热| 五月丁香婷婷综合| 国产人妖视频一区在线观看| 国产熟女完整版中字| 大香蕉专区| 国产av又色又爽又黄| 国产午夜激片Av毛片不卡| 乱伦av国产| 无码视频黄色网战| 亚洲精品日日夜夜52| 国产免费一区二区在线A片视频| 欧美精品自慰系列寂寞少妇| 操操啪| 欧美日韩性爱操大逼| 欧美 亚洲 偷拍自拍| 中文字幕在线观看视频www| 制服乱伦| 日本三级中国三级99人妇网站| 久久99热这里只频精品6学生| 水澄无码AV| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 午夜超爽| 天天插天天操| 99热思思| 精品乱子一区二区三区99| 久久久9品一区二区三区| 日日干夜夜操视频h| 偷拍综合亚洲| 久操视频在线| 欧美中文字幕精品人妻| 国产粉嫩蜜臀av一区二区三区| 偷拍亚洲熟女视频播放| 国产人伦a片信息免费片| 91久操| 强奸少妇AV导航网| 久久AV色| 超清中文乱码字幕| 一级性爱视频免费在线| 男人a天堂手机在线版| 欧美日韩操逼嗦吊| 久久人妻办公室视频| 99r九九| 亚洲在钱| 不卡日本一区二区| 日韩精品一区二区日韩| 九九RE视频在线精品| 九九九久千久久激情蜜桃在线看 | 综合久欧洲| 五月天AV资源| 17c嫩草51久久91嫩草| 五月丁香拍拍激情综合三级| 久久亚洲婷婷| 免费久久9999| 久久精品99| 亚洲精品自拍| 91操人视频| 抽查国产福利主播| 另类图片五月天| 2024年最新色情网站在线观看| HEYZO高无码国产精品227| 亚洲AV小说| AV天黑人| 欧美性爱精品七区| 人人干人人操人人..com| 久久人妻97久久久久久久| 午夜精品久久999热蜜桃介男人用| 亚洲欧美日韩激情不卡| 狠狠操夜夜| AV一二区| 99精品久久久久久| 日日干天天干夜夜爽| 九九热超碰| 天天天天做夜夜夜夜做| 久久久性| 九九热AV| 麻豆a'v电影| 69精品| 色色五月天激情| 久污| 色哟哟AⅤ| 久久久久久中文字幕中文字幕最新| 精吧天堂| 日本日逼高清| 激情综合五月天| 自拍第一页| 强奸乱伦中文字幕AV| 亚洲人在线| 成人线上超碰| av中文在线| 新91视频.cmp| 18禁在线视频| 手机不卡视频不卡在线一二三区| 99999亚洲| 国产精品视频白浆免费| 97网址97| 操日韩第| 超碰久久草| 人妻中文字幕精品无码 | 成人aⅴ一区二区三区| 久久免费精品96| 亚洲图片日本AⅤ欧美在线| 91亚州日韩高清| 午夜αv| 婷婷色综合| 97久久久久| 欧美很很操视频| 日天天九九天堂666| 欧美性爱另类综合| 精品无码产区一区二| 国产精品无码在线| 久偷拍欧美日韩三区| 国产操操日韩三级黄| 操我啊啊啊啊啊| 国产高清午夜成人在线观看| 啊啊啊啊啊啊在线看| dy888午夜老子影视达达兔| 野狼激情网| 女人综合网| 亚洲国产综合久久久性感熟妇| 国产精品点击进入在线影院高清| 你操综合| 1000部熟女视频在线观看| 亚洲另类久操网| 伊人五月天婷婷| 日韩一区二区熟女| 午夜啪| 久久精品国产99国产精品亚洲| 在线观看不卡一区二区三区| 99久re热视频精品98| 日韩本不卡视频在线观看 | 欧中美三级一区二区三区| 欧美黄色片AAAAA| 东京热91| 97干com| 三级日韩一区二区三区| 亚洲熟久久| 色婷婷激情| 啊啊啊无码| 久操在97| 久久精品国产免费观看99| 日日躁夜夜躁狠狠躁超爽| 亚洲精品一二三四区| 亚洲?V无码专区在线电影| 四虎影视 亚洲无码| 久久五月综合| 亚洲 小说 欧美 激情 另类| 97干综合网| 丁香五月天啪啪| 亚洲天堂五月天国产| 欧美性爱一内片一区二区三区| 久久透逼视频| 青青操少妇| 在免费jIzzjIzz在线视频| 综合色久欲| 人妻激情偷乱视频一区二区三区 | 久久久久国产精品久久久| 大香蕉欧美国产日韩高潮| 久久香蕉综合一本到3atv| 在线视频97| 超碰97资源大奶| 欧美做爰无码A片视频| 人人操人人爽人人操人人| yy少妇精品久久| 久久国产三区| 亚洲人成网站7777| 任我爽在线视频免费观看| 午夜激情床戏激情| 欧美激情视频在线一区| 老熟女天天操| 亚洲欧美日韩电影网站一区 | 99999精品成人| 人人天天干干| 精品国产无码中文| 丰满人妻一区二区中文| 日韩精品人妻系列无码天堂| 色色色欧美| 国产一级特黄大片处女| 久久免费少妇| 超碰97人人乐| 屌妞视频久久久久久久久久久久| 能看的av| 国产女人操逼视频| 7777奇米影视久久| 91内射| 日韩91网| 97在线欧| 日本孕妇孕交| 色好看av| 欧美三级一级| 超97在线精品视频| 74成人在线| 免费岛国一级片| 视频二区美腿制服人妻欧美| 智利AV在线网| 天天综合网~91入口| 观看视频图片一区二区三区| 亚洲天天艹| 1024香蕉视频| 欧美婷婷五月天| 精品亚洲黄色片 国产精品导航一区二区| 91老熟女视频| 精品在线蜜臀| 天天做天天爱| 久伊人网78| 精品人妻少妇| 9精品久久久久| 99re6在线视频精品免费完整版安卓版| 日韩欧亚中文在线| 另类av综合久久| 麻豆黄四叶草网站| 蜜桃视频一区二区三区在线观看| 99热精品免费| 国产亚州日韩欧美看片| av凤凰久久久| 色一色综合网| 人人扣人人操| 99色综合| 久久99网站| 国产毛片精品一区二区色欲黄A片| 国产伦精品一区二区三区在线观| 婷婷五月天激情网| 国产超碰| 婷婷五月av| 99精品久久| 亚州精人品大香蕉| 中文字幕 av v| 91久精品| 狠狠夜色午夜久久综合在线| 美女诱惑在线一区| 亚洲www91| 影音资源男人日韩| 色网亚洲人| 成人AV在线网站| 97超碰9| 欧美同性恋 的搜索结果 - 91n| 国产尤物在线三区| 欧美啪啪色吧在线| 色爱亚洲| 老司机福利社视频在线观看| 2020中文字幕| 欧美成人9797| 免费看美国人人爽,人人操| 美女露胸露尿口| 9久精品| 久热久一区二区三区| 免费久久9999| 亚洲日韩欧美一区二区| 久久婷婷苹果| 深夜视频| a片久久久久久久久久久久 | 天天激清| 亚洲第一黄色av网站| 91干熟女| 看黑人AV不卡| 久日综合网| 欧美天天影院| 亚州综合在线| 国产黄色在线播放观看| 十八岁啪啪视频免费看| 色婷网| 中文字幕丝袜美腿| 91欧美综合在线| 欧美综合网在线| 久久成人国产| 色五月激情网|