良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序

上傳人:ta****fu 文檔編號(hào):210907190 上傳時(shí)間:2023-05-18 格式:DOCX 頁(yè)數(shù):10 大?。?2.86KB
收藏 版權(quán)申訴 舉報(bào) 下載
良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序_第1頁(yè)
第1頁(yè) / 共10頁(yè)
良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序_第2頁(yè)
第2頁(yè) / 共10頁(yè)
良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序_第3頁(yè)
第3頁(yè) / 共10頁(yè)

下載文檔到電腦,查找使用更方便

9.98 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《良好的sql語(yǔ)句書(shū)寫(xiě)規(guī)范正確的sql書(shū)寫(xiě)順序(10頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、總結(jié)|如何養(yǎng)成良好的書(shū)寫(xiě)SQL的習(xí)慣? 作者總結(jié)了八個(gè)書(shū)寫(xiě)SQL的習(xí)慣,包括執(zhí)行順序,臨時(shí)表和變量表的用法等方面。如何更好的讓系統(tǒng)流暢的運(yùn)行?提高工作效率,更加完善的做好我們的工作?這些習(xí)慣是很有幫助的。 我們做軟件開(kāi)發(fā)的,大部分人都離不開(kāi)跟數(shù)據(jù)庫(kù)打交道,特別是erp開(kāi)發(fā)的,跟數(shù)據(jù)庫(kù)打交道更是頻繁,存儲(chǔ)過(guò)程動(dòng)不動(dòng)就是上千行,如果數(shù)據(jù)量大,人員流動(dòng)大,那么我們還能保證下一段時(shí)間系統(tǒng)還能流暢的運(yùn)行嗎?我們還能保證下一個(gè)人能看懂我們的存儲(chǔ)過(guò)程嗎?那么我結(jié)合公司平時(shí)的培訓(xùn)和平時(shí)個(gè)人工作經(jīng)驗(yàn)和大家分享一下,希望對(duì)大家有幫助。 要知道sql語(yǔ)句,我想我們有必要知道sqlserver查

2、詢(xún)分析器怎么執(zhí)行我們sql語(yǔ)句的,我們很多人會(huì)看執(zhí)行計(jì)劃,或者用profile來(lái)監(jiān)視和調(diào)優(yōu)查詢(xún)語(yǔ)句或者存儲(chǔ)過(guò)程慢的原因,但是如果我們知道查詢(xún)分析器的執(zhí)行邏輯順序,下手的時(shí)候就胸有成竹,那么下手是不是有把握點(diǎn)呢? 1查詢(xún)的邏輯執(zhí)行順序 FROM? ??JOIN????ON? WHERE? GROUP?BY? WITH?{cube | rollup} HAVING?

3、ion> SELECT???DISTINCT??? ORDER BY? 標(biāo)準(zhǔn)的SQL 的解析順序?yàn)? (1).FROM 子句 組裝來(lái)自不同數(shù)據(jù)源的數(shù)據(jù) (2).WHERE 子句 基于指定的條件對(duì)記錄進(jìn)行篩選 (3).GROUP BY 子句 將數(shù)據(jù)劃分為多個(gè)分組 (4).使用聚合函數(shù)進(jìn)行計(jì)算 (5).使用HAVING子句篩選分組 (6).計(jì)算所有的表達(dá)式 (7).使用ORDER BY對(duì)結(jié)果集進(jìn)行排序 2執(zhí)行順序 1.FROM:對(duì)FRO

4、M子句中前兩個(gè)表執(zhí)行笛卡爾積生成虛擬表vt1 2.ON:對(duì)vt1表應(yīng)用ON篩選器只有滿(mǎn)足< join_condition> 為真的行才被插入vt2 3.OUTER(join):如果指定了 OUTER JOIN保留表(preserved table)中未找到的行將行作為外部行添加到vt2 生成t3如果from包含兩個(gè)以上表則對(duì)上一個(gè)聯(lián)結(jié)生成的結(jié)果表和下一個(gè)表重復(fù)執(zhí)行步驟和步驟直接結(jié)束 4.WHERE:對(duì)vt3應(yīng)用 WHERE 篩選器只有使< where_condition> 為true的行才被插入vt4 5.GROUP BY:按GROUP BY子句中的列列表對(duì)vt4中的行

