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

ARTICLE DETAIL

資訊詳情

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

Oracle圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì):從ER圖到存儲(chǔ)過(guò)程的落地實(shí)踐

Oracle圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì):從ER圖到存儲(chǔ)過(guò)程的落地實(shí)踐 簡(jiǎn)介這份文檔是面向 Oracle 數(shù)據(jù)庫(kù)學(xué)習(xí)者的圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)完整方案適合高校數(shù)據(jù)庫(kù)課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)或自學(xué)參考。文檔從系統(tǒng)分析入手依次展開(kāi)需求分析、設(shè)計(jì)目標(biāo)與項(xiàng)目規(guī)劃并系統(tǒng)介紹數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)與物理結(jié)構(gòu)設(shè)計(jì)再落到表空間、數(shù)據(jù)表、視圖、序列、索引、存儲(chǔ)過(guò)程和觸發(fā)器的創(chuàng)建管理以及數(shù)據(jù)查詢(xún)、更新、合并等訪問(wèn)操作幾乎覆蓋數(shù)據(jù)庫(kù)設(shè)計(jì)全流程。資源僅包含1個(gè)doc文件共319KB文件雖小但目錄結(jié)構(gòu)完整從系統(tǒng)分析到數(shù)據(jù)庫(kù)訪問(wèn)共四章可作為數(shù)據(jù)庫(kù)課程設(shè)計(jì)的模板與實(shí)驗(yàn)參考。目前已有281人學(xué)習(xí)下載適合需要快速理解 Oracle 數(shù)據(jù)庫(kù)建模與實(shí)現(xiàn)步驟的初學(xué)者。文檔整體邏輯清晰尤其適合作為 Oracle 課程設(shè)計(jì)的起步參考。1. Oracle圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)這不是一張表是一套數(shù)據(jù)契約oracle圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)這六個(gè)字放進(jìn)需求文檔里是一句話(huà)落到你桌面上就是一套數(shù)據(jù)契約。它解決的不是“Oracle能不能跑圖書(shū)館業(yè)務(wù)”而是借書(shū)、還書(shū)、續(xù)借、逾期、統(tǒng)計(jì)這些動(dòng)作如何對(duì)應(yīng)到表結(jié)構(gòu)、約束、索引、存儲(chǔ)過(guò)程和分頁(yè)查詢(xún)里。適合正在做課程設(shè)計(jì)、要給別人交付設(shè)計(jì)文檔、或者接手老系統(tǒng)準(zhǔn)備重構(gòu)的工程師。設(shè)計(jì)文檔里值錢(qián)的不是ER圖那張圖而是每個(gè)字段的長(zhǎng)度、每個(gè)約束的邊界、每條SQL在特定數(shù)據(jù)量下能不能走對(duì)執(zhí)行計(jì)劃。2. 先建模再建庫(kù)從ER圖到Oracle數(shù)據(jù)字典的落地映射設(shè)計(jì)文檔的第一步永遠(yuǎn)是實(shí)體關(guān)系模型。很多教程畫(huà)完ER圖直接開(kāi)寫(xiě)CREATE TABLE中間跳過(guò)了兩件事實(shí)體之間的約束關(guān)系怎么落到數(shù)據(jù)庫(kù)對(duì)象上以及設(shè)計(jì)完怎么回頭看Oracle數(shù)據(jù)字典驗(yàn)證一致性。這兩件事不做文檔就是墻上的畫(huà)庫(kù)里是另一套。2.1 核心實(shí)體與關(guān)系讀者、圖書(shū)、借閱三張主表不能省圖書(shū)管理系統(tǒng)再?gòu)?fù)雜主干也是三張業(yè)務(wù)表讀者表、圖書(shū)表、借閱記錄表。讀者和圖書(shū)之間是多對(duì)多關(guān)系一個(gè)讀者可以借多本書(shū)一本書(shū)可以被不同讀者在多個(gè)時(shí)間點(diǎn)借出所以借閱記錄不能直接掛在圖書(shū)表的某個(gè)字段下它必須是一張獨(dú)立的關(guān)系實(shí)體表。常見(jiàn)字段設(shè)計(jì)是這樣的實(shí)體核心字段約束/說(shuō)明讀者表reader_id, reader_no, name, user_type, statusreader_no 唯一user_type 區(qū)分學(xué)生/教師圖書(shū)表book_id, isbn, title, author, category_id, stockisbn 不唯一同書(shū)多名副本所以要 book_id借閱記錄borrow_id, reader_id, book_id, borrow_date, due_date, return_date外鍵指向讀者和圖書(shū)狀態(tài)字段控制生命周期最容易犯的錯(cuò)是把“讀者當(dāng)前借了哪本書(shū)”直接存成讀者表的一個(gè)字段比如 reader.current_book_id。這樣做的代價(jià)是續(xù)借和還書(shū)時(shí)要去改讀者表一次借三本書(shū)就沒(méi)法建模更談不上查歷史記錄。借閱記錄表一定只存一次借閱動(dòng)作的開(kāi)始和結(jié)束而不是“現(xiàn)狀”。設(shè)計(jì)文檔里還應(yīng)寫(xiě)明業(yè)務(wù)規(guī)則借閱周期是30天還是15天能否續(xù)借逾期每天罰多少。這些規(guī)則最后要落成CHECK約束或存儲(chǔ)過(guò)程里的判斷不能只寫(xiě)在文檔的“需求分析”段落里。Oracle做這件事的優(yōu)勢(shì)是約束和事務(wù)都由數(shù)據(jù)庫(kù)兜住應(yīng)用層偶然漏掉一次判斷數(shù)據(jù)也不會(huì)錯(cuò)。2.2 用數(shù)據(jù)字典反向校驗(yàn)設(shè)計(jì)USER_TABLES 和 USER_CONSTRAINTS 的用途設(shè)計(jì)文檔寫(xiě)得再整齊實(shí)際庫(kù)里有沒(méi)有照著建要靠Oracle數(shù)據(jù)字典來(lái)驗(yàn)證。我們常說(shuō)“Oracle數(shù)據(jù)庫(kù)”和“數(shù)據(jù)庫(kù)設(shè)計(jì)”之間的橋梁就是USER_TABLES、USER_TAB_COLUMNS、USER_CONSTRAINTS這些視圖。每次交付前我都會(huì)跑下面這段SQL把文檔里的表名單和執(zhí)行結(jié)果對(duì)一遍-- 查看當(dāng)前用戶(hù)下所有業(yè)務(wù)表num_rows 是統(tǒng)計(jì)信息里的行數(shù)不代表實(shí)時(shí)數(shù)據(jù) SELECT table_name, num_rows, last_analyzed FROM user_tables ORDER BY table_name; -- 查看約束名、類(lèi)型、狀態(tài)重點(diǎn)看 R 外鍵是否生效 SELECT constraint_name, constraint_type, table_name, status, r_constraint_name FROM user_constraints WHERE table_name IN (READER, BOOK, BORROW_RECORD) ORDER BY table_name, constraint_name;說(shuō)明一下第二段SQL里的constraint_typeP代表主鍵R代表外鍵U代表唯一鍵C代表CHECK約束。設(shè)計(jì)文檔里寫(xiě)了“借閱記錄必須引用存在的讀者”庫(kù)里就對(duì)應(yīng)到BORROW_RECORD上的外鍵約束狀態(tài)必須是ENABLED。如果實(shí)際庫(kù)里沒(méi)有這個(gè)外鍵哪怕是程序一直正常驗(yàn)收時(shí)DBA看一眼數(shù)據(jù)字典就翻車(chē)了。另一個(gè)實(shí)用習(xí)慣是給表加注釋和字段注釋。Oracle里的COMMENT ON TABLE和COMMENT ON COLUMN會(huì)把說(shuō)明寫(xiě)進(jìn)數(shù)據(jù)字典查詢(xún)時(shí)通過(guò)USER_TAB_COMMENTS、USER_COL_COMMENTS就能看到。文檔能丟數(shù)據(jù)字典不會(huì)丟。2.3 主鍵方案序列加觸發(fā)器還是直接用 Oracle 12c 標(biāo)識(shí)列主鍵生成是圖書(shū)管理系統(tǒng)設(shè)計(jì)里最常見(jiàn)的分叉路。Oracle 12c以前標(biāo)準(zhǔn)做法是序列加觸發(fā)器常見(jiàn)于很多老項(xiàng)目。12c以后可以用GENERATED BY DEFAULT AS IDENTITYOracle 19c單實(shí)例也一樣支持。兩種我都用過(guò)建議按目標(biāo)庫(kù)版本選。-- 方式一Oracle 12c 起支持建表直接聲明標(biāo)識(shí)列 CREATE TABLE book ( book_id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, isbn VARCHAR2(20) NOT NULL, title VARCHAR2(200) NOT NULL, author VARCHAR2(100), category_id NUMBER(4), stock NUMBER(6) DEFAULT 1, created_time DATE DEFAULT SYSDATE ); -- 方式二老庫(kù)兼容用序列 觸發(fā)器 CREATE SEQUENCE seq_book_id START WITH 1 INCREMENT BY 1 NOCACHE; CREATE OR REPLACE TRIGGER tri_book_id BEFORE INSERT ON book FOR EACH ROW WHEN (NEW.book_id IS NULL) BEGIN :NEW.book_id : seq_book_id.NEXTVAL; END; /需要注意標(biāo)識(shí)列和序列生成的數(shù)字都可能有間隙。比如事務(wù)回滾或觸發(fā)器執(zhí)行失敗序列已經(jīng)取走了一個(gè)值不會(huì)回填。所以業(yè)務(wù)規(guī)則上不能把book_id當(dāng)成“第幾本書(shū)”的編號(hào)展示給讀者它只是內(nèi)部主鍵。對(duì)外編號(hào)應(yīng)該用獨(dú)立的book_no字段。我更推薦在目標(biāo)版本是Oracle 19c或更高時(shí)直接使用IDENTITY列代碼更短少一個(gè)觸發(fā)器。但如果你交付的文檔里寫(xiě)了“兼容11g”那老老實(shí)實(shí)保留序列和觸發(fā)器。設(shè)計(jì)文檔必須把版本選擇寫(xiě)明確不能寫(xiě)“使用Oracle數(shù)據(jù)庫(kù)”就完事。3. 從設(shè)計(jì)文檔到可運(yùn)行庫(kù)建表語(yǔ)句、初始化數(shù)據(jù)與權(quán)限隔離設(shè)計(jì)文檔的驗(yàn)收現(xiàn)場(chǎng)不是看有沒(méi)有一張ER圖而是看能不能在干凈的環(huán)境里按文檔步驟把庫(kù)建出來(lái)。真正可落地的設(shè)計(jì)文檔建表語(yǔ)句必須能復(fù)制執(zhí)行初始化數(shù)據(jù)必須能重復(fù)跑權(quán)限必須和業(yè)務(wù)賬號(hào)分離。3.1 建表語(yǔ)句怎么寫(xiě)才算過(guò)得了 DBA 的眼DBA看建表語(yǔ)句最在意三件事字段類(lèi)型是否合理約束是否完整是否預(yù)留了擴(kuò)展空間。很多入門(mén)項(xiàng)目把圖書(shū)價(jià)格用VARCHAR2存把借閱狀態(tài)用中文“未還”/“已還”存我在評(píng)審時(shí)都會(huì)打回。Oracle里應(yīng)該用NUMBER存數(shù)值用CHAR(1)存狀態(tài)碼再用CHECK約束把取值范圍鎖死。-- 讀者表 CREATE TABLE reader ( reader_id NUMBER(8) NOT NULL, reader_no VARCHAR2(20) NOT NULL, name VARCHAR2(50) NOT NULL, phone VARCHAR2(20), email VARCHAR2(100), user_type CHAR(1) DEFAULT 0 NOT NULL, -- 0學(xué)生 1教師 status CHAR(1) DEFAULT 1 NOT NULL, -- 1正常 0凍結(jié) created_time DATE DEFAULT SYSDATE NOT NULL, CONSTRAINT pk_reader PRIMARY KEY (reader_id), CONSTRAINT uk_reader_no UNIQUE (reader_no), CONSTRAINT ck_reader_status CHECK (status IN (0, 1)), CONSTRAINT ck_reader_type CHECK (user_type IN (0, 1)) ); -- 借閱記錄表 CREATE TABLE borrow_record ( borrow_id NUMBER(10) NOT NULL, reader_id NUMBER(8) NOT NULL, book_id NUMBER(8) NOT NULL, borrow_date DATE DEFAULT SYSDATE NOT NULL, due_date DATE NOT NULL, return_date DATE, renew_count NUMBER(2) DEFAULT 0 NOT NULL, status CHAR(1) DEFAULT B NOT NULL, -- B借閱中 R已歸還 CONSTRAINT pk_borrow PRIMARY KEY (borrow_id), CONSTRAINT fk_borrow_reader FOREIGN KEY (reader_id) REFERENCES reader(reader_id), CONSTRAINT fk_borrow_book FOREIGN KEY (book_id) REFERENCES book(book_id), CONSTRAINT ck_borrow_status CHECK (status IN (B, R)) );這里的VARCHAR2長(zhǎng)度不是隨便定的。phone給20位是要容納手機(jī)號(hào)前面帶國(guó)家碼VARCHAR2單位是字符不是字節(jié)所以中文字段也放得下。status列用CHAR(1)而不是NUMBER是為了后面代碼里讀寫(xiě)一眼能看出含義也避免狀態(tài)碼和數(shù)字主鍵混淆。due_date是借出時(shí)算出來(lái)的應(yīng)還日期不依賴(lài)應(yīng)用層臨時(shí)計(jì)算。借閱表上的外鍵是必須的。有人為了插入性能去掉外鍵結(jié)果是應(yīng)用層代碼私自插入一條不存在的reader_id查報(bào)表時(shí)關(guān)聯(lián)出空值還得回來(lái)補(bǔ)臟數(shù)據(jù)。這個(gè)教訓(xùn)我見(jiàn)過(guò)不止一次。3.2 初始化數(shù)據(jù)管理員賬號(hào)、圖書(shū)分類(lèi)、測(cè)試數(shù)據(jù)怎么造設(shè)計(jì)文檔一般會(huì)留一章“系統(tǒng)初始數(shù)據(jù)”。常見(jiàn)做法是建一張圖書(shū)分類(lèi)字典表再放幾個(gè)管理員賬號(hào)。管理員賬號(hào)不要和讀者表混在一起業(yè)務(wù)上兩者權(quán)限不同硬塞進(jìn)同一張表會(huì)讓角色控制非常別扭。-- 圖書(shū)分類(lèi)字典 CREATE TABLE book_category ( category_id NUMBER(4) NOT NULL, category_name VARCHAR2(100) NOT NULL, parent_id NUMBER(4), CONSTRAINT pk_book_category PRIMARY KEY (category_id) ); -- 管理員表 CREATE TABLE sys_user ( user_id NUMBER(8) NOT NULL, login_name VARCHAR2(50) NOT NULL, password VARCHAR2(200) NOT NULL, -- 存哈希值不存明文 user_name VARCHAR2(50) NOT NULL, status CHAR(1) DEFAULT 1 NOT NULL, CONSTRAINT pk_sys_user PRIMARY KEY (user_id), CONSTRAINT uk_sys_user_login UNIQUE (login_name) );初始化數(shù)據(jù)時(shí)我最煩的是腳本不能重復(fù)執(zhí)行。第一次跑成功第二次跑報(bào)主鍵沖突。所以初始化腳本里我習(xí)慣用MERGE而不是裸INSERT。MERGE的意思是“存在就更新不存在就插入”。比如初始分類(lèi)MERGE INTO book_category t USING (SELECT 1 AS category_id, 文學(xué) AS category_name FROM dual) s ON (t.category_id s.category_id) WHEN NOT MATCHED THEN INSERT (category_id, category_name) VALUES (s.category_id, s.category_name);這個(gè)寫(xiě)法看著啰嗦但在演示環(huán)境反復(fù)初始化時(shí)就是后悔藥。測(cè)試數(shù)據(jù)也一樣造讀者、造圖書(shū)、造借閱記錄腳本跑三遍都不會(huì)重復(fù)。Oracle的dual表在這里派上大用場(chǎng)它保證每一條MERGE只針對(duì)一條初始記錄。3.3 權(quán)限與同義詞業(yè)務(wù)賬號(hào)和 DBA 賬號(hào)的邊界很多課程設(shè)計(jì)圖省事全程用system或者sys建表。這樣做在單機(jī)練習(xí)環(huán)境沒(méi)問(wèn)題一旦要交付到真實(shí)項(xiàng)目等保和審計(jì)會(huì)直接拒絕。業(yè)務(wù)應(yīng)用應(yīng)該連一個(gè)只擁有業(yè)務(wù)表權(quán)限的賬號(hào)而不是sys。-- 創(chuàng)建業(yè)務(wù)管理賬號(hào) CREATE USER library_mgr IDENTIFIED BY 你的復(fù)雜密碼; GRANT CONNECT, RESOURCE TO library_mgr; GRANT UNLIMITED TABLESPACE TO library_mgr; -- 創(chuàng)建只讀報(bào)表賬號(hào) CREATE USER library_report IDENTIFIED BY 報(bào)表賬號(hào)密碼; GRANT CONNECT TO library_report; GRANT SELECT ON library_mgr.reader TO library_report; GRANT SELECT ON library_mgr.book TO library_report; GRANT SELECT ON library_mgr.borrow_record TO library_report;如果不想讓?xiě)?yīng)用側(cè)記住“l(fā)ibrary_mgr.book”這種帶模式名的寫(xiě)法可以建同義詞。Oracle里同義詞就是給對(duì)象起一個(gè)短別名應(yīng)用連接后能直接用BOOK訪問(wèn)。CREATE SYNONYM app_reader FOR library_mgr.reader; CREATE SYNONYM app_book FOR library_mgr.book;權(quán)限隔離的意義不只是安全。它還能讓你在賬號(hào)密碼泄露時(shí)快速定位影響范圍不需要把所有表都暴露給同一個(gè)連接。設(shè)計(jì)文檔里單獨(dú)寫(xiě)一節(jié)“權(quán)限矩陣”是很加分的部分。4. 圖書(shū)管理系統(tǒng)的Oracle查詢(xún)與存儲(chǔ)過(guò)程分頁(yè)、逾期、統(tǒng)計(jì)三件套設(shè)計(jì)文檔除了建表還要回答“功能怎么實(shí)現(xiàn)”。圖書(shū)管理系統(tǒng)里最高頻的功能就是查詢(xún)借閱記錄、處理還書(shū)、統(tǒng)計(jì)報(bào)表對(duì)應(yīng)到Oracle里就是分頁(yè)、存儲(chǔ)過(guò)程和常用函數(shù)。這部分寫(xiě)得越具體后面開(kāi)發(fā)越省事。4.1 分頁(yè)查詢(xún)ROWNUM陷阱與標(biāo)準(zhǔn)寫(xiě)法圖書(shū)列表、借閱記錄列表都要分頁(yè)。很多入門(mén)的Oracle寫(xiě)法是這樣先ORDER BY再ROWNUM結(jié)果發(fā)現(xiàn)前幾頁(yè)正常越翻越亂。原因是ROWNUM在排序之前就給結(jié)果集編號(hào)了直接加ROWNUM條件會(huì)先截?cái)嘣倥判?。穩(wěn)妥的分頁(yè)寫(xiě)法是用ROW_NUMBER窗口函數(shù)生成行號(hào)外層再過(guò)濾。-- 任意 Oracle 版本可用的分頁(yè)寫(xiě)法 SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.borrow_date DESC) AS rn FROM borrow_record t WHERE t.status B ) WHERE rn BETWEEN 1 AND 20;這里第一次查詢(xún)先按借出日期倒序再給每行生成從1開(kāi)始的序號(hào)外層截取第1到20行。頁(yè)碼變了BETWEEN后面的兩個(gè)數(shù)字就跟著變。Oracle 12c以上可以用OFFSET FETCH比如OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY但為了兼容舊庫(kù)我一般保留ROW_NUMBER寫(xiě)法。分頁(yè)查詢(xún)還有一個(gè)隱藏問(wèn)題如果借閱記錄表達(dá)到幾十萬(wàn)行排序字段必須有索引否則翻到后面的頁(yè)碼會(huì)明顯變慢。這個(gè)坑在下一章單獨(dú)說(shuō)。4.2 存儲(chǔ)過(guò)程還書(shū)業(yè)務(wù)和逾期罰款別讓?xiě)?yīng)用層算還書(shū)不是一個(gè)UPDATE就能完成的。它要改借閱記錄狀態(tài)、算應(yīng)還日期和實(shí)還日期的差值、可能生成罰款。這些邏輯放在存儲(chǔ)過(guò)程里比放在PHP、Java或者任何應(yīng)用代碼里都更安全。因?yàn)閿?shù)據(jù)庫(kù)事務(wù)邊界清晰一個(gè)存儲(chǔ)過(guò)程就是一個(gè)原子操作。CREATE OR REPLACE PROCEDURE proc_return_book ( p_borrow_id IN NUMBER, p_operator IN VARCHAR2, p_fine OUT NUMBER ) IS v_due_date DATE; v_overdue_days NUMBER; BEGIN SELECT due_date INTO v_due_date FROM borrow_record WHERE borrow_id p_borrow_id AND status B FOR UPDATE; UPDATE borrow_record SET return_date SYSDATE, status R, operator p_operator WHERE borrow_id p_borrow_id; v_overdue_days : TRUNC(SYSDATE) - TRUNC(v_due_date); IF v_overdue_days 0 THEN p_fine : v_overdue_days * 0.1; ELSE p_fine : 0; END IF; COMMIT; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE_APPLICATION_ERROR(-20001, 借閱記錄不存在或已歸還); END proc_return_book; /說(shuō)明幾點(diǎn)。FOR UPDATE是給這條借閱記錄加鎖防止兩個(gè)人同時(shí)點(diǎn)擊還書(shū)。TRUNC(SYSDATE)把時(shí)間歸零只按天數(shù)算不會(huì)因?yàn)椤岸噙€了幾個(gè)小時(shí)”多罰一天錢(qián)。p_fine是OUT參數(shù)應(yīng)用層拿到它展示“本次還書(shū)產(chǎn)生罰款”。Oracle存儲(chǔ)過(guò)程不難寫(xiě)難在參數(shù)命名和事務(wù)提交位置。我的習(xí)慣是存儲(chǔ)過(guò)程里只做業(yè)務(wù)不塞打印日志日志另寫(xiě)一張表。4.3 統(tǒng)計(jì)報(bào)表借閱排行、類(lèi)別分布和常用函數(shù)設(shè)計(jì)文檔最后總要配上幾個(gè)統(tǒng)計(jì)場(chǎng)景熱門(mén)圖書(shū)排行、讀者借閱次數(shù)、逾期清單。這里用到的Oracle函數(shù)并不多翻來(lái)覆去就是TRUNC、TO_CHAR、RANK、NVL、DECODE這幾個(gè)。網(wǎng)上搜“oracle函數(shù)大全及舉例”很容易看花眼但圖書(shū)管理系統(tǒng)里真正需要手寫(xiě)的是帶窗口函數(shù)的聚合查詢(xún)。-- 熱門(mén)圖書(shū)排行按借閱次數(shù)排名取前10 SELECT * FROM ( SELECT b.book_id, b.title, COUNT(*) AS borrow_count, RANK() OVER (ORDER BY COUNT(*) DESC) AS rank_no FROM borrow_record br JOIN book b ON b.book_id br.book_id WHERE br.status R GROUP BY b.book_id, b.title ) WHERE rank_no 10;RANK函數(shù)允許并列名次比如第三名有兩本書(shū)下個(gè)名次是第五名這符合大多數(shù)榜單預(yù)期。如果業(yè)務(wù)要求不許并列就換ROW_NUMBER。GROUP BY后面列必須和SELECT里的非聚合列一致這在Oracle里報(bào)錯(cuò)很直接看ORA-00979就能定位。再比如統(tǒng)計(jì)每個(gè)月的借閱量按TO_CHAR(borrow_date, YYYY-MM)分組即可SELECT TO_CHAR(borrow_date, YYYY-MM) AS borrow_month, COUNT(*) AS total_count FROM borrow_record GROUP BY TO_CHAR(borrow_date, YYYY-MM) ORDER BY borrow_month;到了這一步設(shè)計(jì)文檔就不再只是“表結(jié)構(gòu)說(shuō)明書(shū)”而是把查詢(xún)邏輯也定下來(lái)了。5. Oracle圖書(shū)管理系統(tǒng)避坑與排查從字符集、監(jiān)聽(tīng)到分頁(yè)慢查詢(xún)每個(gè)Oracle項(xiàng)目都有幾個(gè)固定坑位圖書(shū)管理系統(tǒng)也不例外。下面這幾條都是實(shí)操中容易踩的每條我都按“現(xiàn)象→原因→解決”寫(xiě)方便你直接對(duì)照。5.1 字符集不一致導(dǎo)致中文亂碼現(xiàn)象PL/SQL Developer里中文顯示正常Java應(yīng)用插入后查出來(lái)是問(wèn)號(hào)或者反過(guò)來(lái)客戶(hù)端看著是亂碼庫(kù)里其實(shí)是對(duì)的。原因數(shù)據(jù)庫(kù)字符集、客戶(hù)端NLS_LANG、應(yīng)用連接字符集三者不一致。最常見(jiàn)的是庫(kù)用了AL32UTF8客戶(hù)端還是ZHS16GBK或者服務(wù)端環(huán)境變量沒(méi)導(dǎo)入。解決先確認(rèn)數(shù)據(jù)庫(kù)字符集再用同一套字符集配置客戶(hù)端。SELECT USERENV(language) FROM dual;輸出類(lèi)似SIMPLIFIED CHINESE_CHINA.AL32UTF8。如果確認(rèn)庫(kù)是AL32UTF8Linux客戶(hù)端就設(shè)置export NLS_LANGAMERICAN_AMERICA.AL32UTF8Windows客戶(hù)端也要在系統(tǒng)環(huán)境變量里改成一致。建庫(kù)前最好就把字符集定成AL32UTF8換庫(kù)不是小事。5.2 監(jiān)聽(tīng)出問(wèn)題連接時(shí)快時(shí)慢甚至ORA-12541現(xiàn)象sqlplus登錄Oracle數(shù)據(jù)庫(kù)出現(xiàn)緩慢或者直接報(bào)ORA-12541、ORA-12537監(jiān)聽(tīng)服務(wù)無(wú)法啟動(dòng)按system用戶(hù)登錄沒(méi)有反應(yīng)。原因Oracle監(jiān)聽(tīng)依賴(lài)主機(jī)名解析。服務(wù)器hostname改過(guò)了/etc/hosts里沒(méi)有對(duì)應(yīng)條目或者監(jiān)聽(tīng)端口被防火墻擋住。還有一種常見(jiàn)原因是listener.log已經(jīng)漲到幾個(gè)G監(jiān)聽(tīng)日志寫(xiě)入慢連接自然跟著慢。解決按先后順序執(zhí)行下面三件事。# 檢查監(jiān)聽(tīng)狀態(tài) lsnrctl status # 看監(jiān)聽(tīng)日志是否異常 tail -n 200 $ORACLE_HOME/network/log/listener.log # hostname 對(duì)應(yīng)關(guān)系梳理 cat /etc/hosts如果hostname變了把127.0.0.1 主機(jī)名寫(xiě)進(jìn)/etc/hosts再用lsnrctl reload。如果日志過(guò)大可以定期清理或者在監(jiān)聽(tīng)配置里打開(kāi)日志輪轉(zhuǎn)。這個(gè)排查順序能覆蓋八成連接問(wèn)題。5.3 借閱記錄分頁(yè)越翻越慢執(zhí)行計(jì)劃走了全表掃描現(xiàn)象第一頁(yè)秒開(kāi)翻到100頁(yè)要等好幾秒EXPLAIN PLAN發(fā)現(xiàn)sort order by和table access by rowid后面跟著全表掃描。原因分頁(yè)主子段是borrow_date但沒(méi)有對(duì)應(yīng)索引。每次翻頁(yè)都要把所有符合條件的記錄抓出來(lái)排序再截取。數(shù)據(jù)量只有一萬(wàn)條時(shí)感覺(jué)不明顯十萬(wàn)條以后體感明顯。解決給排序和過(guò)濾條件建復(fù)合索引。CREATE INDEX idx_borrow_status_date ON borrow_record (status, borrow_date DESC);status列做前綴是因?yàn)閃HERE里先按狀態(tài)過(guò)濾再把borrow_date倒序拿出來(lái)排序。圖書(shū)管理系統(tǒng)里“正在借閱的記錄”通常只占少部分這個(gè)索引在還書(shū)和分頁(yè)場(chǎng)景都能用上。建完索引立刻看執(zhí)行計(jì)劃EXPLAIN PLAN FOR SELECT * FROM ( SELECT t.*, ROW_NUMBER() OVER (ORDER BY t.borrow_date DESC) rn FROM borrow_record t WHERE t.status B ) WHERE rn BETWEEN 1 AND 20; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);執(zhí)行計(jì)劃里出現(xiàn)INDEX RANGE SCAN就說(shuō)明索引生效了。5.4 觸發(fā)器里做太多事批量插入性能被拖垮現(xiàn)象單條插入正常用PL/SQL批量插入一萬(wàn)條圖書(shū)數(shù)據(jù)特別慢像卡住一樣。原因每一行觸發(fā)序列觸發(fā)器觸發(fā)器里還有多余的SELECT查詢(xún)和DBMS_OUTPUT行級(jí)觸發(fā)器被放大了一萬(wàn)倍。解決行級(jí)觸發(fā)器只做必要賦值不要查表不要打印輸出。如果要批量初始化測(cè)試數(shù)據(jù)關(guān)掉DBMS_OUTPUT或者直接放棄觸發(fā)器用IDENTITY列。-- 初始化大批量測(cè)試數(shù)據(jù)時(shí)先關(guān)掉會(huì)話(huà)輸出 SET SERVEROUTPUT OFF; DECLARE TYPE t_book_id IS TABLE OF NUMBER; v_ids t_book_id; BEGIN SELECT book_id BULK COLLECT INTO v_ids FROM book; -- 這里只是演示批量業(yè)務(wù)過(guò)程盡量用數(shù)組操作 END; /口訣是觸發(fā)器的代碼越短越好長(zhǎng)業(yè)務(wù)放存儲(chǔ)過(guò)程。6. 收尾給“數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn).doc”加一份能說(shuō)服驗(yàn)收的驗(yàn)證清單設(shè)計(jì)文檔寫(xiě)到最后我會(huì)單獨(dú)放一節(jié)“驗(yàn)證清單”不是空話(huà)而是能在新庫(kù)上重復(fù)執(zhí)行的檢查腳本。這樣驗(yàn)收方不用肉眼找跑一遍SQL就能確認(rèn)設(shè)計(jì)落地了。驗(yàn)證清單至少包含四類(lèi)檢查表是否存在、約束是否啟用、基礎(chǔ)數(shù)據(jù)是否完整、關(guān)鍵查詢(xún)是否能在合理時(shí)間返回。下面這段SQL是我常用的開(kāi)場(chǎng)SELECT READER AS table_name, COUNT(*) AS cnt FROM reader UNION ALL SELECT BOOK, COUNT(*) FROM book UNION ALL SELECT BORROW_RECORD, COUNT(*) FROM borrow_record;如果三張表都是0行說(shuō)明初始化腳本沒(méi)跑。如果借閱記錄有值但讀者表沒(méi)有說(shuō)明外鍵可能沒(méi)生效回到USER_CONSTRAINTS查。最后一件事是給連接賬號(hào)做一次最小權(quán)限確認(rèn)。用報(bào)表賬號(hào)登錄試著執(zhí)行UPDATE和DELETE應(yīng)該報(bào)權(quán)限不足。能用SELECT查到業(yè)務(wù)數(shù)據(jù)但改不了這才是交付狀態(tài)。我自己的習(xí)慣是把這個(gè)驗(yàn)證清單和建表腳本放在同一個(gè)目錄命名成verify.sql交付時(shí)一起給。因?yàn)榭陬^說(shuō)“庫(kù)沒(méi)問(wèn)題”沒(méi)人信腳本能跑出結(jié)果才有說(shuō)服力。希望這個(gè)思路幫你在下一個(gè)Oracle圖書(shū)管理系統(tǒng)項(xiàng)目里少翻幾次車(chē)。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美第一页性| www.高清无码诱惑一区.com| 操逼视频国产无套| 天天肏视频| 人妻少妇精品久久久| 99激情| 高清无码在线播放网站| 亚欧无码线免费观看视频| 国产精彩女在线观看视频| 欧美精品人妻视频| 香蕉在线一区二区三区| 国产AV超爽| 国产日韩区| 亚洲学生妹高清av| 亚洲综合首页| 九九九九精品精| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 丝袜美腿操av| 九九免费影片| 蘋果手機免費看成人Av| 97资源欧美| 久久久久成人蜜桃精品| 久久免费精彩视频| 日本精品一区三区| 日本大片日本一区二区免费高清| 欧美激情久| 亚洲人成色9999精品久久 | 东北女人操比视频| 99精品丰满人妻无码| 91嫩草欧美| 97国产色综合| 男人天堂综合| 日韩在线观看AV| 91丝袜在线视频| 色婷婷成人综合| 尤物av网站| 亚洲综合码| www狠狠| 中文字幕三四区| 超碰色大香蕉| 十八禁黄色| 日韩人人精品| 91在线一起| 欧美狠狠狠| 亚洲欧美校园| 久久久久久久久久9| 91久久国产精品| www.人人摸在线视频| 国产黑白丝在线| 欧美大的香蕉有线电视视频| 无码人妻一区二区三区色欲aⅴ| 日韩熟女三十乱伦| 日韩9999| 亚洲中亚日激情视频| 加勒比av网| 99久草| 精品人妻中文字幕高清| 九色在线熟女国产黑人| 五月天综合网| 中出在线视频| 女上位精品在线| 91高清欧美| 日韩成人无码| 日本在线不卡v二区| 日本综合色图| 久久有碼| 干b网| 中文字幕成人乱码熟女精品国50 | 日韩熟女无码| 国产美女mm131爽爽爽爽| 久久98| 人人色人人射人人妻| 亚洲第一二区另类图| 亚洲美女黄色| 亚洲美女av无码| 久久午夜鲁丝片| 黄色高清无码无码破解免费暗网| 夜色五月天| 久久 亚洲 日韩 人妻| chaopen97久久| 天天综合网日韩| 性影在线视频| 国产精品欧美激在线| 日本久久久精品电影| 国产色产精品在线观看| 久久激情综合| 男人的天堂无码| 色色毛片| 91操操| 亚洲天堂情色| 日韩欧美午夜一区二区| 亚洲 欧美 91| 九七超碰人人乐| 九九九不卡| 啊啊啊啊免费视频| 日韩性爱再线视频| 日韩精品电影| 免费AV中文网在线观看| 中文字幕 码 自拍 视频 区| 97超色| 成人小说另类在线| 色综合五月天| 怡春院久久| 欧美成人一级免费电影| 青青伊人久久| 国产精品成人久久一区二区三区 | 欧美少妇色综合| 亚洲综合图文| www.人人cao| 中文字幕亚洲热播人妻| 啊…啊…操我用力操我 | 国语少妇精| 狠日操| 欧插网站| www.色婷婷| 欧美日韩美女精品久草一区二区三区| 欧美成人A天堂片在线观看| 久久久草成人网站久久久草成人久久久草久久久 | 日本视频在线观看污污污| 欧美韩国你懂得在线| 上特色A在线| 夜夜操狠狠操| 欧美黄页| 久久婷婷在线观看视频| 国产家庭乱伦性爱视频| 性色av一区二区| 国产亚洲精品久久久久小| 日夜久久久九九九久| 肏逼视频日本| 日本精品88888888| 亚洲中文字幕久久人妻| 亚洲情色综合网| 一类av片在线看| 97超碰巨乳| 日本三级A片网站com| 欧美性暴力猛交XXXX| 日韩激情无码影院| 男人久久精品| 婷婷久久久| 91性感在线| 91天天日| 91精品女厕偷拍视频| 9 9无尺码天堂网| av在线免费一区二区| 蜜桃臀一区二区aV| 在线只有精品| 特级特黄一级毛片免费| 久久久9 9 9精品| 偷看洗澡一二三区美女| 大香久久| 白 大 人妻 区 在线| 亚洲av综合色区无码一| 国产白丝网站| 又黄又粗又硬又长又大| 国产精品视频白浆免费| 成年人网站在线免费观看| 天堂伊人久久| 欧美精品四区| 欧美一区二区三区蜜桃| 综合第一页| 日日夜夜青青草母狗| 欧美亚洲| 日韩操啪| 精品夜夜澡人妻无码AV| 色女99一级片在线观看| 黄色av一区二区在线| 思思热国产高清| 东京热熟女亚洲视频网站| 久热9| 性爱视频免费网址| 日韩成年人性爱视频| 热久久无毒不卡| 欧美色图私拍91| 黄色av一区二区在线| 色哟哟AⅤ| 影音资源男人日韩| 欧美性爱一区二区三区四区| 天天日天天操心| 成人无码在线视频网站| 老女人综合网| 青青草毛片| 男人天堂网手机版婷婷| 97精品97| 久久久久久久久久久999| 97超级久久强资源| 天天综合网国产| 久久久网站| 综合五月婷婷亚洲一区| 在线视频免费观看午夜| 97爱爱| 色欧洲| 亚洲性感丝袜诱惑在线观看| 夜夜嗨绯色| 蜜伊人色综合97| oumeisetu综合| 无码在线亚洲| 日本在线播放不卡一区| 欧美日韩精品一区二区三区高清| 日韩操逼HD| 国产无马在线| 天天爽夜夜爽夜夜爽精| 无码操逼视频一下| 大黄片做爱的大的| 日韩精品一区二区日韩| 国产日产精品久久快鸭的功能介绍| 另类图片综合| 17c在线成人免费A片观看| 国产二区三区免费视频| 秋霞一集毛片观看| 高潮毛片无遮挡高清免费| 欧美操人视频| 激情抓乳插进去啪啪啪日韩| 国产日韩欧美操逼视频 | 亚洲熟妇图片| 久草资源在线视频官方总站日韩丝袜美腿| 啊啊啊啊啊在线观看网址 | 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 精品无码一区二区三区| 国产JDAV无码视频在线观看| 八戒午夜福利理论片| 日韩三级伊人| 久久伊人亚洲AV无码网站| 天天激情综合站| 被操高清无码视频| 在线播放一级无码视频| 国产精品久久久久久 百度| 蜜桃无码AV一区二区| 精品少妇一区二区三区在线视频| 婷婷视频网| 女优视频第10页| 午夜天堂网| 久久久久密臀视频| 一区二区三区一亚洲中文字幕、综合区灬 | 精品美女在线视频| 中文欧丝袜诱惑| 国产精品另类一区大香蕉| 国产精品白丝www| 麻豆视频一区二区| 亚洲精品国产专区在线观看| 无码抄逼网| 97超碰美国| 久久久不卡区一区二区三区久久久| 啊啊啊不要嗯嗯在线观看| 东京热91| 免费av在线播放二区| 欧美日韩国内不卡| 国产精品一区二区后入| 欧美性91| 老司机射| 中文字幕版| 人妻喷水| 日韩中文字幕视频| 久久婷婷伊人| 欧洲亚洲天堂精品| 绯色一区二区三区不卡少妇| 国产精品午夜高潮呻吟久久av| 亚洲日韩AV视色| 人妻熟妇久草在线| 翔田千里AV无码秘 三区| 亚洲系列第一页| 97干日韩| 亚洲欧美综合网| 亚洲最新中文字幕免费| 久久不卡一区二区| 天天干人人乐| 色小视频蜜乳| 夜夜青青无码影院| 中文字幕一区二区三区四区在线视频| 这里有精品| 亚州男人的天堂| 综合伊人网12色| 婷婷丁香成人| 欧美日韩制服| 人人操人人大香蕉| 色拍偷亚洲| 91大神精品长腿在线观看网站| 99热99色| 精品无码久久| www.色婷婷色综合| 精品欧美日韩在线观看| 日本三级A片网站com| 精品视频123区小说区| 狠狠入| 爱我干综合| 久久精品女同亚洲女同13| 一区操逼| 九九九九欧美| 日韩人妻免费精品| 亚洲综合色图欧美| 99热官网| 日本一区二区不卡| 熟女在线视频| 日本熟女免费視颖| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 五月天婷婷社区| 国产精品老师| 天天综合91入口| 国产亚洲禁久一区二区| 9美女超碰在线免费观看| 久久久久九九九| 欧美熟女丝袜| 色情乱伦AV| 欧洲一区二区三区四区在线观看| 粉嫩在线一区二区懂色| a啊啊啊啊啊啊啊啊一区二区| 中文字幕交换人妻| 欧美不在线| 国产不卡精品91| 精品久久久久久中文字幕视频免费| 亚洲第一综合| 黄片视频观看| 久草在| 五月天玖玖资源站| 97资源站日韩| 黄网站黄视频网站进入口| 成人小说视频在线精品欧美| 欧美色色人| 探花在线免费观看视频国产一区| 精品97久久| 1956日韩精品| 鸡巴插逼视频| 97中文热色| 色香阁在线| 亚洲精品白浆高清久久久久久| 日日做夜狠狠爱欧美黑人| 亚洲精品亚洲人成在线麻豆| 蜜臀99久久国产| 亚洲精品欧美专业| 亚洲精品中文字幕一区在线视频 | 亚洲黄色视频在线观看视频| 9久精品视频在线观看| 国产亚洲综合欧美一区| 午夜毛片亚洲精品片国产久久久| 亚州再线| 婷婷99| 7777奇米影视久久| 一区二区视频在看| 狠狠2050在线观看| 欧美制服网站美腿丝袜| 国产综合网站在线播放| 97超碰色| 久久99久久99精品天美传媒棢·纸:.| 亚洲熟妇乱女区二区三区| 国产三级多多影院2022国产AA一级毛片无码 | 91狠狠综合久久久久久| 天天摸夜夜添无码小视频| 偷偷人人精品女女久久| 精品久久久不卡一区二区| 99热思思| 国产精品久久久久久片| 日本国产亚洲一区在线观看| 久久久久久久| 老女人91| 欧美成人色| 97人肏| 99久久久无码国产精品性男| 欧美天天干| 人妻夜夜爽天天爽三区麻豆AV网站| 任我爽在线视频免费观看| 九一屌逼| 欧美性,亚州色| 色情成人五月天| 欧美特大黄一级片片免费| 无码外流操逼视频| 国产精品福利资源在线尤物| 亚洲天堂久久久久久粉红视频| 天天天做天天天爱天天天爽| 色在线69堂| 欧美性暴力猛交XXXX | 91久久久视| 亚洲AV免费在线观看| 凹凸视频特色日本特黄| 日本在线激情一区二区三区| 日韩黄色成人性爱| 被体育老师抱着c到高潮| 色天使亚洲综合在线观看| 日B操| 操逼操逼操| 熟女人妻一区二区三区| 97伊人网| 综合网亚洲| 亚洲欧美另类激情小说| 国产精品成久久久久午夜午夜| 94色色电影网| 欧美中文字幕精品人妻| 爱爱啊啊啊| 免费在线看黄片av| 欧洲黄色网| 四虎国产精品永久在线囯在线| 少妇久久久久久| 91性色| 日韩免费在线观看不卡| 国产精品无码av在线| 亚洲国产婷婷在线播放| 夜嗨影院| 99精品久久| 亚洲男人天堂Av| 人妻啊啊人妻啊啊| 久久色激情一区二区三区| 97高清啪啪| 亚洲精品一卡二卡三卡福利视频网站 | 中文字幕1区2区| 一本色道人妻久久| 久久神马| 九九热久久99精品re| 正在播放国产精品一区| 蜜乳AV网址| 久热99| 一区,二区,三区网站| 久久爽爽精品| 99国产女人| 午夜性刺激视频免费观看| yaouchengrenav| 大黄片做爱的大的| 9色在线| 嗯嗯,啊啊,国产精品| 一区| 久久岛国| 久久久久国产精品喷潮免费观看臀| 欧美色综合影院| 色噜噜人妻av 中文字幕| 青青草字幕AV| 夜夜爽夜夜操| 97国产高清视频在线观看| 农村妇女一级二级三级视频| AV在线资源| 老熟女综合网 | 另类av天堂| 婷婷五月天色网| 熟妇乱伦一区二区| 99自拍视频在线| 午夜欧美神马久久久久| 国产精品伦理| 91成人久久| 亚洲另类久操网| 超碰欧美97资源| 中国人高清www色视频免费| 少妇3P性爱自拍| 蜜桃色色网站视频三区| 亚洲欧美91√| 中文字幕一区二区免费在线| 狂操嫩妻视频一区二区三区| 我爱操| 自怕偷自怕亚洲精品| 热久久这里只有精品| 日本好吊色视频| 国产高清亚洲日韩一区| 色久综合| 亚洲色电影在线| 在线强奷到舒服的无码视频| 69视频福利导航| 色婷婷一区二区三区久久| 国产精品成人无码av无码免费| 岛国小电影| AV女优男人的天堂| 婷婷亚洲综合| 久久久久幕乱码| 干干干天天| 欧美97在线观看| 91天天综合日韩欧美| 国产成人精品亚洲日本| 蜜臀久久精品久久久久视频| 天堂俺去俺来也www久久婷婷| 97干在线看| 91精品老女人| 亚洲人成色9999精品久久| 国语少妇精| 青青草中文-久久青草精品一区二区三 | 人妻天天爽夜夜爽2| 成全在线观看免费观看| 欧美亚洲涩涩| 午夜影美女日鸡鸡天天视频国产| 欧洲精品区| 日人妻视频91| 97超级久久| 可以免费观看的AV| 国产精品日日摸夜夜添骚逼| 国产少妇与亚洲av| 色综合V| 蜜臀AV成人精品蜜臀| 八戒无码国产午夜福利| 日韩大香蕉精品在线视频| 欧美日韩在线国产在线| 51一区二区三区| 99自拍视频在线观看| 99re这里只有| 中文字幕 一区二区 亚洲无码| 亚洲一区二区三区春色| 丝袜无码a片| 乱欲一区二区| 四虎在线视频| 啊嗯好大视频在线观看| 啊啊啊不要好疼视频| 成人av福利在线观看| 午夜免费福利视频一区| 97碰碰色| 97天天操天天干| 久久九九视频九九视频| 欧美激情 亚洲色图| 国模一区二区三区| 婷婷丁香九月| 欲香欲色综合天天伊人| 激情露脸爱| 粉嫩不卡一区二区性爱| 久九九九| 99久在线精品99re8热视频在线| 中文字幕精品资源在线| 亲子敌伦对白在线播放| 亚洲美女 晚间男人天堂 | 男人亚洲天堂| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 91丨九色丨熟女高潮| 免费AV中文网在线观看| 欧美亚洲韩国视频十五区 | 91香蕉国产尤物视频| 91欧美性| 91九九九馒头| 亚洲AV无码成人精品久久| 超碰在线人人射| 青青草无码视频| 亚州情色j区| www.久久最新地址| 久操91视频| 欧日韩一二三f区| 欧美白嫩在线放| 91黑丝露脚| 欧美亚洲尤物久久| 操b在线观看| 啊啊啊啊免费视频| 九热超碰| 欧美熟女妇同| 操我啊啊啊啊啊| 精品久热| 欧美日韩国产色图在线| 欧美日日操| 性夜影院爽黄A爽免费动漫| 91无码人妻精品一区二区三区蜜桃| 婷婷激情一区二区三区俺也去| av九九| 亚洲第2页| 黑人美精品 A片| 国产日韩精品suv| 人妻天堂网| 99999亚洲另类| 亚洲91大片| 欧美在线啊啊啊| 精品免费1| 久久久蜜桃一区二区三区| 日韩999| 中文自拍欧美影视| 黄色片大香蕉| 91丨熟女丨丰满熟女| 免费看黄视频亚洲网站| 日本熟女免费視颖| 国产日韩精品人妻久久久久色欲网站| 国产福利一区二| 日本操逼视频免费| 性色av大全| 亚洲国产精品成人综合| 国产久久免费精品视频| 天天干天天燥| 日本不卡高清视频| 日韩精品 视频一区二区| 91在线视频免费播放| 熟女五十路一区二区三| 2019久久久久久久久福利| 国产精品一区av在线| 交换娇妻呻吟声不停中文字幕| 影音先锋每日最新资源在线观看 | 99国产精品视频尤物| 色黄色美女大长腿午夜视频| 亚洲成熟国产精品美女| 夜夜草网站| 美女91色黄18| 91视频女生| 9 1果冻精品视频| 中文字幕欧美丝袜07资源| 一区二区三区国产在线播放| 日韩强奸av| 天天摸夜夜添无码小视频| 中文字幕一区二区韩| 国产精品秘 福利姬在线观看| 国产亚洲在线| 久久AV无码1区2区3区| 男人把坤坤插入女人的下体| 91操熟女视频 | 一类无码操逼视频| 99热精品在线| 91麻豆天美国产| 香蕉大久久久| 精品九九| 亚洲制服欧美另类内射| 色色色色色色色色色色色色色色综合 | 久久久草草精品| 丝袜综合网| 国产精品 久久久精品一牛| 亚洲成熟国产精品美女| 内射日韩大臀美女| 久久9精品网站| 九九九热| 91精品大奶人妻| 熟啊v色欧美热| 黄页网站成人免费| 国产精品嫩草久久久久| 国产精品一二三免费网站| 日韩精品99久久久久久中文字幕| 91日韩网站| 国产操伦| 91女网站| 日本媚薬中文字幕在线| 乱欲一区二区| 人妻一区久久二区三区色播| 天天干夜夜鈤| 成人午夜小视频手机在线看| 日本一二三高清| 欧美精品黑人猛交高潮| 国产午夜无码片在线观看影视| 青娱乐 成人娱乐在线| 青娱乐国产精品| 嫩草 人人网精品| 天天综合中文字幕 91| 美女操逼福利视频| 欧美在线55555| 国产品精品自在在线午夜免费| 无套内射性感少妇视频| 亚洲日韩久久精品一区| 一区二区免费电影久久| 精品免费1| 91无遮挡| 亚州少妇| 精品无吗m| 九热视频| 国产精品伦理| 九九色逼| 女生看匆91网站| 牛黄色久午久| 亚洲素人综合| 免费黄色A片| 熟女91网| 色色色99| 午夜一区| 日本人体九九九九九九| 亚洲超碰97| 91xingse| 亚洲无码视频免费在线观看网址!| 午夜精品久久久久久久男人的天堂 | 97欧美日韩中文| av天堂精品久久| 99RE在线视频精品,这里只有精品| 在线日韩日本亚洲国产| 国产专区路线| 五月天久久综合网| 国产乱码精品久久久久久| 久久性生大片免费观看性| 嗯嗯嗯啊啊啊在线免费观看| 中文字幕在线观看网址| 欧美日韩资源在线| 国产一区二区三区免费视频在性观看| 美女毛片999| 无码日韩人妻av一| 蜜臀久久99精品久久久久电影| 日本在线激情一区二区三区| 一本色道久久综合精品婷婷| 男人的天堂2019AV| 国产精品不卡一区二区三区av| 自拍丝袜美腿人妻| 黄页网站免费高清在线观看| 亚洲少妇自拍中文字幕懂色| 人妻激情视频| 蜜桃精品一区二区三区ww| 国产女同视频在线播放| 热热色国产一二区AV| 色香蕉影院| 日本在线观看网址| 精品人妻一区春色| 99九九久久| 国产精品懂色tv影视免费观看| 色偷偷色偷偷欧美日韩| 大地资源在线观看中文第二页| 亚洲无码一区成人免费午夜| 看黑人AV不卡| 日本www操操操| 丝袜综合网| 综合久欧洲| 视频分类 国内精品| 东京热毛片177b2viP| 欧洲与亚洲欧美精品中文字幕| 五月综合婷婷久久网站| 淫荡网址| 四虎影视永久在线观看精品免费网站 | 亚洲乱码国产乱码精网站| 日韩精品午夜操呦呦不卡影院| 欧美日韩理论一区| 国内精品久久久久影院亚洲| 人人模人人看| 老鸭窝在线视频播放| 91偷拍欧美亚洲| 久久99亚洲精品久久99果| 操国产逼| 国产sv美女内射| 老女人碰碰在线碰碰视频| 大香蕉啪啪啪| 操逼啊啊啊91| 日韩av无码网站| 全国男人天堂网| 亚洲国内精品成人不卡| 亚洲色图超碰在线| 凸凹视频在线观看| 欧美偷拍区| 蜜臀久久99精品久久久| 日韩在线观看AV| 中文字幕AV片| 久久久久久久久九九久孕交| 熟女精品一区二区三区| 在线观看黄色电话| 双插性欧美一二三区| 囯产精品久久久久久久久久梁医生 | 亚爽爽爽爽爽爽爽爽| 校园春色综合| 大香蕉啪啪啪| 九九aV| 国产超碰人人爽人人做| 东北丰满熟女国产一区| 无码直播久久久| 操一操摸一摸| 亚洲av青草久久一区二区| 揉揉日日日日| 精精品人妻一区二区三区| 91久久久久| 夜夜骑日日| 色天使AV天堂| 怡红院亚洲怡春院av| 视频在线中文字幕| 操老熟女AV| 伊人久久亚洲色欲综合网站 | 最新国内自拍av免费| 日韩精品资源专区二区| 欧美成人性爱视频在线播放| 国产白丝精品在线观看| 又大又大又大又粗爽高潮观看| 热热色91| 国产精品com| 91精品国产91久久福利| 91视频伊人| 亚洲AV无码翔田千里网站| 国产精品人妻熟女aⅴ| 一区二区三区黄色片a| 思思热免费在线视频| 草草网站影院白丝内射| 蜜臀AV网站| 91碰碰碰| 97色插| 神马久久久久久久久久久久| 久久久99999久网站| 欧美一区二区三区成人性生活| 亚洲欧美91√| 天天干人人乐| 日韩免费a级毛片无码a∨| 美国黄片aaa| A 天堂在线观看视频| 三级片网站在线播放| 在线观看一卡二卡| 韩国三级三级BD在线| 九九九九一级| 手机在线大香蕉| PMv在线观看| 黄色大香焦1级‘′‘| 亚洲激情网| 欧美亚洲国产自久久| 久久视频少妇美女| 欧美大的香蕉有线电视视频| 日本人妻伦在线中文字幕| 亚乱色| 久久,精品一二三| 欧美曰韩国产精品| 精品十八在线观看| 免费看片黄| 女人高潮抽搐喷水视频网站| 亚洲情色1区| Julia Annxxxxx| 午夜精品久久99蜜桃的功能章节| 青草草免费网站av| 亚洲另类在线观看| 女人的天堂大香蕉网| 91色夜| 欧美天天干| 天天看综合网| 干美女人妻| 国产传媒午夜理伦精品| 丝袜大香蕉| 婷婷15月天青娱乐| 久久久久夜夜夜夜| 中文字幕精品区先锋资源| 91大神电影天堂| 密臀成人视频久久久| 亚洲av国产av综合av卡| 色婷婷丁香五月| 超碰97在线中文| 99精品国产户外露出| 97av在线视频| Julia Annxxxxx| 中文字幕AV乱伦| 爱爱动态120秒| 精品十八在线观看| 久久久国产亚洲精品系列| 97视频观看| 黄色成年| 天天精品| 夜夜夜夜爽| 国产欧美精选激情视频| 欧美九九99久久精品| 天天干18禁| 秋霞视频一区二区 | 免费中文综合精品| 久久久久久久久久久久久久久性生活视频 | 天天澡天天爽日日av| 一区二区三区国产在线播放| 狠狠爱综合网| 一卡二卡三卡| 怡红院一区二区熟女人妻| 亚洲视频二区| 国产精品毛片?v一区二区三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 国产精品小视频一区二区三区| 欧美色图99| av天堂5| 韩国毛片一区二区三区| 中文操嬖片。| 97超碰中文字幕| 日逼国产| 中文字幕二区| 欧美视频中文字幕区| 后入福利视频| A 天堂在线观看视频| 色色青青久久| 91干熟女| 99久在线精品99re8蜜桃| 超碰在线成人| 少妇淫妇久久久久久久| 五月天社区| 99re在线| 日日日啊啊啊| WWW啪啪的com| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 高清国产av无码| 青草精品视频一日本久久久久网站| 欧美性爱五月天| 欧美日韩亚洲天堂| 熟妇女人妻呻吟久久AV| 男女猛烈无遮掩视频免费软件| 97天天做| 美女写真| 亚洲第一页色网| 欧美熟爽综合| 成人无码电影在线观看网| 欧美色日| 婷婷精品| 国产无马在线| 91色色综合| 婷婷综合五月| 超碰日韩人妻| 怡红院亚洲怡春院av| 免费视频无码| 色婷婷六月丁香七月婷婷| 久久综合久色欧美综合狠狠| 97香蕉碰碰人妻国产欧美| 人人妻人人玩人人澡人人爽| 精品无吗久久| 五月天婷精品激情| 狠狠爱综合网| 在线观看午夜婷婷久久久久清性观看| 欧美成人性爱视频大全| 色99999| 亚洲综合图片在线| 美女黄色一级A视频| 国产男女边吃边摸视频网站| 中文字幕无码不卡啪啪| 久久久com| 岛国在线一区二区三区| 精品久久久久久久| 久久久男人的天堂| 亚洲AV小说| 91快色色色色色| 国产极品馒头逼| 欧美日韩人妻少妇 一区二区三区| 亚洲综合五月天| 欧美日韩免费性爱| 欧美人妻少妇| 人乳av| 青青草十区九区爱夜| 免费综合亚洲中文| 人人玩人人添人人澡免费| 97在线/亚洲| 欧美亚洲日韩16色| 亚洲有薄码区日本系列中文字幕| 嫩草一区二区在线观看| 秋霞Av理论一级在线| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 国产精品欧美日韩久久| 干超碰碰熟女| 亚洲图片视频小说| 中文字幕久久亚州无码| 久久精彩视频9| 中文字幕在线免费观看视频| 老熟妇一区二区三区…| 人人爱人人乐人人操| 人妻精品一区二区三区| 啊啊啊在线看| 91精品国久久久久久无码| 欧洲免费一区二| 久久人妻丝袜一区二区三| 国产懂色精品国产av| 99久久久无码精品国产人| 欧美激情激情xxxx欧美专区| 96超碰网| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 国产精品网站www| 97资源超碰| 六六久久日韩不卡| av中文在线| www.婷婷| 九九AV| 九九激情网| AV九九| 另类图片五月天| 天天天天操| 日韩一区二区精品视频| 26uuu欧美| 黄色AV影视| 亚洲色图超碰在线| 天天欧美色| 久久色人体 | 无码高清操逼网址| 无码人妻一区二区三区色欲aⅴ| 久草午夜| 91久久久亚洲| 人人性爱视频免费| 五码视频在线观看| 天天弄天天操| 日本免费专区| 两性综合网| 久久九九综合| 黄色污污污污污污网站| 九九精品美女高溯喷水| 爱欲AV| 亚洲91网站| 日韩精品系列| 九久久九九久视频| 欧美天天射| 100啪啪视频大全| 天天操人人操狠狠插| 午夜福利在线合集| 久操不卡视频| 蜜桃色色网站视频三区| 一区=区三区视频| 操B久久| 中文子幕一二三| 夜夜欧美 | 超碰免费在线| 国内黄色精品| 蜜臀亚洲综合一二三四区| 欧美黑人日韩少妇色情| 超碰诱惑| 人妻偷拍一区二区三区| 黄片色区软件| h在线看免费版在线看| 91色鬼| 熟女露脸激情自拍视频| www.男人的天堂| 自怕偷自怕亚洲精品| 欧美亚洲中文字幕| 97色五月天完| 蜜臀无码一区二区| 亚洲综合在线第一页| 一本精品日本在线视频精品 | 日本不卡中文| 综合影院永久入口国产| 首页中文字幕中文字幕免费| 欧美日不卡| 日日摸日日碰| 亚洲加勒比久久日本道| 乱伦av国产| 97久精品| 加勒比性爱成人在线| av影片在线观看不卡| 欧美顶级黄色大片免费| 78综合网| 日本免费二区三区| 日韩欧美操逼xxx| 一级黄色影片| AV中文字幕剧情1区2区3| 夜夜爽夜夜| 国产一区二区欧美日本| 视频在线观看一二三区| 少妇蹲下买菜露大唇0| 日本一级特级毛片视频| 黄色片大香蕉| 性老妇一区二区三区| 色欧美亚洲| 天天色综合天天操| 日本黄色裸日本黄色裸体| 啊啊啊啊啊在线| 亚洲欧美国产成人综合不卡| 欧美综合第一| 久久久久白虎| 天天色综亚洲91污| 嗯嗯啊啊视频一区二区三区| 欧美日韩中文字幕人妻| 男人的天堂一区三区| 神马久久啊啊| 精品国产三级av韩国在线| 99在线免费视频| 欧美日韩系列| 亚洲蜜桃V妇女| 国产白丝在线| 强奸乱伦AV一天堂网| 综合色图亚洲欧美| 欧美欧美少妇| 中国亚洲呦女专区| 色香欲天天天天综合色| 日韩国产欧美伦理在线| 欧美日韩资源在线| 校园春色综合网| 久久天堂婷婷网| 青草精品视频一日本久久久久网站| 夜夜影视四色| 亚洲黄色网址| 男人的天堂午夜av| 国产AV天美| 国产精品久久天天干| 91九色丨国产丨爆乳| 91色综合| 99r九九| 日韩性爱小视频| 亚洲日本男人天堂网| 试看日韩黄片| 嗯嗯嗯啊啊啊操的我好爽 | 69人妻精品丰满熟女区| 在线观看不卡一区二区三区| 宅男午夜在线视频| 一级人妻性爱视频| 天天爽夜夜欢视| 亚洲精品乱码线路中文字幕| 综合天天网| 日欧亚洲二三区大片不卡| 骚女高跟AV在线| 国产精品探花视频| 夫妻AV网站| 丁香六月激情综合| 欧美后入| 97在线欧洲| 巨爆乳一区二区爆乳区| Aa东京男人的天堂| 操婷婷逼| 97欧美精品| 99re在线观看| 亚洲色 国产 欧美 日韩| 欧美专区17页| 国产乱码久久| 1级黄色夫妻对换性交免费看| 中文一区在线日| 亚洲精品成人激情在线| 夜夜躁狠狠躁日日躁av| 免费农村成人少妇人妻Aa一区二区视频| 亚洲码在线中文在线观看| 老女人老91妇女老热女| 亚洲精品日日夜夜52| 91伊人| 九九九九九用不成了| 3p国产欧美99热| 九九无码| 色综合20p| 丁香久久| 亚洲天堂一区二区久久| 亚洲性综合11| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 强奸乱亚洲| 日韩一级欧美一级国产一级台湾| 国产丰满少妇久久久精品影院| 亚洲综合中文字幕有码| 亚洲欧美首页| 亚洲日韩熟女人妻高清在线| 狠狠干狠狠色| 少妇一区二区三区高速| 久久精品导航| 欧美日韩大陆黑人少妇99| 婷婷久久大香蕉| 影音先锋日本乱伦| 性欧美999| 在线观看A啊啊啊| 五月丁香久久| 国产一级不卡在线观看| 欧美懂色综合网| 五月天亚洲网| 91色图片| 人妻久久久| 国产AV无码AV| 干我久操| 96一区二区| 超碰碰小说97| 少妇500双飞99| 国产亚洲一黄| 天天看,天天做| 午夜精品久久久久久久久久蜜桃| 曰韩人妻中文字幕在线| 国产传媒操逼视频| 夜夜骑夜夜操| 超碰色美女| 精品人妻一区二区三区夜夜| 黄色大片一区二区密桃丝袜| 精品一区二区成人动漫| 日韩av不卡在线看| 熟女探花啪啪| 中文字幕在线免费观看 | 国产精品探花在线| 欧美传媒| 欲香欲色| 麻豆成人AV| 五月天久久人妻| 九七人妻在线| 亚洲视频二区| 日han少妇无码| 91在线免费观看处女| 国产九月婷婷| www.狠狠| 97综合在线| 日本 欧美 国产一区| 在线综合色| 在线看的av| 在线播放免费av福利片| 亚洲欧洲av影音| 亚洲在线| 国产无码精品久久久久久| 男人久久天堂| 1240青青草一区二区三区视频天爱| 欧美色图另类图片| 色路综合| 中文字幕视频二区| 久久久91| 日韩一二三区| 天天澡天天爽日日AV| 97爱综合| 精品国产一区探花在线观看| 色99999| 丰满人妻aA一区二区三区| a级免费在线观看| 一区AV| 国产亚洲精品精AV.| 黄色大片免费在线| 亚洲第一狼人丝袜美女另类 | 欧美久久婷婷| 97在线观看免费视频l| 天堂网 主播 亚洲| 高清不卡 中文 人妻| 久久久免费视频18| 91成人国产综合久久精品蜜月| 无码9区| 国产不卡精品91| 国产精品伦理| 色97综合中文字幕|