成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點

oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點

熱門標(biāo)簽:廣東營銷智能外呼系統(tǒng)商家 外呼電話系統(tǒng)用卡嗎 七日殺a19.5全地圖標(biāo)注 車瑪仕極限運動場所地圖標(biāo)注 N個你智能電銷機器人 地圖標(biāo)注怎么保存 電渠外呼系統(tǒng) 騰訊地圖標(biāo)注要費用嗎 高德地圖標(biāo)注公司名字大全

復(fù)習(xí)內(nèi)容:

PL/SQL的基本語法、記錄類型、流程控制、游標(biāo)的使用、

異常處理機制、存儲函數(shù)/存儲過程、觸發(fā)器。

為方便大家跟著我的筆記練習(xí),為此提供數(shù)據(jù)庫表文件給大家下載:點我下載

為了要有輸出的結(jié)果,在寫PL/SQL程序前都在先運行這一句:
set serveroutput on
結(jié)構(gòu):
declare
--聲明變量、類型、游標(biāo)
begin
--程序的執(zhí)行部分(類似于java里的main()方法)
exception
--針對begin塊中出現(xiàn)的異常,提供處理的機制
--when...then...
--when...then...
end;
舉例1:

declare
  v_sal number(10); (注意每句話后面別忘記了分號,跟java中的一樣)
begin
  select salary into v_sal from employees where employee_id = 100;
  dbms_output.put_line(v_sal);
end;

舉例2:

declare
  v_sal number(10); (注意,這里聲明的空間大小不能比原表中的?。?
  v_email varchar2(20);
  v_hire_date date;
begin
  select salary,email,hire_date into v_sal,v_email,v_hire_date from employees where employee_id = 
100;
  dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);
end;
或者:
declare
  v_sal employees.salary%type;
  v_email employees.email%type;
  v_hire_date employees.hire_date%type;
begin
  select salary,email,hire_date into v_sal,v_email,v_hire_date from employees where employee_id = 
100;
  dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);
end;

記錄:

declare 
  type emp_record is record(
   v_sal employees.salary%type,
   v_email employees.email%type,
   v_hire_date employees.hire_date%type
  );
  v_emp_record emp_record;
begin
  select salary,email,hire_date into v_emp_record from employees where employee_id = 100;
  dbms_output.put_line(v_emp_record.v_sal||','||v_emp_record.v_email||','|| 
  v_emp_record.v_hire_date);
end;

1、pl/sql基本的語法格式
2、記錄類型 type ... is ...record(,,,);
3、流程控制:
3.1 條件判斷(兩種)
方式一: if ... then elseif then ... else ... end if;
方式二: case ... when ... then ...end;
3.2 循環(huán)結(jié)構(gòu)(三種)
方式一:loop ... exit when ... end loop;
方式二:while ... loop ... end loop;
方式三:for i in ... loop ... end loop;
3.3 goto、exit
4.游標(biāo)的使用(類似于java中的Iterator)
5.異常的處理