5、分組生成vt5 6.CUBE|ROLLUP:把超組(supergroups)插入vt6 生成vt6 7.HAVING:對(duì)vt6應(yīng)用HAVING篩選器只有使< having_condition> 為true的組才插入vt7 8.SELECT:處理select列表產(chǎn)生vt8 9.DISTINCT:將重復(fù)的行從vt8中去除產(chǎn)生vt9 10.ORDER BY:將vt9的行按order by子句中的列列表排序生成一個(gè)游標(biāo)vc10 11.TOP:從vc10的開(kāi)始處選擇指定數(shù)量或比例的行生成vt11 并返回調(diào)用者 看到這里,那么用過(guò)linqtosql的語(yǔ)法有點(diǎn)相似啊

6、?如果我們我們了解了sqlserver執(zhí)行順序,那么我們就接下來(lái)進(jìn)一步養(yǎng)成日常sql好習(xí)慣,也就是在實(shí)現(xiàn)功能同時(shí)有考慮性能的思想,數(shù)據(jù)庫(kù)是能進(jìn)行集合運(yùn)算的工具,我們應(yīng)該盡量的利用這個(gè)工具,所謂集合運(yùn)算實(shí)際就是批量運(yùn)算,就是盡量減少在客戶(hù)端進(jìn)行大數(shù)據(jù)量的循環(huán)操作,而用SQL語(yǔ)句或者存儲(chǔ)過(guò)程代替。 3只返回需要的數(shù)據(jù) 返回?cái)?shù)據(jù)到客戶(hù)端至少需要數(shù)據(jù)庫(kù)提取數(shù)據(jù)、網(wǎng)絡(luò)傳輸數(shù)據(jù)、客戶(hù)端接收數(shù)據(jù)以及客戶(hù)端處理數(shù)據(jù)等環(huán)節(jié),如果返回不需要的數(shù)據(jù),就會(huì)增加服務(wù)器、網(wǎng)絡(luò)和客戶(hù)端的無(wú)效勞動(dòng),其害處是顯而易見(jiàn)的,避免這類(lèi)事件需要注意: A、橫向來(lái)看, (1)不要寫(xiě)SELECT *的語(yǔ)句,而是選擇

7、你需要的字段。 (2)當(dāng)在SQL語(yǔ)句中連接多個(gè)表時(shí), 請(qǐng)使用表的別名并把別名前綴于每個(gè)Column上.這樣一來(lái),就可以減少解析的時(shí)間并減少那些由Column歧義引起的語(yǔ)法錯(cuò)誤。 如有表table1(ID,col1)和table2 (ID,col2) Select A.ID, A.col1, B.col2 — Select A.ID, col1, col2 –不要這么寫(xiě),不利于將來(lái)程序擴(kuò)展 from table1 A inner join table2 B on A.ID=B.ID Where … B、縱向來(lái)看, (1)合理寫(xiě)WHERE子句,不要寫(xiě)沒(méi)有W

8、HERE的SQL語(yǔ)句。 (2) SELECT TOP N * –沒(méi)有WHERE條件的用此替代 4盡量少做重復(fù)的工作 A、控制同一語(yǔ)句的多次執(zhí)行,特別是一些基礎(chǔ)數(shù)據(jù)的多次執(zhí)行是很多程序員很少注意的。 B、減少多次的數(shù)據(jù)轉(zhuǎn)換,也許需要數(shù)據(jù)轉(zhuǎn)換是設(shè)計(jì)的問(wèn)題,但是減少次數(shù)是程序員可以做到的。 C、杜絕不必要的子查詢(xún)和連接表,子查詢(xún)?cè)趫?zhí)行計(jì)劃一般解釋成外連接,多余的連接表帶來(lái)額外的開(kāi)銷(xiāo)。 D、合并對(duì)同一表同一條件的多次UPDATE,比如 UPDATE?EMPLOYEE?SET?FNAME='HAIWER' WHERE?EMP_ID=' VPA30890F'?U

9、PDATE?EMPLOYEE?SET?LNAME='YANG' WHERE?EMP_ID=' VPA30890F' 這兩個(gè)語(yǔ)句應(yīng)該合并成以下一個(gè)語(yǔ)句 UPDATE?EMPLOYEE?SET?FNAME='HAIWER',LNAME='YANG'??WHERE?EMP_ID=' VPA30890F' E、UPDATE操作不要拆成DELETE操作+INSERT操作的形式,雖然功能相同,但是性能差別是很大的。 5注意臨時(shí)表和表變量的用法 在復(fù)雜系統(tǒng)中,臨時(shí)表和表變量很難避免,關(guān)于臨時(shí)表和表變量的用法,需要注意: A、如果語(yǔ)句很復(fù)雜,連接太多,可以考慮用臨時(shí)表和表變量分步

