日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

DB2數(shù)據(jù)庫(kù)使用經(jīng)驗(yàn)漫談(1)

瀏覽:19日期:2023-11-10 14:54:44
DB2數(shù)據(jù)庫(kù)使用DML(Data Manipulation Language commands)數(shù)據(jù)操縱語(yǔ)言DDL(Data Definition Language commands) 數(shù)據(jù)定義語(yǔ)言TCC(Transaction Control commands)  事務(wù)控制語(yǔ)言SCC(System Control commands )  系統(tǒng)控制語(yǔ)言一 DML數(shù)據(jù)操縱語(yǔ)言(一)數(shù)據(jù)查詢(xún)命令select <查詢(xún)內(nèi)容>From <表名>where <條件>/*in,between,like%或_*/group by<分組內(nèi)容>having<組內(nèi)條件>order by<排序內(nèi)容>[asc/desc];(二)數(shù)據(jù)更新命令1、數(shù)據(jù)插入命令(1).具體的值插入表中  Insert into <表名> [(列名表)]  values<值表1>,<值表2>,<值表2>...  (注: 日期,字符型值加引號(hào)) (2).將其它表滿(mǎn)足條件的數(shù)據(jù)插入到一個(gè)表中 Insert into <表名> [<列表名>] <select 子句>2、數(shù)據(jù)修改命令Update <表名> set <列名1>=<表達(dá)式1>,<列名2>=<表達(dá)式2>...[where<條件>];Update <表名> set <列名1>=(< select 子句 >) [where<條件>];3、數(shù)據(jù)刪除命令Delete from <表名> [where<條件>];二 DDL數(shù)據(jù)定義語(yǔ)言(一)、基本數(shù)據(jù)類(lèi)型1.字符串字符串為一個(gè)字節(jié)序列,字符串的長(zhǎng)度為序列中的字節(jié)數(shù)。假如長(zhǎng)度為零,則該字符串的值稱(chēng)為空字符串。CHAR(x) 是固定長(zhǎng)度字符串。(1=VARCHAR(x) 可變長(zhǎng)度字符 x<=4000,x>254不能用group by ,order by,distinct 和除 12345678下一頁(yè) union all以外的任何設(shè)置操作。GRAPHIC(x)是固定圖形字符串。(1=BLOB 二進(jìn)制字符串,是一個(gè)字節(jié)序列,用于保存非傳統(tǒng)數(shù)據(jù),如圖象、圖形、聲音等數(shù)據(jù)。2 數(shù)字 :所有數(shù)字都有符號(hào)和精度。精度是除開(kāi)符號(hào)的位數(shù)或數(shù)字?jǐn)?shù)。SMALLINT 小整數(shù),是精度為5位的兩字節(jié)整數(shù)。INTEGER  大整數(shù),是精度為10位的四字節(jié)整數(shù)。REAL 單精度浮點(diǎn)數(shù),是實(shí)數(shù)的32位近似值。DOUBLE  雙精度浮點(diǎn)數(shù),是實(shí)數(shù)的64位近似值,DOUBLE也稱(chēng)FLOAT。DECIMAL(p,s)  DECIMAL是一個(gè)十進(jìn)制數(shù)。小數(shù)點(diǎn)的位置由數(shù)字的 精度(p)和小數(shù)位(s)確定。精度是數(shù)字的總位數(shù),必須小于32。小數(shù)位是小數(shù)部分?jǐn)?shù)字的位數(shù)且總是小于或等于精度值。假如未指定精度和小數(shù)位,則十進(jìn)制值的缺省精度為5,缺省小數(shù)位為0。3 日期時(shí)間值 :日期時(shí)間值是日期、時(shí)間以及時(shí)間戳記的表示,日期時(shí)間值可以用于某些算術(shù)運(yùn)算和字符串運(yùn)算并且與某些字符串是相容的。DATE 由三個(gè)部分構(gòu)成(年、月以及日)。TIME 使用24小時(shí)制,分為三個(gè)部分(小時(shí)、分鐘以及秒)。IMESTAMP 分為七個(gè)部分(年、月、日、小時(shí)、分鐘、秒以及微秒)。4空值 空值是一個(gè)區(qū)別于所有非空值的非凡值。它意味著行中的那一列無(wú)任何其它值。所有數(shù)據(jù)類(lèi)型都存在空值。(二)、數(shù)據(jù)定義1、Create (創(chuàng)建)創(chuàng)建表:Create table [<模式名>.]<表名>  (<列名1> <類(lèi)型> [Null|Not null] [,<列 名2> <類(lèi)型>...]創(chuàng)建視圖:Create view [<模式名>.]<視圖名> [<列名表>] as select 語(yǔ)句 上一頁(yè)12345678下一頁(yè) 創(chuàng)建別名:Create alias [<模式名>.]別名 for [<模式名>.]表名/視圖名/別名創(chuàng)建索引:Create [unique] index <索引名> /*I_表名_字段名*/ on <表名>(<列名>[asc|desc]創(chuàng)建模式:Create schema 模式名 authorization 權(quán)限名2、Drop (摧毀)摧毀表:drop table [<模式名>.]表名摧毀視圖:drop view [<模式名>.]視圖名摧毀別名:drop alias [<模式名>.]別名摧毀觸發(fā)器:drop trigger [<模式名>.]觸發(fā)器名摧毀索引:drop index [<模式名>.]<索引名>摧毀包:drop package [<模式名>.]包名3、Alter (變更)增加表列:Alter table [<模式名>.]<表名> add column [<列名1> <類(lèi)型> [Null|Not null]]...增加約束: Alter table [<模式名>.]<表名> add constraint 列名 CHECK (約束)刪除約束:Alter table [<模式名>.]<表名> drop constraint 約束名 修改列類(lèi)型:Alter table [<模式名>.]<表名> alter column 列名 set data type <類(lèi)型>4、Grant (賦權(quán))對(duì)[public/用戶(hù)/組] 賦于在表上的[all/select/insert/update/delete] 權(quán)限:Grant [all/select/insert/update/delete] on [<模式名>.]表名to [public/用戶(hù)/ 組];對(duì)[public/用戶(hù)/組] 賦于在包上的[bind/execute/]權(quán)限:Grant [bind/execute/] on package [<模式名>.][包名] to [public/用戶(hù)/組];  上一頁(yè)12345678下一頁(yè) 對(duì)[public/用戶(hù)/組] 賦于在索引上的[control]權(quán)限: Grant control on index [<模式名>.]索引名 to [public/用戶(hù)/組]5、Revoke (回收)從public/用戶(hù)/組] 回收在表上的[all/select/insert/update/delete] 權(quán)限:Revoke [all/select/insert/update/delete] on [表名] from [public/用戶(hù)/組];從public/用戶(hù)/組] 回收在包上的[bind/execute/] 權(quán)限:Revoke [bind/execute/] on package [<模式名>.][包名]from [public/用戶(hù)/組];三 事務(wù)控制語(yǔ)言1.事務(wù)提交命令: Commit;2.事務(wù)回退命令: Rollback;四 系統(tǒng)控制語(yǔ)言1.取消自動(dòng)提交:Update command options using c off;2.連接數(shù)據(jù)庫(kù):Connect to 數(shù)據(jù)庫(kù)名 user 用戶(hù) using 密碼3.?dāng)嚅_(kāi)數(shù)據(jù)庫(kù)連接:Connect resetDisconnect 數(shù)據(jù)庫(kù)名4.列出數(shù)據(jù)庫(kù)中的所有表:List tables for all5.列出數(shù)據(jù)庫(kù)中的模式名為schema_name的所有表:List tables for schema schema_name6.查看表結(jié)構(gòu)Describe table 模式名.表名Describe select * from 模式名.表名7.查看表的索引Describe indexes for table 模式名.表名五 函數(shù)(一) 列函數(shù)列函數(shù)對(duì)列中的一組值進(jìn)行運(yùn)算以得到單個(gè)結(jié)果值。1.AVG返回某一組中的值除以該組中值的個(gè)數(shù)的和2.COUNT (*)返回非空列值的行數(shù)。3.MAX返回一組值中的最大值4.MIN返回一組值中的最小值5. MOD求余(二) 標(biāo)量函數(shù) 上一頁(yè)12345678下一頁(yè) 標(biāo)量函數(shù)對(duì)值進(jìn)行某個(gè)運(yùn)算以返回另一個(gè)值。下列就是一些由DB2通用數(shù)據(jù)庫(kù)提供的標(biāo)量函數(shù)的示例。1.ABS返回?cái)?shù)的絕對(duì)值2.HEX返回值的十六進(jìn)制表示3.LENGTH返回自變量中的字節(jié)數(shù)(對(duì)于圖形字符串則返回雙字節(jié)字符數(shù)。)4.YEAR抽取日期時(shí)間值的年份部分5.NULLIF(a,b)假如a=b則值為空,否則值為a6.COALESCE(a,b,c):返回第一個(gè)具有非空值的參數(shù)的值7.UCASE(str)小寫(xiě)字符轉(zhuǎn)換成大寫(xiě)字符8.ICASE(str)大寫(xiě)字符轉(zhuǎn)換成小寫(xiě)字符9.LOCAT(str1,str2,n)返回從第n個(gè)字符起,在str1中str2第一次出現(xiàn)的位置10.SUBSTR(str,m,n)返回從第m個(gè)字符起,,在str中的n個(gè)字符串六 嵌入式SQL(SQLJ)將SQL語(yǔ)句嵌入應(yīng)用程序時(shí),必須按以下步驟預(yù)編譯應(yīng)用程序并將其與數(shù)據(jù)庫(kù)聯(lián)編:1.創(chuàng)建源文件,以包含帶嵌入式 SQL 語(yǔ)句的程序格式: # SQL{ SQL語(yǔ)句 } 。2.連接數(shù)據(jù)庫(kù),然后預(yù)編譯每個(gè)源文件。語(yǔ)法: SQLJ 源文件名例:import java.sql.*;import sqlj.runtime.*;import sqlj.runtime.ref.*;#sql iterator App_Cursor1 (String empno, String firstnme) ;#sql iterator App_Cursor2 (String) ;class App{static  { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); } catch (Exception e) { e.printStackTrace(); }  }public static void main(String argv[])  { try { App_Cursor1 cursor1; App_Cursor1 cursor2; String str1 = null; String str2 = null; int  count1; Connection con = null;String url = "jdbc:odbc:tese2"; DefaultContext ctx = DefaultContext.getDefaultContext(); if (ctx == null) {try { if (argv.length == 0) {String userid ="tdl";String passwd ="user";con = DriverManager.getConnection(url, userid, passwd);} else if (argv.length == 2) { // connect with default id/passwordcon = DriverManager.getConnection(url); } else {System.out.println("Usage: java App [username password]");System.exit(0); } con.setAutoCommit(false); ctx = new DefaultContext(con);} catch (SQLException e) {System.out.println("Error: could not get a default context");System.err.println(e) ;System.exit(1); }DefaultContext.setDefaultContext(ctx); }#sql cursor1 = { SELECT empno, firstnme from db2admin.employee }; System.out.println("Received results:"); while (cursor1.next()) {str1 = cursor1.empno();str2 = cursor1.firstnme();System.out.print (" empno= " + str1);System.out.print (" firstname= " + str2);System.out.print (""); } cursor1.close();#sql cursor2 = { SELECT firstnme from db2admin.employee where empno = :str1 }; System.out.println("Received results:"); while (true) {#sql { FETCH :cursor2 INTO :str2 };if (cursor2.endFetch()) break;System.out.print (" empno= " + str1);System.out.print (" firstname= " + str2);System.out.print (""); } cursor2.close();// rollback the update System.out.println("Rollback the update..."); #sql { ROLLBACK work }; System.out.println("Rollback done."); } catch( Exception e ) { e.printStackTrace(); }  }}注:本程序采用JDBCODBC橋的方式訪問(wèn)數(shù)據(jù)庫(kù),必須配置ODBC數(shù)據(jù)源。 上一頁(yè)12345678下一頁(yè) 七 觸發(fā)器建一個(gè)觸發(fā)器,應(yīng)包含以下部分:觸發(fā)器名字觸發(fā)器觸發(fā)事件: insert,delete,update激活時(shí)間: before,after粒度: for each statement,for each row過(guò)渡變量:old row:表示觸發(fā)事件之前被修改的值:new row表示觸發(fā)事件之后被修改的值old table表示觸發(fā)事件之前全部被修改行的一個(gè)只讀假想表new table表示觸發(fā)事件之后全部被修改行的一個(gè)假想表觸發(fā)條件: 由WHEN開(kāi)始,可包含一個(gè)或多個(gè)謂詞,可包含過(guò)渡變量和子查詢(xún)觸發(fā)體: 由一個(gè)或多個(gè)SQL語(yǔ)句組成例:CREATE TRIGGER REORDER AFTER UPDATE OF ON_HAND, MAX_STOCKED ON PARTS REFERENCING NEW AS N_ROW FOR EACH ROW MODE DB2SQL WHEN (N_ROW.ON_HAND < 0.10 * N_ROW.MAX_STOCKED AND N_ROW.ORDER_PENDING = 'N') BEGIN ATOMICVALUES(ISSUE_SHIP_REQUEST(N_ROW.MAX_STOCKED - N_ROW.ON_HAND, N_ROW.PARTNO));UPDATE PARTS SET PARTS.ORDER_PENDING = 'Y'WHERE PARTS.PARTNO = N_ROW.PARTNO; END八 存儲(chǔ)過(guò)程存儲(chǔ)過(guò)程主要通過(guò)Stored Procedure Builder來(lái)建立,(一)對(duì)存儲(chǔ)過(guò)程的調(diào)用分三部分:1.連接(與數(shù)據(jù)庫(kù)建立連接) Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance(); Connection con=DriverManager.getConnection(url,user,password); 上一頁(yè)12345678下一頁(yè) 2。注冊(cè)輸出參數(shù) cs.registerOutParameter (3, Types.INTEGER);3。調(diào)用存儲(chǔ)過(guò)程: CallableStatement cs=con.prepareCall("{call store_name(參數(shù),參數(shù),參數(shù))}");(二)調(diào)用舉例:import java.net.URL;import java.sql.*;class test2{  public static void main(String args[])  { String url = "jdbc:db2://wellhope/sample"; String user="db2admin"; String password="db2admin"; try {  Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance();   //與數(shù)據(jù)庫(kù)建立連接  Connection con=DriverManager.getConnection(url,user,password);   checkForWarning(con.getWarnings());  DatabaseMetaData dma=con.getMetaData();String str="This is a string";  //int hashcode=str.hashCode();  //System.out.println("Hashcode  "+hashcode);  //創(chuàng)建Statement對(duì)象,用于執(zhí)行SQL語(yǔ)句  Statement stmt=con.createStatement();  //創(chuàng)建CallableStatement對(duì)象,用于執(zhí)行存儲(chǔ)過(guò)程  CallableStatement cs=con.prepareCall("{call PRO_YHDL1(?,?,?)}");  //注冊(cè)輸出參數(shù)  cs.registerOutParameter (3, Types.INTEGER);  int result = 0;  cs.setString(1,"123");   cs.setString(2,"123");   cs.execute();  result = cs.getInt (3);  dispResultSet(result);  cs.close();  con.close(); } catch(SQLException ex) {  System.out.println("* * * SQLException caught * * *");   while(ex!=null)  { System.out.println("SQLState: "+ex.getSQLState()); System.out.println("Message: "+ex.getMessage()); System.out.println("Vendor: "+ex.getErrorCode()); ex=ex.getNextException(); System.out.println("");  } } catch(java.lang.Exception ex) {  ex.printStackTrace(); } }(三)存儲(chǔ)過(guò)程舉例: 上一頁(yè)12345678下一頁(yè) Pro_yhdl1是一個(gè)存儲(chǔ)過(guò)程,它的功能是從數(shù)據(jù)庫(kù)表YHDL中取出PWD:import java.sql.*; public class Pro_yhdl1{public static void pro_yhdl1 ( String m_id,  String m_pwd,  int[] result ) throws SQLException, Exception{// Get connection to the databaseConnection con = DriverManager.getConnection("jdbc:default:connection");PreparedStatement stmt = null;ResultSet rs = null;String sql;String m_password="";sql = "SELECT"+ "  DB2ADMIN.YHDL.PWD"+ " FROM"+ "DB2ADMIN.YHDL"+ " WHERE"+ "("+ "  ( "+ " DB2ADMIN.YHDL.ID = '"+m_id.trim()+"'"+ "  )"+ ")";stmt = con.prepareStatement( sql );rs = stmt.executeQuery();// Access query resultswhile (rs.next()){  m_password=rs.getString(1);  m_password=m_password.trim();  if (rs.wasNull()) System.out.print("NULL");  else System.out.print(m_password); }if(m_password.equals(m_pwd.trim())){ result[0] =1;}else{ result[0] =0;}// close open resourcesif (rs != null) rs.close();if (stmt != null) stmt.close();if (con != null) con.close();// set return parameter//result[0] = result[0];}}九 JAVA數(shù)據(jù)庫(kù)鏈接(JDBC)DB2 的 Java 支持包括 JDBC,一個(gè)以供給商為中心的動(dòng)態(tài) SQL 接口,它通過(guò)標(biāo)準(zhǔn)的 Java方法提供對(duì)應(yīng)用程序的數(shù)據(jù)存取。JDBC 與 DB2 CLI 相似之處在于您不必預(yù)編譯或聯(lián)編 JDBC 程序。使用 JDBC 編寫(xiě)的應(yīng)用程序只使用動(dòng)態(tài) SQL。JDBC編程步驟:1建立與數(shù)據(jù)庫(kù)的連接: Class.forName("Com.ibm.db2.jdbc.net.DB2Driver"); connection con=DriverManager.getConnection(url);2.創(chuàng)建Statement對(duì)象: Statement stmt=con.createStatement();3執(zhí)行查詢(xún)語(yǔ)句: ResultSet rs=stmt.execQuery("SQL語(yǔ)句");4.獲取和設(shè)置選項(xiàng): ResultSetMetaData rsmd=rs.getMetaData(); int numCols=rsmd.getColumnCount()獲取結(jié)果集總列數(shù); rsmd.getColumnLabel(i))獲取記錄值; setMaxRows :設(shè)置結(jié)果集能容納的最多行數(shù). setQueryTimeout:設(shè)置一個(gè)語(yǔ)句執(zhí)行等待的時(shí)間. setEscapeProcessing:通知驅(qū)動(dòng)程序如何處理轉(zhuǎn)義字符.5.關(guān)閉Statement stmt.clost();十 調(diào)用層接口(CLI)CLI不是一種新的查詢(xún)語(yǔ)言,它只不過(guò)是應(yīng)用程序可利用SQL語(yǔ)句去提交事務(wù)處理的一種簡(jiǎn)單接口,對(duì)數(shù)據(jù)庫(kù)的查詢(xún)和修改,仍要使用SQL語(yǔ)言編寫(xiě),包括CLI函數(shù)的調(diào)用。調(diào)用層接口(CLI)為DB2所提供的處理動(dòng)態(tài)SQL語(yǔ)句的兩種機(jī)制之一,即在應(yīng)用程序首次運(yùn)行時(shí),動(dòng)態(tài)SQL語(yǔ)句提交給數(shù)據(jù)庫(kù)系統(tǒng),CLI依靠一組函數(shù)調(diào)用,可嵌入主語(yǔ)言中。 上一頁(yè)12345678
標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精精国产xxxx视频在线野外| 日韩精品一区二区三区免费观影| 国产一区观看| 激情视频网站在线播放色| 精品中文在线| 精品一区二区三区亚洲| 精品国产成人| 成人在线免费观看91| 成人精品动漫一区二区三区| 国产精品99一区二区三区| 日韩免费视频| 九一成人免费视频| 久久国产66| 日韩精品视频一区二区三区| 欧美日韩一区二区高清| 欧美国产先锋| 日韩一区电影| 久久青草久久| 亚洲激情精品| 日日摸夜夜添夜夜添国产精品| 日韩av黄色在线| 久久精品国产亚洲aⅴ| 岛国av在线播放| 久久精品1区| 另类亚洲自拍| 国产亚洲高清在线观看| 精品少妇一区| 亚洲高清不卡| 亚洲精品高潮| 国产精品玖玖玖在线资源| 国产白浆在线免费观看| 午夜国产欧美理论在线播放| 麻豆9191精品国产| 国产乱论精品| 成人日韩在线观看| 蜜臀av一区二区在线免费观看| 91成人福利| 日韩欧美网址| 一区二区三区午夜视频| 国产精品对白| 999久久久91| 亚洲精品高潮| 97在线精品| 亚洲区欧美区| 国产成人久久精品麻豆二区| 在线日韩视频| 日本欧美一区| 成人台湾亚洲精品一区二区| 国产午夜精品一区二区三区欧美| 国产日韩欧美一区二区三区在线观看| 国产精品不卡| 亚洲精品免费观看| 激情黄产视频在线免费观看| 蜜桃久久av一区| 国产成人精选| 一区二区国产在线观看| 日韩成人精品一区| 在线综合亚洲| 久久一区亚洲| 丝袜美腿亚洲一区| 岛国av在线播放| 日韩精品高清不卡| 亚洲精品永久免费视频| 深夜福利亚洲| 久久免费黄色| 欧美激情福利| 一区二区亚洲视频| 日韩不卡在线| 国产精品亲子伦av一区二区三区| 精品91久久久久| 激情久久99| 亚洲免费福利一区| 欧美日韩在线播放视频| 国产精品高清一区二区| 久久xxxx精品视频| 人人香蕉久久| 国产三级一区| 亚洲午夜精品久久久久久app| 国产美女久久| 蜜桃视频在线观看一区| 成人久久一区| 六月丁香综合在线视频| 亚洲一二av| 欧美va亚洲va日韩∨a综合色| 精品一区二区三区在线观看视频| 综合在线一区| 欧美天堂亚洲电影院在线观看| 国产一区二区三区精品在线观看| 91九色综合| 日韩在线一二三区| 久久精品国产亚洲夜色av网站| 精品视频免费| 日本午夜精品久久久久| 国产精品美女| 久久精品主播| 亚洲免费福利| 精品国产18久久久久久二百| 91嫩草精品| 亚洲资源网站| 久久成人国产| 亚洲经典在线| 久久精品国产www456c0m| av在线资源| 国产一区二区精品久| 国产精品videossex| 日韩精品视频一区二区三区| 中文字幕一区二区精品区| 九一精品国产| 亚洲午夜黄色| 国产99久久| 日韩av首页| 免费看av不卡| 一本大道色婷婷在线| 成人午夜网址| 国产+成+人+亚洲欧洲在线| 国产精品1区| 国产精品夜夜夜| 国产伦理一区| 国产伦精品一区二区三区在线播放| 欧美日韩一视频区二区| 欧美色综合网| 国产精品一区二区三区美女| 日本中文字幕视频一区| 亚洲精品在线二区| 日韩激情网站| 久久精品97| 国产精品久久久网站| 国产情侣久久| 国产亚洲精品美女久久 | 久久精品91| 麻豆精品蜜桃| 久久久久久美女精品| 久久久噜噜噜| 欧美粗暴jizz性欧美20| 欧美特黄一区| 亚洲欧美高清| 亚洲精品一级| 久久国产欧美日韩精品| 国产精品主播| 精品久久久中文字幕| 国产va在线视频| 久久中文亚洲字幕| 日韩一级网站| 视频精品一区二区| 午夜电影一区| 国产精品日韩精品中文字幕| 国产一区二区三区不卡av| 亚洲精品一级二级| 99国产精品久久久久久久| 亚洲久草在线| 国产日产高清欧美一区二区三区| 免费亚洲一区| 久久久男人天堂| 一区福利视频| 日本不卡视频在线观看| 欧美韩一区二区| 亚洲天堂资源| 国产偷自视频区视频一区二区| 日韩一区精品| 精品国产亚洲日本| 亚洲二区精品| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 欧美精品不卡| 麻豆视频在线观看免费网站黄| 久久久国产亚洲精品| 亚洲制服欧美另类| 精品视频高潮| 99国产精品久久久久久久成人热| 日本欧美大码aⅴ在线播放| 国产一区二区精品福利地址| 不卡中文字幕| 日本视频在线一区| 神马久久午夜| 伊人久久一区| 日韩av自拍| 伊人www22综合色| 国产粉嫩在线观看| 蜜臀va亚洲va欧美va天堂| 国产精品主播| 亚洲一级影院| 欧美久久一区二区三区| 人人草在线视频| 久热精品在线| 久久久久观看| 国产色综合网| 欧美激情一区| 好看不卡的中文字幕| 欧美精品中文字幕亚洲专区| 久久九九国产| 国产精品亚洲人成在99www| 日韩深夜视频| 亚洲精品欧美| 日韩av福利| 偷拍亚洲精品| 日本少妇一区| 国产精品2023| 日本大胆欧美人术艺术动态| 另类专区亚洲| 国产日韩欧美一区二区三区在线观看 | 中文字幕亚洲影视|