6.會寫一個存儲函數(shù)(有返回值)、存儲過程(沒有返回值
7.會寫一個觸發(fā)器

復(fù)習(xí)記錄類型:

declare
type emp_record is record(
  -- v_emp_id employees.employee_id%type,
  -- v_sal employees.salary%type
  v_emp_id number(10) := 120,
  v_sal number(10,2) :=12000
);
  v_emp_record emp_record;
begin
  -- select employee_id,salary into v_emp_record from employees where employee_id = 123;
  dbms_output.put_line('employee_id:'||v_emp_record.v_emp_id||' '||'salary:'|| 
  v_emp_record.v_sal);
end;

也可以升級一下,要是想對表的所有列都輸出,則:(須注意輸出的列名要跟表中的列名要一樣)

declare
  v_emp_record employees%rowtype;
begin
  select * into v_emp_record from employees where employee_id = 123;
  dbms_output.put_line('employee_id:'||v_emp_record.employee_id||' '||'salary:'|| 
  v_emp_record.salary);
end;
使用記錄來執(zhí)行update操作:
declare 
  v_emp_id number(10);
begin
  v_emp_id :=123;
  update employees
  set salary = salary + 100
  where employee_id = v_emp_id;
  dbms_output.put_line('執(zhí)行成功!~~');
end;

流程控制:
查詢150號員工的工資,若其工資大于或等于10000 則打印‘salary >= 10000';
若在5000到10000之間,則打印‘5000 = salary 10000';否則打印‘salary 5000'

declare 
  v_sal employees.salary%type;
begin
  select salary into v_sal from employees where employee_id =150;
  if v_sal >= 10000 then dbms_output.put_line('salary >= 10000');
  elsif v_sal > 5000 then dbms_output.put_line('10000 > salary >= 5000');
  else dbms_output.put_line('salary  5000');
  end if;
  dbms_output.put_line('salary:'||v_sal);
end;
利用case ... when ... then ... when ...then ... else ... end實現(xiàn)上題;
declare 
  v_sal employees.salary%type;
  v_temp varchar2(20);
begin
  select salary into v_sal from employees where employee_id =150;
  v_temp :=
  case trunc(v_sal/5000) when 0 then 'salary  5000'
                  when 1 then '5000 = salary  10000'
                  else 'salary >= 10000'
                  end;
  dbms_output.put_line('salary:'||v_sal||' '||v_temp);
end;


查詢出122號員工的job_id,若其值為 ‘IT_PROG', 則打印‘GRADE:A'
                                                ‘AC_MGT', 則打印‘GRADE:B'
                                                ‘AC_ACCOUNT', 則打印‘GRADE:B'
                                                 否則打印‘GRADE:D'

declare 
  v_job_id employees.job_id%type;
  v_temp varchar2(20);
begin
  select job_id into v_job_id from employees where employee_id =122;
  v_temp :=
  case v_job_id when 'IT_PROG' then 'A'
            when 'AC_MGT' then 'B'
            when 'AC_ACCOUNT' then 'C'
            else 'D'
            end;
  dbms_output.put_line('job_id:'||v_job_id||' '||v_temp);
end;

使用循環(huán)語句打?。?-100

declare
  v_i number(5) :=1;

begin
  loop
  dbms_output.put_line(v_i);
  exit when v_i >=100;
  v_i := v_i + 1;
  end loop;
end;
使用while實現(xiàn):
declare
  v_i number(5) :=1;
begin
  while v_i = 100 loop
   dbms_output.put_line(v_i);
   v_i := v_i + 1;
  end loop;
end;
使用for...in...loop...end loop;實現(xiàn):
begin
  for c in 1..100 loop
   dbms_output.put_line(c);
  end loop;
end;


輸出2-100之間的質(zhì)數(shù)

declare
  v_i number(3):= 2;
  v_j number(3):= 2;
  v_flag number(1):= 1;
begin 
  while v_i=100 loop
   while v_j=sqrt(v_i) loop
    if mod(v_i,v_j)=0 then v_flag:=0;
    end if;
    v_j:= v_j+1;
   end loop;
  if v_flag = 1 then dbms_output.put_line(v_i);
  end if;
  v_j :=2;
  v_i := v_i + 1;
  v_flag := 1;
  end loop;
end;

利用for循環(huán)實現(xiàn)輸出2-100之間的質(zhì)數(shù):

declare
  v_flag number(1):= 1;
begin 
  for v_i in 2..100 loop
   for v_j in 2..sqrt(v_i) loop
    if mod(v_i,v_j)=0 then v_flag:=0;
    end if;
   end loop;
   if v_flag=1 then dbms_output.put_line(v_i);
   end if;
   v_flag := 1;
  end loop;
end; 

可以用goto改進一下:

declare
  v_flag number(1):= 1;
begin 
  for v_i in 2..100 loop
    for v_j in 2..sqrt(v_i) loop
     if mod(v_i,v_j)=0 then v_flag:=0;
     goto label;
     end if;
   end loop;
   label>>
   if v_flag=1 then dbms_output.put_line(v_i);
   end if;
   v_flag := 1;
  end loop;
end; 

打印1-100的自然數(shù),當(dāng)打印到50時,跳出循環(huán) ,輸出‘打印結(jié)束':

begin 
  for i in 1..100 loop
   if i=50 then goto label;
   end if;
  dbms_output.put_line(i);
  end loop;
label>>
  dbms_output.put_line('打印結(jié)束');
end;
或者:
begin 
  for i in 1..100 loop
   if i=50 then dbms_output.put_line('打印結(jié)束');
   exit;
   end if;
  dbms_output.put_line(i);
  end loop;
end;

 

游標(biāo):
打印出80部門的所有的員工的工資:salary:XXX
declare
v_sal employees.salary%type;
--定義游標(biāo)
cursor emp_sal_cursor is select salary from employees where department_id = 80;
begin
--打開游標(biāo)
open emp_sal_cursor;
--提取游標(biāo)
fetch emp_sal_cursor into v_sal;
while emp_sal_cursor%found loop
dbms_output.put_line('salary:'||v_sal);
fetch emp_sal_cursor into v_sal;
end loop;
--關(guān)閉游標(biāo)
close emp_sal_cursor;
end;
可以進行優(yōu)化如下:

declare
v_empid employees.employee_id%type;
v_lastName employees.last_name%type;
v_sal employees.salary%type;
cursor emp_sal_cursor is select employee_id,last_name,salary from employees where 
department_id = 80;
begin 
open emp_sal_cursor;
fetch emp_sal_cursor into v_empid,v_lastName,v_sal;
while emp_sal_cursor%found loop
dbms_output.put_line('employee_id:'||v_empid||', '||'last_name:'||v_lastName||', 
'||'salary:'||v_sal);
fetch emp_sal_cursor into v_empid,v_lastName,v_sal;
end loop;
close emp_sal_cursor;
end;

或者使用記錄再優(yōu)化一下:

declare
type emp_record is record(
v_empid employees.employee_id%type,
v_lastName employees.last_name%type,
v_sal employees.salary%type
);
v_emp_record emp_record;
cursor emp_sal_cursor is select employee_id,last_name,salary from employees where 
department_id = 80;
begin 
open emp_sal_cursor;
fetch emp_sal_cursor into v_emp_record;
while emp_sal_cursor%found loop
dbms_output.put_line('employee_id:'||v_emp_record.v_empid||', '||'last_name:'|| 
v_emp_record.v_lastName||', '||'salary:'||v_emp_record.v_sal);
fetch emp_sal_cursor into v_emp_record;
end loop;
close emp_sal_cursor;
end; 

可以使用for循環(huán)最優(yōu)化:(注意:在for循環(huán)中它會自動的打開游標(biāo)、提取游標(biāo),當(dāng)提取完里面的數(shù)據(jù)后也會自動
的關(guān)閉游標(biāo)

declare
cursor emp_sal_cursor is select employee_id,last_name,salary from employees where 
department_id = 80;
begin 
for c in emp_sal_cursor loop
dbms_output.put_line('employee_id:'||c.employee_id||', '||'last_name:'||c.last_name||', 
'||'salary:'||c.salary);
end loop;
end;


利用游標(biāo),調(diào)整公司中員工的工資:
工資范圍            調(diào)整基數(shù)
0 - 5000              5%
5000 - 10000       3%
10000 - 15000     2%
15000 -               1%
實現(xiàn):

declare 
  cursor emp_cursor is select employee_id,salary from employees;
  v_empid employees.employee_id%type;
  v_sal employees.salary%type;
  v_temp number(4,2);
begin 
  open emp_cursor;
  fetch emp_cursor into v_empid,v_sal;
  while emp_cursor%found loop
   if v_sal  5000 then v_temp:=0.05;
   elsif v_sal  10000 then v_temp:=0.03;
   elsif v_sal  15000 then v_temp:=0.02;
   else v_temp:=0.01;
   end if;
  dbms_output.put_line(v_empid||','||v_sal);
  update employees
  set salary = salary * (1+v_temp)
  where employee_id = v_empid;
  fetch emp_cursor into v_empid,v_sal;
  end loop;
  close emp_cursor;
end;

用for循環(huán)實現(xiàn)

declare 
  cursor emp_cursor is select employee_id,salary from employees;
  v_temp number(4,2); 
begin 
  for c in emp_cursor loop
   if c.salary 5000 then v_temp:=0.05;
   elsif c.salary 10000 then v_temp:=0.03;
   elsif c.salary 15000 then v_temp:=0.02;
   else v_temp:=0.01;
  end if;
  update employees
  set salary = salary * (1+v_temp)
  where employee_id = c.employee_id;
  end loop;
end;

隱式游標(biāo):更新員工salary(漲工資10),如果該員工沒有找到,則打印“查無此人”信息:

begin 
  update employees
  set salary = salary + 10
  where employee_id = 1001;
   if sql%notfound then dbms_output.put_line('查無此人');
   end if;
end;

異常:
預(yù)定義異常:(有24個預(yù)定義異常,可查表

declare
  v_sal employees.salary%type;
begin 
  select salary into v_sal from employees 
  where employee_id > 100;
  dbms_output.put_line(v_sal); 
exception
  when too_many_rows then dbms_output.put_line('輸出的行數(shù)過多');
  when others then dbms_output.put_line('出現(xiàn)其它的異常了');
end;

非預(yù)定義異常:

declare
  e_deleteid_exception exception;
  pragma exception_init(e_deleteid_exception,-2292);
begin 
  delete from employees
  where employee_id = 100; 
exception
  when e_deleteid_exception then dbms_output.put_line('違反了完整性約束,故不能刪除此用戶');
  when others then dbms_output.put_line('出現(xiàn)其它的異常了');
end;

用戶自定義異常:

declare
  e_sal_hight exception;
  v_sal employees.salary%type;
begin 
  select salary into v_sal from employees where employee_id = 100;
  if v_sal > 10000 then raise e_sal_hight;
  end if;
exception
  when e_sal_hight then dbms_output.put_line('工資太高了');
  when others then dbms_output.put_line('出現(xiàn)其它的異常了');
end;

通過select...into...查詢某人的工資,若沒找到則打印出“未找到此數(shù)據(jù)”:

declare
  v_sal employees.salary%type;
begin 
  select salary into v_sal from employees where employee_id = 1001;
exception
  when no_data_found then dbms_output.put_line('未找到此數(shù)據(jù)');
  when others then dbms_output.put_line('出現(xiàn)其它的異常了');
end;
更新指定員工工資,如工資小于300,則加100,對NO_DATA_FOUND異常,TOO_MANY_ROWS進行處理。
declare
  v_sal employees.salary%type;
begin 
  select salary into v_sal from employees where employee_id = 1001;
  if v_sal  300 then update employees set salary = salary + 100 where employee_id =101;
  end if;
exception
  when no_data_found then dbms_output.put_line('未找到此數(shù)據(jù)');
  when too_many_rows then dbms_output.put_line('輸出的行數(shù)太多了');
  when others then dbms_output.put_line('出現(xiàn)其它的異常了');
end;

自定義異常:
更新指定員工工資,增加100;若指定員工不在,則拋出異常:NO_RESULT;

declare 
  no_result exception;
begin 
  update employees set salary = salary + 100 where employee_id = 1001;
  if sql%notfound then raise no_result;
  end if;
exception 
  when no_result then dbms_output.put_line('查無此數(shù)據(jù),更新失敗'); 
  when others then dbms_output.put_line('出現(xiàn)其它異常'); 
end;


存儲過程:
寫個簡單的hello_world存儲函數(shù)

create or replace function hello_world 
return varchar2
is (相當(dāng)于declare,可以在其后面定義變量、記錄、游標(biāo))
begin 
  return 'helloworld';
end;
存儲函數(shù)的調(diào)用:
begin 
  dbms_output.put_line(hello_world);
end;
或者:
select hello_world from dual;


帶參數(shù)的存儲函數(shù):

create or replace function hello_world1(v_logo varchar2)
return varchar2
is 
begin 
  return 'helloworld'||v_logo;
end;
調(diào)用:
select hello_world1('shellway') from dual
或者:
begin 
  dbms_output.put_line(hello_world1('shellway'));
end;


定義一個獲取系統(tǒng)時間的函數(shù):

create or replace function get_sysdate
return varchar2
is 
begin 
  return to_char(sysdate,'yyyy-MM-dd HH24:mi:ss');
end;


定義帶參數(shù)的函數(shù),兩個數(shù)相加

create or replace function add_param(v_num1 number,v_num2 number)
return number
is
  v_num3 number(10);
begin
  v_num3 := v_num1 + v_num2;
  return v_num3;
end;
調(diào)用:
select add_param(2,5) from dual;
或者:
begin 
  dbms_output.put_line(add_param(5,4));
end; 


定義一個函數(shù):獲取給定部門的工資總和,要求:部門號定義為參數(shù),工資總額為返回值:

create or replace function get_sal(dept_id number)
return number
is 
  v_sumsal number(10) := 0;
  cursor salary_cursor is select salary from employees where department_id = dept_id;
begin 
  for c in salary_cursor loop 
  v_sumsal := v_sumsal + c.salary;
  end loop;
  return v_sumsal;
end;
調(diào)用:
select get_sal(80) from dual;


定義一個函數(shù):獲取給定部門的工資總和 和 該部門的員工總數(shù)(定義為OUT類型的參數(shù))。
要求:部門號定義為參數(shù),工資總額定義為返回值。

create or replace function get_sal(dept_id number,total_count out number)
return number
is 
 v_sumsal number(10) := 0;
 cursor salary_cursor is select salary from employees where department_id = dept_id;
begin 
  total_count := 0;
  for c in salary_cursor loop 
    v_sumsal := v_sumsal + c.salary;
    total_count := total_count + 1;
  end loop;
  return v_sumsal;
end;
調(diào)用:
declare
  v_count number(4);
begin 
  dbms_output.put_line(get_sal(80,v_count));
  dbms_output.put_line(v_count);
end;


定義一個存儲過程:獲取給定部門的工資總和(通過out參數(shù)),要求部門號和工資總額定義為參數(shù)。
(注意:存儲過程和存儲函數(shù)是不一樣的,存儲函數(shù)有返回值而存儲過程沒有,調(diào)用時候存儲過程直接調(diào)用)

create or replace procedure get_sal1(dept_id number,sumsal out number)
is 
 cursor salary_cursor is select salary from employees where department_id = dept_id;
begin 
 sumsal := 0;
 for c in salary_cursor loop 
   sumsal := sumsal + c.salary;
 end loop;
 dbms_output.put_line(sumsal);
end;
調(diào)用:
declare 
  v_sal number(10):=0; 
begin 
 get_sal1(80,v_sal);
end;


對給定部門(作為輸入?yún)?shù))的員工進行加薪操作,若其到公司的時間在(?,95)期間,為其加薪5%

                                                                                          (95,98)                  3%

                                                                                          (98,?)                   1%
得到以下返回結(jié)果:為此次加薪公司每月額外付出多少成三(定義一個OUT型的輸出參數(shù))

create or replace procedure add_sal(dept_id number,temp out number)
is
  cursor sal_cursor is select employee_id,salary,hire_date 
  from employees where department_id = dept_id;
  v_temp number(4,2):=0;
begin 
  temp := 0;
  for c in sal_cursor loop
    if to_char(c.hire_date,'yyyy')  '1995' then v_temp:=0.05;
    elsif to_char(c.hire_date,'yyyy')  '1998' then v_temp:=0.03;
    else v_temp:=0.01;
    end if;

  update employees 
  set salary = salary * (1+v_temp) 
  where employee_id = c.employee_id;

  temp := temp + c.salary*v_temp; 
  end loop;
  dbms_output.put_line(temp);
end;
調(diào)用:
declare 
  v_i number(10):=0;
begin
  add_sal(80,v_i);
end;

觸發(fā)器:
觸發(fā)事件:在INSERT,UPDATE,DELETE情況下會觸發(fā)TRIGGER
觸發(fā)時間:該TRIGGER是在觸發(fā)事件發(fā)生之前(BEFORE)還是之后(AFTER)
觸發(fā)器本身:該TRIGGER被觸發(fā)之后的目的和意圖,正是觸發(fā)器本身要做的事情,如PL/SQL塊
觸發(fā)頻率:有語句級(STATEMENT)觸發(fā)器和行級(ROW)觸發(fā)器
寫一個簡單的觸發(fā)器:

create or replace trigger update_emp_trigger
after
  update on employees
for each row (行級觸發(fā)器,即每更新一條記錄就會輸出一次'helloworld',若沒有這語句則是語句級觸發(fā)器)
begin
  dbms_output.put_line('helloworld');
end;


使用:new,:old修飾符:

1、
create table emp1
as
select employee_id,salary,email from employees where department_id = 80;
2、
create or replace trigger update_emp_trigger2
after
  update on emp1
for each row
begin
  dbms_output.put_line('old salary:'||:old.salary||'new salary:'||:new.salary);
end;
3、
update emp1 set salary = salary + 100 ;


編寫一個觸發(fā)器,在對my_emp記錄進行刪除的時候,在my_emp_bak表中備份對應(yīng)的記錄

1、創(chuàng)建my_emp表:
create table my_emp 
as
select employee_id,salary from employees ;
2、創(chuàng)建my_emp_bak表:
create table my_emp_bak
as
select employee_id,salary from employees where 1=2;
3、檢查創(chuàng)建的表中的記錄:
select * from my_emp
select * from my_emp_bak
4、創(chuàng)建一個觸發(fā)器:
create or replace trigger delete_emp_trigger 
before
  delete on my_emp 
for each row
begin
  insert into my_emp_bak 
  values(:old.employee_id,:old.salary);
end;
5、執(zhí)行含有觸發(fā)器時間的語句:
delete from my_emp
6、檢查觸發(fā)器執(zhí)行后的結(jié)果:
select * from my_emp
select * from my_emp_bak

您可能感興趣的文章:
  • PL/SQL Dev連接Oracle彈出空白提示框的解決方法分享
  • 64位win7下pl/sql無法連接oracle解決方法
  • Oracle中PL/SQL中if語句的寫法介紹
  • Oracle中在pl/sql developer修改表的2種方法
  • ORACLE PL/SQL 觸發(fā)器編程篇介紹
  • Oracle 10G:PL/SQL正規(guī)表達式(正則表達式)手冊
  • 在Oracle PL/SQL中游標(biāo)聲明中表名動態(tài)變化的方法
  • PL/SQL實現(xiàn)Oracle數(shù)據(jù)庫任務(wù)調(diào)度
  • Oracle PL/SQL語言入門基礎(chǔ)
  • Oracle PL/SQL入門案例實踐
  • Oracle PL/SQL入門慨述
  • Oracle教程之pl/sql簡介

標(biāo)簽:長沙 蘇州 棗莊 玉樹 來賓 贛州 遼寧 大興安嶺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點》,本文關(guān)鍵詞  oracle,復(fù)習(xí),筆記,之,SQL,程序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點》相關(guān)的同類信息!
  • 本頁收集關(guān)于oracle復(fù)習(xí)筆記之PL/SQL程序所要了解的知識點的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    aⅴ在线免费观看| 性欧美视频videos6一9| 在线日韩网站| 国产午夜亚洲精品午夜鲁丝片| 成人在线观看高清| 成人高清视频观看www| 青春草在线视频免费观看| 奇米视频888| 97涩涩爰在线观看亚洲| 日本女人性生活视频| 久久久久久一二三区| 色哟哟国产精品色哟哟| 国产精品一线天粉嫩av| 国产免费不卡视频| 精品欧美一区二区三区| 好吊视频一二三区| 成人av在线资源| 国产精品入口芒果| 久久久久999| 精品电影一区二区三区| 午夜神马福利影院| 久久精品青青大伊人av| 亚洲av永久无码精品| 好吊色视频一区二区三区| 裸体一区二区三区| 色噜噜狠狠狠综合曰曰曰88av| 国产超碰精品在线观看| 殴美一级特黄aaaaaa| 久久uomeier| 在线观看日韩电影| 久久日韩粉嫩一区二区三区| 国内精品视频免费| 午夜一区二区三区在线观看| 国产精品免费视频久久久| 欧美一级二级三级| 精品不卡一区| 日本肉体xxxx裸体xxx免费| 在线观看中文字幕码| 欧美做受高潮中文字幕| 国产乱人伦精品一区二区三区| bt天堂新版中文在线地址| 日本片在线看| 亚洲乱码精品一二三四区日韩在线| 成人国产精品毛片| 欧美肥老妇视频| 在线视频中文字幕久| 国产精品成人观看视频国产奇米| 亚洲精品免费一区亚洲精品免费精品一区| 香蕉久久一区| 色噜噜狠狠狠综合曰曰曰88av| 国产精品福利一区二区| 变态黄色小视频网站| av网站在线免费看推荐| 亚洲精品天天看| 欧美日本在线播放| 中文字幕av久久爽一区| 色婷婷av一区二区三区gif| 午夜一区二区视频| 一区二区www| 国产成人精品一区二三区| 熟年交尾五十路视频在线播放| 北条麻妃国产九九九精品小说| 久久不卡日韩美女| 日韩亚洲欧美成人| 91亚洲欧美| 国产精品毛片a∨一区二区三区|国| 中老年在线免费视频| 亚洲同志网站入口| av男人一区| 成人午夜精品无码区| www污污在线| 国产亚洲精品午夜高清影院| 亚洲三级小视频| 国产精品成久久久久三级| 国产欧美一区在线| 国产裸体歌舞团一区二区| 二区三区在线| 99久热re在线精彩视频| 德国极品另类| 日韩精品一区二区三区视频| 免费观看成人毛片| 一根才成人网| 51视频国产精品一区二区| 美国av一区二区三区| 在线观看久久av| 在线中文字幕一区二区| 国产乱子视频| 在线观看国产精品日韩av| 国产一线在线观看| 亚洲开心激情| 亚洲综合男人的天堂| 国产精品午夜国产小视频| 北条麻妃一区二区三区在线| 成人在线观看高清| 天堂中文在线官网| 五月天婷婷丁香网| 在线免费日韩片| 欧美大黑bbbbbbbbb在线| 97国产精品久久久| 国产精品久久久久av福利动漫| 欧洲av无码放荡人妇网站| 成人免费网视频| 在线观看亚洲专区| 亚洲香肠在线观看| 老司机凹凸av亚洲导航| 日韩视频在线观看国产| 97色婷婷成人综合在线观看| 岛国在线视频| 亚洲黄色免费网站| 美女脱光衣服与内衣内裤一区二区三区四区| 国产精品对白一区二区三区| 免费萌白酱国产一区二区三区| 操人真爽免费视频| 91香蕉视频免费在线观看| 中文字幕高清在线免费播放| 国产精品免费观看高清| 成人一区二区三区视频在线观看| 天堂av中文在线观看| 国产女人精品视频| 中文日本高清免费| 蜜桃久久久久久| 成人午夜视频一区二区播放| 国产v片在线观看| 91精品国产麻豆国产在线观看| 亚洲无人区一区| 男女羞羞视频在线观看| 国产特黄级aaaaa片免| 色yeye免费人成网站在线观看| 色先锋资源在线播放av| 成人国产精品色哟哟| 亚洲人成电影在线播放| hitomi一区二区三区精品| 欧美bbbbbbbbbbbb精品| 色之综合天天综合色天天棕色| 日本精品一区二区三区在线观看视频| 91露出在线| 亚洲无毛电影| 男人的天堂99| 国产欧美久久久久久久久| 一区二区三区视频在线观看免费| 日本伊人精品一区二区三区观看方式| 国产在线一区二区三区四区| 男人的天堂成人在线| 成人污版视频| 午夜av在线免费观看| 久久久久久无码精品人妻一区二区| 四虎永久免费地址| 久久久久久免费网| 色悠久久久久综合先锋影音下载| 在线观看国产精品入口| 久久精品国产亚洲7777| 精品一区二区三区蜜桃在线| 在线观看中文字幕的网站| 日韩成人av免费| 精品精品国产毛片在线看| 日韩免费福利视频| 超碰97在线免费观看| 国产露脸91国语对白| 欧美壮男野外gaytube| 欧美韩日一区二区| 精品樱空桃一区二区三区| 国产调教视频一区| 加勒比中文字幕精品| 欧美精品久久久久久久久老牛影院| 99久久夜色精品国产亚洲96| 色总=综合色| 欧美二区三区的天堂| 国产又猛又黄又爽| 欧洲精品99毛片免费高清观看| 黄频视频在线观看| 男人的天堂www| 精品人妻伦一二三区久久| 中国麻豆视频| 91精品入口蜜桃| 中文字幕中文字幕一区三区| 夜夜嗨av一区二区三区免费区| 欧美一级黄视频| 黑人糟蹋人妻hd中文字幕| www.av精品| 国产一区在线视频观看| 亚洲最大最好的私人影剧院| 免费看成年人视频在线观看| 国产日产一区二区三区| 日韩成人av在线资源| 二区在线观看| 一区二区三区在线免费观看视频| 香蕉av在线播放| 亚洲欧美视频一区| 色www精品视频在线观看| 亚洲天堂免费在线| 精品99又大又爽又硬少妇毛片| 成人自拍视频网| 综合天天久久| 欧美片第1页综合| 精品一区在线观看视频| 久久久久久久一区二区三区| 亚洲另类在线观看| 日本免费黄视频| 亚洲麻豆av| 翔田千里精品久久一区二| 精品一级毛片| 一区精品久久| 久久天堂精品| 亚洲精品一区国产精品| 8x海外华人永久免费日韩内陆视频| 九九九热精品免费视频观看网站| 日本午夜精品久久久| 偷拍夫妻性生活| 欧美国产一区二区三区激情无套| 日本免费高清不卡| 懂色av噜噜一区二区三区av| 97se亚洲国产综合自在线| 天天操天天插天天射| 国产精品二三区| 成人黄色免费电影| 四虎精品在永久在线观看| 男人与禽猛交狂配| 亚洲精品自产拍在线观看| 精品国产视频在线观看| 国产成人av自拍| 中文字幕 日韩 欧美| 久久久久免费观看| 外国精品视频在线观看| jlzzjlzzjlzz亚洲人| 久久久久国产美女免费网站| 国产精品一区二区男女羞羞无遮挡| 国产视频不卡一区| 黄色成人av在线| 在线播放av中文字幕| 亚洲天堂999| 欧美一个色资源| 国产精品乱子久久久久| 天天综合网久久综合网| 懂色av.com| 偷偷色噜狠狠狠狠的777米奇| 亚洲欧美一区二区三区四区五区| 神马久久高清| 成年人网站免费看| 欧美—级高清免费播放| 欧美区在线播放| 五月天综合网站| 国产91精品在线观看| 亚洲精品综合网| 亚洲同志网站入口| 拍拍拍在线观看视频免费| 国产成人精选| 亚洲综合福利| 先锋影音av资源在线| 97国产在线观看| jizz.www| 欧美性www| 视频一区国产| 亚洲第一福利专区| 人成网站在线观看| 中文字幕不卡每日更新1区2区| 国产卡1卡2卡三卡在线| 成人有码在线视频| 红桃视频 国产| 精品人妻无码一区二区三区换脸| 少妇精品无码一区二区三区| 成人在线免费公开观看视频| 国产欧美一区二区在线| 日韩精品电影一区二区三区| 911久久香蕉国产线看观看| 中文字幕一区二区三区中文字幕| 日韩一级网站| 午夜激情一区| 日韩电影在线观看网站| 91网在线播放| 2019av中文字幕| 亚洲欧美在线一区| 黄色动漫在线观看| 96pao国产成视频永久免费| 猛男gaygay欧美视频| 国产美女精品一区二区三区| 国产精品毛片久久久| 亚洲精品午夜久久久| 这里只有精品在线| 国产精品素人一区二区| 国产精品手机在线播放| 日本伦理一区二区| 美女国产一区二区| 一级片免费在线观看视频| 欧美片第一页| 国产亚洲高清一区| 哺乳一区二区三区中文视频| 午夜精品一区二区三区在线视| 日韩精品三区| 欧美视频亚洲图片| 欧美成人手机在线视频| 欧美成人免费在线视频| 亚洲一区二区三区涩| 欧美人与禽zozo性伦| 国产一区国产精品| 欧美黄色视屏| 免费黄色激情视频| 国产精品扒开腿做爽爽爽视频| 久久精品人人| 免费黄色日本网站| 韩剧1988在线观看免费完整版| 亚洲系列第一页| 欧美videosex性欧美黑吊| 香蕉大人久久国产成人av| 亚洲国产精彩视频| 一区视频在线看| 久久亚裔精品欧美| 搡女人真爽免费午夜网站| 国产最新精品精品你懂的| 欧美人与z0zoxxxx特| 日韩精品中文字幕在线观看| 久久久久久美女精品| 99精品在线免费在线观看| 九九热hot精品视频在线播放| 国产在线a视频| 欧美久久久久中文字幕| 免费在线观看一区二区三区| 又黄又爽的视频在线观看| 亚洲444eee在线观看| 久久久久久久久久久久久久久国产| 中日韩一区二区三区| 国产黄在线观看| 亚洲精品粉嫩美女一区| 日本在线中文电影| 国产精品一区二区欧美| 天堂网www在线中文天堂| 色久视频在线观看| 日本午夜精品理论片a级app发布| 日韩在线观看电影完整版高清免费|