10、完成。 B、如果需要多次用到一個(gè)大表的同一部分?jǐn)?shù)據(jù),考慮用臨時(shí)表和表變量暫存這部分?jǐn)?shù)據(jù)。 C、如果需要綜合多個(gè)表的數(shù)據(jù),形成一個(gè)結(jié)果,可以考慮用臨時(shí)表和表變量分步匯總這多個(gè)表的數(shù)據(jù)。 D、其他情況下,應(yīng)該控制臨時(shí)表和表變量的使用。 E、關(guān)于臨時(shí)表和表變量的選擇,很多說(shuō)法是表變量在內(nèi)存,速度快,應(yīng)該首選表變量,但是在實(shí)際使用中發(fā)現(xiàn), (1)主要考慮需要放在臨時(shí)表的數(shù)據(jù)量,在數(shù)據(jù)量較多的情況下,臨時(shí)表的速度反而更快。 (2)執(zhí)行時(shí)間段與預(yù)計(jì)執(zhí)行時(shí)間(多長(zhǎng)) F、關(guān)于臨時(shí)表產(chǎn)生使用SELECT INTO和CREATE TABLE + INSERT INTO的

11、選擇,一般情況下, SELECT INTO會(huì)比CREATE TABLE + INSERT INTO的方法快很多, 但是SELECT INTO會(huì)鎖定TEMPDB的系統(tǒng)表SYSOBJECTS、SYSINDEXES、SYSCOLUMNS,在多用戶(hù)并發(fā)環(huán)境下,容易阻塞其他進(jìn)程 所以我的建議是,在并發(fā)系統(tǒng)中,盡量使用CREATE TABLE + INSERT INTO,而大數(shù)據(jù)量的單個(gè)語(yǔ)句使用中,使用SELECT INTO。 6子查詢(xún)的用法(1) 子查詢(xún)是一個(gè) SELECT 查詢(xún),它嵌套在 SELECT、INSERT、UPDATE、DELETE 語(yǔ)句或其它子查詢(xún)中。 任何允許

12、使用表達(dá)式的地方都可以使用子查詢(xún),子查詢(xún)可以使我們的編程靈活多樣,可以用來(lái)實(shí)現(xiàn)一些特殊的功能。但是在性能上,往往一個(gè)不合適的子查詢(xún)用法會(huì)形成一個(gè)性能瓶頸。如果子查詢(xún)的條件中使用了其外層的表的字段,這種子查詢(xún)就叫作相關(guān)子查詢(xún)。 相關(guān)子查詢(xún)可以用IN、NOT IN、EXISTS、NOT EXISTS引入。 關(guān)于相關(guān)子查詢(xún),應(yīng)該注意: (1) A、NOT IN、NOT EXISTS的相關(guān)子查詢(xún)可以改用LEFT JOIN代替寫(xiě)法。 比如: ? SELECT PUB_NAME FROM PUBLISHERS WHERE PUB_ID NOT IN (SELECT PUB_I

13、D FROM TITLES WHERE TYPE = 'BUSINESS') 可以改寫(xiě)成: ? SELECT A.PUB_NAME FROM PUBLISHERS A LEFT JOIN TITLES B ON B.TYPE = 'BUSINESS' AND A.PUB_ID=B. PUB_ID WHERE B.PUB_ID IS NULL (2) SELECT?TITLE?FROM?TITLES WHERE?NOT?EXISTS (SELECT?TITLE_ID?FROM?SALES WHERE?TITLE_ID = TITLES.TITLE_ID) 可以

14、改寫(xiě)成: SELECT?TITLE FROM?TITLES?LEFT JOIN?SALES ON?SALES.TITLE_ID = TITLES.TITLE_ID WHERE?SALES.TITLE_ID?IS?NULL B、 如果保證子查詢(xún)沒(méi)有重復(fù) ,IN、EXISTS的相關(guān)子查詢(xún)可以用INNER JOIN 代替。比如: SELECT?PUB_NAME FROM?PUBLISHERS WHERE?PUB_ID?IN (SELECT?PUB_ID FROM?TITLES WHERE?TYPE?=?'BUSINESS') 可以改寫(xiě)成: SELECT?

15、A.PUB_NAME --SELECT?DISTINCT?A.PUB_NAME FROM?PUBLISHERS A?INNER JOIN?TITLES B ON?B.TYPE?=?'BUSINESS'?AND A.PUB_ID=B. PUB_ID (3) C、 IN的相關(guān)子查詢(xún)用EXISTS代替,比如 SELECT?PUB_NAME?FROM?PUBLISHERS WHERE?PUB_ID?IN (SELECT?PUB_ID?FROM?TITLES?WHERE?TYPE?=?'BUSINESS') 可以用下面語(yǔ)句代替: SELECT?PUB_NAME?F

16、ROM?PUBLISHERS?WHERE?EXISTS (SELECT?1?FROM?TITLES?WHERE?TYPE?=?'BUSINESS'?AND PUB_ID= PUBLISHERS.PUB_ID) D、不要用COUNT(*)的子查詢(xún)判斷是否存在記錄,最好用LEFT JOIN或者EXISTS,比如有人寫(xiě)這樣的語(yǔ)句: SELECT?JOB_DESC?FROM?JOBS WHERE?(SELECT COUNT(*)?FROM?EMPLOYEE?WHERE?        JOB_ID=JOBS.JOB_ID)=0 應(yīng)該改成: SELECT?JOBS.JOB_

17、DESC?FROM?JOBS?LEFT JOIN?EMPLOYEE ON?EMPLOYEE.JOB_ID=JOBS.JOB_ID WHERE?EMPLOYEE.EMP_ID?IS?NULL SELECT?JOB_DESC?FROM?JOBS WHERE?(SELECT COUNT(*)?FROM?EMPLOYEE?WHERE?  JOB_ID=JOBS.JOB_ID)<>0 應(yīng)該改成: SELECT?JOB_DESC?FROM?JOBS WHERE?EXISTS?(SELECT?1?FROM?EMPLOYEE?WHERE?JOB_ID=JOBS.JOB_ID)

18、7盡量使用索引 建立索引后,并不是每個(gè)查詢(xún)都會(huì)使用索引,在使用索引的情況下,索引的使用效率也會(huì)有很大的差別。只要我們?cè)诓樵?xún)語(yǔ)句中沒(méi)有強(qiáng)制指定索引, 索引的選擇和使用方法是SQLSERVER的優(yōu)化器自動(dòng)作的選擇,而它選擇的根據(jù)是查詢(xún)語(yǔ)句的條件以及相關(guān)表的統(tǒng)計(jì)信息,這就要求我們?cè)趯?xiě)SQL 語(yǔ)句的時(shí)候盡量使得優(yōu)化器可以使用索引。為了使得優(yōu)化器能高效使用索引,寫(xiě)語(yǔ)句的時(shí)候應(yīng)該注意: (1) A、不要對(duì)索引字段進(jìn)行運(yùn)算,而要想辦法做變換,比如 SELECT?ID?FROM?T?WHERE?NUM/2=100 應(yīng)改為: SELECT?ID?FROM?T?WHERE?NU

19、M=100*2 SELECT?ID?FROM?T?WHERE?NUM/2=NUM1 如果NUM有索引應(yīng)改為: SELECT?ID?FROM?T?WHERE?NUM=NUM1*2 如果NUM1有索引則不應(yīng)該改。 (2) 發(fā)現(xiàn)過(guò)這樣的語(yǔ)句: SELECT 年,月,金額 FROM 結(jié)余表 WHERE 100*年+月=2010*100+10 改為: SELECT 年,月,金額 FROM 結(jié)余表 WHERE 年=2010 AND月=10 B、 不要對(duì)索引字段進(jìn)行格式轉(zhuǎn)換 日期字段的例子: WHERE CONVERT(VARCHAR(10), 日期字

20、段,120)=’2010-07-15′ 應(yīng)該改為 WHERE日期字段〉=’2010-07-15′ AND 日期字段 ISNULL轉(zhuǎn)換的例子: WHERE ISNULL(字段,”)<>”應(yīng)改為:WHERE字段<>” WHERE ISNULL(字段,”)=”不應(yīng)修改 WHERE ISNULL(字段,’F’) =’T’應(yīng)改為: WHERE字段=’T’ WHERE ISNULL(字段,’F’)<>’T’不應(yīng)修改 (3) C、 不要對(duì)索引字段使用函數(shù) WHERE LEFT(NAME, 3)=’ABC’ 或者WHERE SUBSTRING(NAME,1, 3

21、)=’ABC’ 應(yīng)改為: WHERE NAME LIKE ‘ABC%’ 日期查詢(xún)的例子: WHERE DATEDIFF(DAY, 日期,’2010-06-30′)=0 應(yīng)改為:WHERE 日期>=’2010-06-30′ AND 日期 WHERE DATEDIFF(DAY, 日期,’2010-06-30′)>0 應(yīng)改為:WHERE 日期 WHERE DATEDIFF(DAY, 日期,’2010-06-30′)>=0 應(yīng)改為:WHERE 日期 WHERE DATEDIFF(DAY, 日期,’2010-06-30′)   應(yīng)改為:WHERE 日期>=’201

22、0-07-01′ WHERE DATEDIFF(DAY, 日期,’2010-06-30′) 應(yīng)改為:WHERE 日期>=’2010-06-30′ D、不要對(duì)索引字段進(jìn)行多字段連接 比如: WHERE FAME+ ‘. ‘+LNAME=’HAIWEI.YANG’ 應(yīng)改為: WHERE FNAME=’HAIWEI’ AND LNAME=’YANG’ 8多表連接的連接條件對(duì)索引的選擇有著重要的意義,所以我們?cè)趯?xiě)連接條件條件的時(shí)候需要特別注意 A、多表連接的時(shí)候,連接條件必須寫(xiě)全,寧可重復(fù),不要缺漏。 B、連接條件盡量使用聚集索引 C、注意ON、W

23、HERE和HAVING部分條件的區(qū)別 ON是最先執(zhí)行, WHERE次之,HAVING最后,因?yàn)镺N是先把不符合條件的記錄過(guò)濾后才進(jìn)行統(tǒng)計(jì),它就可以減少中間運(yùn)算要處理的數(shù)據(jù),按理說(shuō)應(yīng)該速度是最快的,WHERE也應(yīng)該比 HAVING快點(diǎn)的,因?yàn)樗^(guò)濾數(shù)據(jù)后才進(jìn)行SUM,在兩個(gè)表聯(lián)接時(shí)才用ON的,所以在一個(gè)表的時(shí)候,就剩下WHERE跟HAVING比較了 考慮聯(lián)接優(yōu)先順序: (1)INNER JOIN (2)LEFT JOIN (注:RIGHT JOIN 用 LEFT JOIN 替代) (3)CROSS JOIN 其它注意和了解的地方有: A、在IN后面值的列表中,將

24、出現(xiàn)最頻繁的值放在最前面,出現(xiàn)得最少的放在最后面,減少判斷的次數(shù) B、注意UNION和UNION ALL的區(qū)別。–允許重復(fù)數(shù)據(jù)用UNION ALL好 C、注意使用DISTINCT,在沒(méi)有必要時(shí)不要用 D、TRUNCATE TABLE 與 DELETE 區(qū)別 E、減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù) 還有就是我們寫(xiě)存儲(chǔ)過(guò)程,如果比較長(zhǎng)的話(huà),最后用標(biāo)記符標(biāo)開(kāi),因?yàn)檫@樣可讀性很好,即使語(yǔ)句寫(xiě)的不怎么樣但是語(yǔ)句工整,C# 有region sql我比較喜歡用的就是 –startof 查詢(xún)?cè)诼毴藬?shù) sql語(yǔ)句 –end of 正式機(jī)器上我們一般不能隨便調(diào)試程序,但是很多

25、時(shí)候程序在我們本機(jī)上沒(méi)問(wèn)題,但是進(jìn)正式系統(tǒng)就有問(wèn)題,但是我們又不能隨便在正式機(jī)器上操作,那么怎么辦呢?我們可以用回滾來(lái)調(diào)試我們的存儲(chǔ)過(guò)程或者是sql語(yǔ)句,從而排錯(cuò)。 BEGIN TRAN UPDATE a SET 字段=” ROLLBACK 作業(yè)存儲(chǔ)過(guò)程我一般會(huì)加上下面這段,這樣檢查錯(cuò)誤可以放在存儲(chǔ)過(guò)程,如果執(zhí)行錯(cuò)誤回滾操作,但是如果程序里面已經(jīng)有了事務(wù)回滾,那么存儲(chǔ)過(guò)程就不要寫(xiě)事務(wù)了,這樣會(huì)導(dǎo)致事務(wù)回滾嵌套降低執(zhí)行效率,但是我們很多時(shí)候可以把檢查放在存儲(chǔ)過(guò)程里,這樣有利于我們解讀這個(gè)存儲(chǔ)過(guò)程,和排錯(cuò)。 BEGIN TRANSACTION –事務(wù)回滾開(kāi)始 –檢查報(bào)錯(cuò) IF ( @@ERROR > 0 ) BEGIN –回滾操作 ROLLBACK TRANSACTION RAISERROR(‘刪除工作報(bào)告錯(cuò)誤’, 16, 3) RETURN END –結(jié)束事務(wù) COMMIT TRANSACTION 好久沒(méi)有寫(xiě)博文了,工作項(xiàng)目一個(gè)接一個(gè),再加上公司人員流動(dòng),新人很多事情接不下來(lái),加班成了家常便飯,倉(cāng)促寫(xiě)下這些希望對(duì)大家有幫助,不對(duì)的也歡迎指點(diǎn),交流互相提高。

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