日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

08_MySQL的函数

發布時間:2023/12/20 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 08_MySQL的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

08_MySQL的函數

一、介紹

概述:

? 在MySQL中,為了提高代碼重用性和隱藏實現細節,MySQL提供了很多函數。函數可以理解為別人封裝好的模板代碼。

分類:

? 在MySQL中,函數非常多,主要可以分為以下幾類:

  • 聚合函數
  • 數學函數
  • 字符串函數
  • 日期函數
  • 控制流函數
  • 窗口函數(MySQL8.0以上才有)

二、MySQL中的函數-聚合函數

1、概述

  • 在MySQL中,聚合函數主要由:count,sum,min,max,avg,這些聚合函數我們之前都學過,不再重復。這里我們學習另外一個函數:group_concat(), 該函數用于實現行的合并
  • ==group_concat()==函數首先根據group by指定的列進行分組,并且用分隔符分隔,將同一個分組中的值連接起來,返回一個字符串結果。

格式:

groupe_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separation '分隔符'])

說明:

? (1)使用distinct可以排除重復值;

? (2)如果需要對結果中的值進行排序,可以使用order by子句;

? (3)separator是一個字符串值,默認為逗號。

2、使用方法

數據準備

create database if not exists mydb4; use mydb4; create table emp(emp_id int primary key auto_increment comment '編號',emp_name char(20) not null default '' comment '姓名',salary decimal(10,2) not null default 0 comment '工資',department char(20) not null default '' comment '部門' );insert into emp(emp_name,salary,department) VALUES ('張晶晶',5000,'財務部'),('王飛飛',5800,'財務部'),('趙剛',6200,'財務部'),('劉小貝',5700,'人事部'),('王大鵬',6700,'人事部'),('張小斐',5200,'人事部'),('劉云云',7500,'銷售部'),('劉云鵬',7200,'銷售部'),('劉云鵬',7800,'銷售部');

操作:

-- 將所有員工的名字合并成一行 select group_concat(emp_name) from emp; -- 指定分隔符合并 select group_concat(emp_name separator ';') from emp; -- 指定排序方式和分隔符 select department,group_concat(emp_name order by salary desc separator ';') from emp group by department;

三、MySQL中的函數-數學函數

1、介紹

函數名描述實例
ABS(x)返回x的絕對值返回-1的絕對值:select ABS(-1) --返回1
CEIL(x)返回大于或等于x的最小整數select CEIL(-1) – 返回2
FLOOR(x)返回小于或等于x的最大整數小于或等于1.5的整數;select floor(1.5)-- 返回1
greates(expr1,expr2,…)返回列表中的最大值返回一下數字列表中的最大值:select greatest(3,12,34,8,25); – 34 返回以下字符串列表中的最大值:select greatest(“Google”,“Runoob”,“Apple”); – Runboob
least(expr1,expr2,…)返回列表中的最小值返回以下數字列表中的最小值:select greatest(3,12,34,8,25); – 34 返回以下字符串列表中的最小值:select greatest(“Google”,“Runoob”,“Apple”); – Runboob
max(expression)返回字段expression中的最大值返回數據表Products中字段Price的最大值:select max(price) as largestPrice from Products;
min(expression)返回字段expression中的最小值返回數據表Products中字段Price的最大值:select min(price) as MinPrice from Products;
mod(x,y)返回x除以y以后的余數5除以2的余數:select mod(5,2) – 1
PI()返回圓周率(3.1315926)select PI() – 3.1415926
pow(x,y)返回x的y次方2的3次方:select pow(2,3) – 8
rand()返回0到1的隨機數select rand() -0.93099315644334
round()返回離x最近的整數(遵循四舍五入)select round(1.23456) – 1
round(x,y)返回指定位數的小數(遵循四舍五入)select round(1.23456,3) – 1.235
truncate(x,y)返回數值x保留到小數點后y位的值(與round最大的區別是不會進行四舍五入)select truncate(1.2345, 3) – 1.234

2、操作

-- 數學函數 -- 求絕對值 select abs(-10); select abs(10); select abs(表達式或字段) from 表; -- 向上取整 select ceil(1.1); -- 2 select ceil(1.0); -- 1 -- 向下取整 select floor(1.1); -- 1 select floor(1.9); -- 1 -- 取列表最大值 select greatest(1,2,3); -- 3 -- 取列表最小值 select least(1,2,3); -- 1 -- 取模 select mod(5,2); -- 1 -- 取x的y次方 select power(2,3); -- 8 -- 取隨機數 select rand(); select floor(rand() * 100); -- 取小數的四舍五入 select round(3.5415); -- 將小數的四舍五入取指定位置小數 select round(3.5415, 3); -- 3.542 -- 將小數直接截取到指定位數 select truncate(1.1415, 3); -- 1.141

四、MySQL中的函數-字符串函數

1、介紹

函數描述實例
char_length(s)返回字符串s的字符數返回字符串RUNOOB的字符數select char_length(“RUNOOB”) as lengthOfString;
character_length返回字符串s的字符數返回字符串RUNOOB的字符數select character_length(“RUNOOB”) as lengthOfString;
concat(s1,s2,…sn)字符串s1,s2等多個字符串合并為一個字符串合并多個字符串:select concat(“SQL”,“RUNOOB”,‘Google’,“Facebook”) as ConcatenatedString;
concat_ws(w,s1,s2,…sn)同concat(s1,s2,…)函數,但是每個字符串之間要加上x,x可以是分隔符合并多個字符串,并添加分隔符,select concat_ws(“-”,“sql”,“Tutorial”) as ConcatenatedString;
field(s,s1,s2…)返回第一個字符串s在字符串列表(s1,s2…)中的位置返回字符串c在列表值中的位置:select field (“c”,“a”,“b”,“c”,“d”);
ltrim(s)去掉字符串s開始處的空格去掉字符串RUNOOB開始處的空格:select ltrim (’ runoob’) as leftTrim; – RUNOOB
MID(s,n,len)從字符串s的n位置截取長度為len的子字符串,同SUBSTRING(s,n,len)從字符串RUNOOB中的第二個位置截取3個字符:select mid(‘RUNOOB’,2,3) AS ExtractString; – UNO
position(s1 in s)從字符串s中獲取s1的開始位置返回字符串abc中b的位置:select position (‘b’ in ‘abc’) ; – 2
replace(s,s1,s2)將字符串s2替代字符串s中的字符串s1將字符串abc中的字符a替換為字符x:select replace(‘abc’,‘a’, ‘x’); – xbc
reverse(s)將字符串s的順序反過來將字符串abc的順序反過來:select reverse(‘abc’); – cba
right(s,n)返回字符串s的后n個字符返回字符串runoob的后兩個字符:select right(‘runoob’,2); – ob
rtrim(s)去掉字符串s結尾處的空格去掉字符串RUNOOB的末尾空格:select rtrim("RUNOOB ") as rightTrim; – RUNOOB
strcmp(s1,s2)比較字符串s1和s2,如果s1和s2相等返回0,如果s1>sc返回1,如果s1<s2返回-1比較字符串:select strcmp(“runoob”,“runoob”); – 0
substr(s,start,length)從字符串s的start位置截取長度為length的子字符串從字符串RUNOOB中的第2個位置截取3個字符:select substr(“RUNOOB”,2,3) AS ExtractString; – UNO
substring(s,start,length)從字符串s的start位置截取長度為length的字符串從字符串RUNOOB中的第2個位置截取3個字符:select substring(“RUNOOB”,2,3) AS ExtractString; – UNO
trim(s)去掉字符串s開始和結尾處的空格去掉字符串RUNOOB的首尾空格:select trim(’ RUNOOB ') AS TrimmedString;
ucase(s)將字符串轉換為大寫將字符串runoob轉換為大寫:select ucase(‘runoob’); – RUNOOB
upper(s)將字符串轉換為大寫將字符串runoob轉換為大寫:select upper(‘runoob’); – RUNOOB
lcase(s)將字符串轉換為小寫將字符串RUNOOB轉換為小寫:select upper(‘RUNOOB’); – runoob
lower(s)將字符串轉換為小寫將字符串轉換為小寫將字符串RUNOOB轉換為小寫:select upper(‘RUNOOB’); – runoob

2、操作

-- 字符串函數 -- 1.獲取字符串字符個數 select CHAR_LENGTH("hello"); -- 5 select char_length('你好嗎'); -- 3 -- length取長度,返回的單位是字節 select length('hello'); -- 5 select length('你好嗎'); -- 9 -- 2.字符串合并 select concat("hello", 'world'); select concat(c1,c2) from table_name; -- 3.指定分隔符進行字符串合并 select concat_ws('-','hello','world'); -- 4.返回字符串在列表中第一次出現的位置 select field('aaa','aaa','bbb','ccc'); -- 1 select field('bbb','aaa','bbb','ccc'); -- 2 -- 5.去除字符串空格 select ltrim(' aaaa'); -- 去除字符串左邊空格 select rtrim(' | aaa '); -- 去除字符串右邊空格 select trim(' aaa '); -- 去除字符串兩端空格 -- 6.字符串截取 select mid("helloworld", 2, 3); -- 從第二個字符開始截取,截取長度為3 -- 7.獲取字符串A在字符串中出現的位置 select position('abc'in 'helloabcworld'); -- 8.字符串替換 select replace('aaahelloaaaworld','aaa','bbb'); -- 9.字符串翻轉 select reverse('hello'); -- 10.返回字符串的后幾個字符 select right('hello',3); -- 返回最后三個字符 -- 11.字符串比較 select strcmp('hello','world'); -- 12.字符串截取 select substr('hello',2,3); -- 從第二個字符開始截取,截取三個字符 select substring('hello',2,3); -- 從第二個字符開始截取,截取三個字符 -- 13.將小寫轉大寫 select ucase('helloWorld'); -- HELLOWORLD select upper('helloWorld'); -- HEELOWORLD -- 14.將大寫轉為小寫 select lcase('helloWorld'); -- helloworld select lower('helloWorld'); -- helloworld 結合查詢案例:查出員工的雇傭年份和名字 select enamel,substr(hiredate,1,4) from emp;

五、MySQL中的函數-日期函數

1、介紹

函數名描述實例
unix_timestamp()返回從1970-01-01 00:00:00到當前毫秒值select unix_timestamp(); -->1632729059
unix_timestamp(date_string)將指定日期轉為毫秒值時間戳select unix_timestamp(‘2021-12-07 13:01:03’);
from_unixtime(bigint unixtime[,stringformat])將毫秒值時間戳轉為指定格式日期select from_unixtime(1598079966,‘%Y-%m-%d %H:%i:%s’);(1598079966, ‘%Y-%m-%d %H:%i:%s’); -->2020-08-22 15-06-06
curdate()返回當前日期select curdate(); -->2018-09-19
current_date()返回當前日期select curdate(); -->2018-09-19
current_time()返回當前時間select current_time();–>19:59:02
curtime()返回當前時間select curtime();–>19:59:02
current_timestamp()返回當前日期和時間select current_timestamp();–>2018-09-19 20:57:43
date()從日期或日期時間表達式中提取日期值select date(‘2017-06-15’);–>2017-06-15
datediff(d1,d2)計算日期d1–>d2之間相隔的天數select datediff(‘2001-01-01’,‘2001-02-02’);–>-32
timediff(time1,time2)計算時間差值select timediff(‘13:10:11’,“13:10:10”);–>00:00:01
date_format(d,f)按表達式f的要求顯示日期dselect data_format(‘2011-11-11 11:11:11’, ‘%Y-%m-%d %r’);–>2011-11-11 11:11:11 AM
STR_TO_DATE(string,
format_mask)
將字符串轉變為日期select str_to_date(‘August 10 2017’, ‘%M %d % Y’);–>2017-08-10
DATE_SUB(date,interval expr type)函數從日期減去指定的時間間隔Orders表中OrderDate字段減去2天:select OrderId, DATE_SUB(OrderDate,INTERVAL 2 DAY) AS OrderPayDate FROM Orders;
adddate/date_add(d,
interval expr type)
計算起始日期d加上一個時間段后的日期
type值可以是:microsecond, second,
minute,hour,Day,week,month,quarter,
year,day_minute,day_hour,year_month
select date_add(‘2017-06-15’, interva 10 day);–>2017-06-25
select date_add(‘2017-06-15 09:34:21’,interval 15 minute);–>2017-06-15 09:49:21
select date_add(‘2017-06-15 09:34:21’,interval -3 hour);–>2017-04-15
extract(type from d)從日期d中獲取指定的值,type指定返回的值。type可以取值為microsecond, second, minute,hour…select extract(minute from’2011-11-11 11:11:11’);–>11
last_day(d)返回給定日期的那一月份的最后一天select last_day(‘2017-06-20’);–>2017-06-30
makedate(year,day-of-year)基于給定參數年份year和所在年終的天數序號day-of-year返回一個日期select makedate(2017,3);–>2017-01-03
year(d)返回年份select year(‘2017-06-15’);–>2017
month(d)返回日期d中的月份至,1到12select month(‘2011-11-11 11:11:11’);–>11
day(d)返回日期至d的日期部分select day(‘2017-06-15’);–>15
hour(t)返回t中的小時值select hour(‘1:2:3’);–>1
minute(d)返回t中的分鐘值select minute(‘1:2:3’);–>2
second(t)返回t中的秒鐘值select second(‘1:2:3’);–>3
quarter(d)返回日期d是第幾季節,返回1到4select quarter(‘2011-11-11 11:11:11’);–>4
monthname(d)返回日期當中的月份名稱,如Novemberselect monthname(‘2011-11-11 11:11:11’);–>November
month(d)返回日期d中的月份值,1到12select month(‘2011-11-11 11:11:11’);–>11
dayname(d)返回日期d是星期幾,如Monday,Tuesdayselect dayname(‘2011-11-11 11:11:11’);–>Friday
dayofmonth(d)計算日期d但是本月的第幾天select dayofmonth(‘2011-11-11 11:11:11’);–>11
dayofweek(d)日期d今天是星期幾,1星期日,2星期1,以此類推select dayofweek(‘2011-11-11 11:11:11’);–>6
dayofyear(d)計算日期d是本年的第幾天select dayofyear(‘2011-11-11 11:11:11’);–>315
week(d)計算日期d是本年的第幾個星期,范圍是0到53select week(‘2011-11-11 11:11:11’);–>45
weekday(d)日期d是星期幾,0表示星期一,1表示星期二select weekday('2017-06-15 ');–>3
weekofyear(d)計算日期d是本年的第幾個星期,范圍是0到53select weekofyear(‘2011-11-11 11:11:11’);–>45
yearweek(date,mode)返回年份及第幾周(0到53),mode中0表示周天,1表示周一,以此類推select weekday('2017-06-15 ');–>201724
now()返回當期日期和時間select now()–>2018-09-19 20:57:43

2、時間格式

格式描述
%h小時(01-12)
%I小時(01-12)
%i分鐘,數值(00-59)
%J年的天(001-336)
%k小時(0-23)
%I小時(1-12)
%M月名
%m月,數值(00-12)
%pAM或PM
%r時間,12-小時(hh:mm:ss AM或PM)
%S秒(00-59)
%s秒(00-59)
%T時間,24-小時(hh:mm:ss)
%U周(00-53)星期日是一周的第一天
%a編寫星期名
%b編寫月名
%c月,數值
%D帶有英文前綴的月中的天
%d月的天,數值(00-31)
%e月的天,數值(00-31)
%f微秒
%H小時(00-23)
%u周(00-53)星期一是一周的第一天
%V周(01-53)星期日是一周的第一天,與%X使用
%v周(01-53)星期一是一周的第一天,與%x使用
%W星期名
%w周的天(0=星期日,6=星期六)
%X年,其中的星期日是周的第一天,4位,與%V使用
%x年,其中的星期一是周的第一天,4位,與%v使用
%Y年,4位
%y年,2位

3、操作

-- 日期函數 -- 1.獲取時間戳 select UNIX_TIMESTAMP(); -- 2.將一個日期字符串轉為毫秒值 select UNIX_TIMESTAMP('2021-12-21 08:08:08'); -- 3.將時間戳毫秒值轉為指定格式的日期 select FROM_UNIXTIME(1640045288,'%Y-%m-%d %H:%i:%s'); -- 4.獲取當前的年月日 select curdate(); select CURRENT_DATE(); -- 5.獲取當前的時分秒 select CURRENT_TIME(); select curtime(); -- 6.獲取年月日和時分秒 select CURRENT_TIMESTAMP(); -- 7.從日期字符串中獲取年月日 select date('2022-12-12 12:34:56'); -- 8.獲取日期之間的差值(天數) select datediff('2021-12-23','2008-08-08'); select datediff(CURRENT_DATE(),'2008-08-08'); -- 9.獲取時間的差值(秒級) select timediff('12:12:34','10:18:56'); -- 01:53:38 -- 10.日期格式化 select date_format('2021-1-1 1:1:1', '%Y-%m-%d %H:%i:%s'); select date_format('2021-12-13 11:11:11','%Y-%m-%d %H:%i:%s'); -- 11.將字符串轉為日期 select str_to_date('2021-12-13 11:11:11','%Y-%m-%d %H:%i:%s'); -- 12.將日期進行減法 select date_sub('2021-10-01',interval 2 day); select date_sub('2021-10-01',interval 2 month); -- 13.將日期進行加法,-- 日期向后跳轉 select date_add('2021-10-01',interval 2 day); select date_add('2021-10-01',interval 2 month); -- 14.從日期中獲取小時 select extract(hour from '2021-12-13 11:12:13'); select extract(year from '2021-12-13 11:12:13'); select extract(month from '2021-12-13 11:12:13'); -- 15.獲取給定日期的最后一天(月內最后一天) select last_day('2021-08-13'); -- 16.獲取指定年份和天數的日期 select makedate('2021',53); -- 17.根據日期獲取年月日,時分秒 select year('2021-12-13 11:12:13'); -- 獲取年 select month('2021-12-13 11:12:13'); -- 獲取小時 select minute('2021-12-13 11:12:13'); -- 獲取分鐘 select quarter('2021-12-13 11:12:13'); -- 獲取季度 -- 18.根據日期獲取信息 select MONTHNAME('2021-12-13 11:12:13'); -- 獲取月份的英文 select dayname('2021-12-13 11:12:13'); -- 獲取周幾:Monday select dayofmonth('2021-12-13 11:12:13'); -- 當月的第幾天 select dayofweek('2021-12-13 11:12:13'); -- 1:周日 2:周一 select dayofyear('2021-12-13 11:12:13'); -- 獲取一年的第幾天select week('2021-12-13 11:12:13');

六、MySQL中的函數-控制流函數

1、if邏輯判斷語句

?

格式解釋案例
if(expr,v1,v2)如果表達式expr成立,返回結果v1;否則,返回結果v2select if(1>0,‘正確’,‘錯誤’);–>正確
ifnull(v1,v2)如果v1的值不為null,則返回v1,否則返回v2.select ifnull(null,‘Hello World’);–>Hello World
isnull(expr)判斷表達式是否為nullselect isnull(null);–>1
nullif(expr1,expr2)比較兩個字符串,如果字符串expr1與expr2相等,返回null,否則返回expr1select nullif(25,25);–>null

操作

-- 控制流函數 -- if函數 select if(5>2,"大于","小于"); use mydb3; select *, if(score>=85,'優秀','及格') flag from score; -- ifnull函數 select ifnull(5,0); -- 5 select ifnull(null,0); -- 0

2、case when語句

格式:

case expression

? when condition1 then result1

? when condtion2 then result2

? …

? when condition3 then resultN

? else result

end

解釋:

case表示函數開始,end表示函數結束。如果condition1成立,則返回result1,如果condition2成立,則返回result2,當全部不成立則返回result,而當有一個成立之后,后面的就不執行了。

操作:

-- 案例1 select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end; -- 案例2 select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end;-- case when語句 create database if not exists mydb4; use mydb4; -- 創建訂單表 create table orders(oid int primary key, -- 訂單idprice double, -- 訂單價格payType int -- 支付類型(1:微信支付 2:支付寶支付 3:銀行卡支付 4:其他) ); insert into orders values(1,1200,1); insert into orders values(2,1000,2); insert into orders values(3,200,3); insert into orders values(4,3000,1); insert into orders values(5,1500,2); insert into orders values(6,1500,5); -- case when操作案例 select *,case payType when 1 then '微信支付' when 2 then '支付寶支付' when 3 then '銀行卡支付' else '其他支付方式'end as payTypeStr from orders;

七、MySQL中的函數-窗口函數

1、介紹

  • MySQL8.0新增窗口函數,窗口函數又被稱為開窗函數,與Oracle窗口函數類似,屬于MySQL的一大特點。
  • 非聚合窗口函數是相當于聚合函數來說的。聚合函數是對一組數據計算后返回單個值(即分組),非聚合函數一次只會處理一行數據。窗口聚合函數在行記錄上計算某個字段的結果是,可將窗口范圍內的數據輸入到聚合函數中,并不改變行數。

2、語法結構

window_function (expr) over(partition by ...order by ...frame_clause )

其中,window_function是窗口函數的名稱;expr是參數,有些函數不需要參數;over子句包含三個選項:

  • 分區(partition by)

    partition by選項用于將數據行拆分成多個分區(組),它的作用類似于GROUP BY分組,如果省略了partition by,所有的數據作為一個組進行計算

  • 排序(order by)

    over子句中的order by選項用于指定分區內的排序方式,與order by子句的作用類似

  • 以及窗口大小(frame_clause)

    frame_clause選項用于在當前分區內指定一個計算窗口,也就是一個與當前行相關的數據子集。

3、窗口函數-序號函數

? 序號函數有三個:row_number(),rank(),dense_rank(),可以用來實現分組排序,并添加序號。這三個函數的排序規則有一點點不同。

  • 格式
row_number()|rank()|dense_rank() over(partition by ...(相當于group by)order by ... )

數據準備:

-- 窗口函數 use mydb4; create table if not exists employee(dname varchar(20), -- 部門名eid varchar(20), -- 員工編號ename varchar(20), -- 員工名字hiredate date, -- 入職日期salary double -- 薪資 ); insert into employee values('研發部','1001','劉備','2021-11-01',3000); insert into employee values('研發部','1002','關羽','2021-11-02',5000); insert into employee values('研發部','1003','張飛','2021-11-03',7000); insert into employee values('研發部','1004','趙云','2021-11-04',7000); insert into employee values('研發部','1005','馬超','2021-11-05',4000); insert into employee values('研發部','1006','黃忠','2021-11-06',4000);insert into employee values('銷售部','1007','曹操','2021-11-01',2000); insert into employee values('銷售部','1008','許褚','2021-11-02',3000); insert into employee values('銷售部','1009','典韋','2021-11-03',5000); insert into employee values('銷售部','1010','張遼','2021-11-04',6000); insert into employee values('銷售部','1011','徐晃','2021-11-05',9000); insert into employee values('銷售部','1012','曹洪','2021-11-06',6000);

3.1、row_number()序號函數

? row_number() 序號不間斷,從1開始

  • 操作
-- 案例1:對每個部門的員工按照薪資排序,并給出排名 select dname,ename,salary,row_number() over(partition by dname order by salary desc) as rn from employee;

查詢結果:

研發部 張飛 7000 1
研發部 趙云 7000 2
研發部 關羽 5000 3
研發部 馬超 4000 4
研發部 黃忠 4000 5
研發部 劉備 3000 6
銷售部 徐晃 9000 1
銷售部 張遼 6000 2
銷售部 曹洪 6000 3
銷售部 典韋 5000 4
銷售部 許褚 3000 5
銷售部 曹操 2000 6

3.2、rank()序號函數

? rank() 序號間斷,從1開始

  • 操作
-- 案例1:對每個部門的員工按照薪資排序,并給出排名 select dname,ename,salary,rank() over(partition by dname order by salary desc) as rn from employee;

查詢結果:

研發部 張飛 7000 1
研發部 趙云 7000 1
研發部 關羽 5000 3
研發部 馬超 4000 4
研發部 黃忠 4000 4
研發部 劉備 3000 6
銷售部 徐晃 9000 1
銷售部 張遼 6000 2
銷售部 曹洪 6000 2
銷售部 典韋 5000 4
銷售部 許褚 3000 5
銷售部 曹操 2000 6

3.3、dense_rank()序號函數

? dense_rank() 序號不間斷,條件相等時,序號重復

  • 操作
-- 案例1:對每個部門的員工按照薪資排序,并給出排名 select dname,ename,salary,rank() over(partition by dname order by salary desc) as rn from employee;

查詢結果:

研發部 張飛 7000 1
研發部 趙云 7000 1
研發部 關羽 5000 2
研發部 馬超 4000 3
研發部 黃忠 4000 3
研發部 劉備 3000 4
銷售部 徐晃 9000 1
銷售部 張遼 6000 2
銷售部 曹洪 6000 2
銷售部 典韋 5000 3
銷售部 許褚 3000 4
銷售部 曹操 2000 5

3.4、案例2

-- 案例2:求出每個部門薪資排在前三名的員工-分組求TOPN select * from (select dname,ename,salary,DENSE_RANK() over(partition by dname order by salary desc) as rnfrom employee )t where t.rn <= 3;

查詢結果:

研發部 張飛 7000 1
研發部 趙云 7000 1
研發部 關羽 5000 2
研發部 馬超 4000 3
研發部 黃忠 4000 3
銷售部 徐晃 9000 1
銷售部 張遼 6000 2
銷售部 曹洪 6000 2
銷售部 典韋 5000 3

3.5、案例3

-- 案例3:對所有員工進行全局排序(不分組) select dname,ename,salary,dense_rank() over (order by salary desc) as rn from employee;

查詢結果:

銷售部 徐晃 9000 1
研發部 張飛 7000 2
研發部 趙云 7000 2
銷售部 張遼 6000 3
銷售部 曹洪 6000 3
研發部 關羽 5000 4
銷售部 典韋 5000 4
研發部 馬超 4000 5
研發部 黃忠 4000 5
研發部 劉備 3000 6
銷售部 許褚 3000 6
銷售部 曹操 2000 7

4、開窗聚合函數-sum,avg,max,min

4.1、概念

? 在窗口中每條記錄動態地應用聚合函數(sum(),avg(),max(),min(),count()),可以動態計算在指定窗口內的各種聚合函數值。

4.2、操作(以sum舉例,其他三個函數用法一樣)

4.2.1、案例1,分組又排序,分組內salary累加
select dname,ename,salary,sum(salary) over(partition by dname order by hiredate) as pv1 from employee;

查詢結果

研發部 劉備 3000 3000
研發部 關羽 5000 8000
研發部 張飛 7000 15000
研發部 趙云 7000 22000
研發部 馬超 4000 26000
研發部 黃忠 4000 30000
銷售部 曹操 2000 2000
銷售部 許褚 3000 5000
銷售部 典韋 5000 10000
銷售部 張遼 6000 16000
銷售部 徐晃 9000 25000
銷售部 曹洪 6000 31000

4.2.2、案例2:如果沒有order by排序語句,默認把分組內的所有數據進行sum操作
select dname,ename,salary,sum(salary) over(partition by dname) as pv1 from employee;

查詢結果:可根據結果,查出員工工資占部門總薪資的比例,比如(3000/30000)

研發部 劉備 3000 30000
研發部 關羽 5000 30000
研發部 張飛 7000 30000
研發部 趙云 7000 30000
研發部 馬超 4000 30000
研發部 黃忠 4000 30000
銷售部 曹操 2000 31000
銷售部 許褚 3000 31000
銷售部 典韋 5000 31000
銷售部 張遼 6000 31000
銷售部 徐晃 9000 31000
銷售部 曹洪 6000 31000

4.2.3、案例3:從分組內的開頭到結尾,進行累加(rows)
-- 案例3:從分組內的開頭到結尾,進行累加,unbounded-->開頭, preceding-->向前,current row-->當前行 select dname,ename,salary, sum(salary) over(partition by dname order by hiredate rows between unbounded preceding and current row) as pv1 from employee;

查詢結果:相當于partition by + order by,與案例一結果一樣

4.2.4、案例4:從分組內,往前算三行+當前行,4行累加(rows)
-- 案例4:從分組內,當前行往前算三行,到當前行,4行累加 select dname,ename,salary, sum(salary) over(partition by dname order by hiredate rows between 3 preceding and current row) as pv1 from employee;

查詢結果:

研發部 劉備 3000 3000
研發部 關羽 5000 8000
研發部 張飛 7000 15000
研發部 趙云 7000 22000 = 3000 + 5000+7000+7000(前三行+當前行)
研發部 馬超 4000 23000
研發部 黃忠 4000 22000
銷售部 曹操 2000 2000
銷售部 許褚 3000 5000
銷售部 典韋 5000 10000
銷售部 張遼 6000 16000
銷售部 徐晃 9000 23000
銷售部 曹洪 6000 26000

4.2.5、從分組內,往前3行+當前行+后1行,5行累加
-- 案例5:從分組內,往前算3行,包括當前行,再往后算1行,5行累加 select dname,ename,salary, sum(salary) over(partition by dname order by hiredate rows between 3 preceding and 1 following) as pv1 from employee;

查詢結果:

研發部 劉備 3000 8000
研發部 關羽 5000 15000
研發部 張飛 7000 22000
研發部 趙云 7000 26000 = 3000+5000+7000+7000+4000
研發部 馬超 4000 27000
研發部 黃忠 4000 22000
銷售部 曹操 2000 5000
銷售部 許褚 3000 10000
銷售部 典韋 5000 16000
銷售部 張遼 6000 25000
銷售部 徐晃 9000 29000
銷售部 曹洪 6000 26000

5、窗口函數_分布函數-cume_dist和percent_rank

5.1、cump_dist

5.1.1、介紹
  • 用途:分組內小于,等于當前rank值的行數/分組內總行數
  • 應用場景:傳小于等于當前薪資(salary)的比例
5.1.2、操作
-- cume_dist() select dname,ename,salary, CUME_DIST() over(order by salary ) as pv1,CUME_DIST() over(partition by dname order by salary ) as pv2 from employee;

查詢結果:

研發部 劉備 3000 0.25 0.16666666666666666
研發部 馬超 4000 0.4166666666666667 0.5
研發部 黃忠 4000 0.4166666666666667 0.5
研發部 關羽 5000 0.5833333333333334 0.6666666666666666
研發部 張飛 7000 0.9166666666666666 1
研發部 趙云 7000 0.9166666666666666 1
銷售部 曹操 2000 0.08333333333333333 0.16666666666666666
銷售部 許褚 3000 0.25 0.3333333333333333
銷售部 典韋 5000 0.5833333333333334 0.5
銷售部 張遼 6000 0.75 0.8333333333333334
銷售部 曹洪 6000 0.75 0.8333333333333334
銷售部 徐晃 9000 1 1

結果分析:

rn1:

? 第一條:3/12 = 1/4 = 0.25

? 第二條:5/12 = 0.4166666666666667

rn2:

? 第一條:1/6 = 0.1666666666666667

? 第二條:3/6 = 0.5

5.2、percent_rank

5.2.1、介紹
  • 用途:每行按照公式(rank-1)/(rows-1)進行計算。其中,rank為rank()函數產生的序號,rows為當前窗口的記錄總行數
  • 應用場景:不常用
5.2.2、操作
-- PERCENT_RANK() select dname,ename,salary, rank() over(partition by dname order by salary desc ) as pv1,percent_rank() over(partition by dname order by salary desc) as pv2 from employee;

查詢結果:

研發部 張飛 7000 1 0
研發部 趙云 7000 1 0
研發部 關羽 5000 3 0.4
研發部 馬超 4000 4 0.6
研發部 黃忠 4000 4 0.6
研發部 劉備 3000 6 1
銷售部 徐晃 9000 1 0
銷售部 張遼 6000 2 0.2
銷售部 曹洪 6000 2 0.2
銷售部 典韋 5000 4 0.6
銷售部 許褚 3000 5 0.8
銷售部 曹操 2000 6 1

結果分析

pv2:

? 第一行:(1-1)/(6-1) = 0

? 第二行:(1-1)/(6-1) = 0

? 第三行:(3-1)/(6-1) = 0.4

6、窗口函數_前后函數-lag和lead

6.1、介紹

  • 用途:返回位于當前行的前n行(lag(expr,n))或后n行(lead(expr,n))的expr的值
  • 應用場景:查詢前1名同學的成績和當前同學成績的差值

6.2、操作(以lag舉例,lead用法一樣)

第三個參數是默認值

-- lag select dname,ename,salary, hiredate,lag(hiredate,1,'2021-01-01') over( partition by dname order by hiredate desc ) as pv1,lag(hiredate,2) over(partition by dname order by hiredate desc) as pv2 from employee;

查詢結果:

研發部 黃忠 4000 2021-11-06 2021-01-01
研發部 馬超 4000 2021-11-05 2021-11-06
研發部 趙云 7000 2021-11-04 2021-11-05 2021-11-06
研發部 張飛 7000 2021-11-03 2021-11-04 2021-11-05
研發部 關羽 5000 2021-11-02 2021-11-03 2021-11-04
研發部 劉備 3000 2021-11-01 2021-11-02 2021-11-03
銷售部 曹洪 6000 2021-11-06 2021-01-01
銷售部 徐晃 9000 2021-11-05 2021-11-06
銷售部 張遼 6000 2021-11-04 2021-11-05 2021-11-06
銷售部 典韋 5000 2021-11-03 2021-11-04 2021-11-05
銷售部 許褚 3000 2021-11-02 2021-11-03 2021-11-04
銷售部 曹操 2000 2021-11-01 2021-11-02 2021-11-03

結果分析:

pv1:

? 第一行:自身是第一行,前面沒數據,取默認值‘2021-01-01‘

? 第二行:取第一行的值

pv2:

? 第一行:前2行沒數據,取值null

? 第二行:前2行沒數據,取值null

? 第三行:前2行為第一行,有數據,取第一行的數據

7、窗口函數_首尾函數-first_value和last_value

7.1、介紹

  • 用途:返回第一個(FIRST_VALUE(expr))或最后一個(LAST_VALUE(expr))expr的值
  • 應用場景:截止到當前,按照日期排序查詢第1個入職和最后一個入職員工的薪資

7.2、操作

-- 窗口函數-頭尾函數 select dname,ename,salary, hiredate,FIRST_VALUE(salary) over( partition by dname order by hiredate) as first,LAST_VALUE(salary) over(partition by dname order by hiredate) as last from employee;

查詢結果

研發部 劉備 3000 2021-11-01 3000 3000
研發部 關羽 5000 2021-11-02 3000 5000
研發部 張飛 7000 2021-11-03 3000 7000
研發部 趙云 7000 2021-11-04 3000 7000
研發部 馬超 4000 2021-11-05 3000 4000
研發部 黃忠 4000 2021-11-06 3000 4000
銷售部 曹操 2000 2021-11-01 2000 2000
銷售部 許褚 3000 2021-11-02 2000 3000
銷售部 典韋 5000 2021-11-03 2000 5000
銷售部 張遼 6000 2021-11-04 2000 6000
銷售部 徐晃 9000 2021-11-05 2000 9000
銷售部 曹洪 6000 2021-11-06 2000 6000

結果分析:

first_value取到目前行的第一行的值

last_value取到目前行的最后一行的值(本身)

8、窗口函數_其他函數-nth_value(expr,n)和ntile(n)

8.1、nth_value

8.1.1、介紹
  • 用途:返回窗口中第n個expr的值。expr可以是表達式,也可以是列名
  • 應用場景:截止到當前薪資,顯示每個員工的薪資中排名第2或者第3的薪資
8.1.2、操作
-- 窗口函數-其他函數 -- nth_value select dname,ename,salary, hiredate,nth_VALUE(salary,2) over( partition by dname order by hiredate) as second_value,nth_VALUE(salary,3) over(partition by dname order by hiredate) as thirth_value from employee;

查詢結果:

研發部 劉備 3000 2021-11-01
研發部 關羽 5000 2021-11-02 5000
研發部 張飛 7000 2021-11-03 5000 7000
研發部 趙云 7000 2021-11-04 5000 7000
研發部 馬超 4000 2021-11-05 5000 7000
研發部 黃忠 4000 2021-11-06 5000 7000
銷售部 曹操 2000 2021-11-01
銷售部 許褚 3000 2021-11-02 3000
銷售部 典韋 5000 2021-11-03 3000 5000
銷售部 張遼 6000 2021-11-04 3000 5000
銷售部 徐晃 9000 2021-11-05 3000 5000
銷售部 曹洪 6000 2021-11-06 3000 5000

8.2、ntile

8.2.1、介紹
  • 用途:將分區中的有序數據分為n個等級,記錄等級數
  • 應用場景:將每個部門員工按照入職日期分成3組
8.2.2、操作
-- ntile -- 用途:將分區中的有序數據分為n個等級,記錄等級數 -- 案例1:將每個部門的員工按照入職日期分成3組 select dname,ename,salary, hiredate,ntile(3) over( partition by dname order by hiredate) as nt from employee;

查詢結果:

研發部 劉備 3000 2021-11-01 1
研發部 關羽 5000 2021-11-02 1
研發部 張飛 7000 2021-11-03 2
研發部 趙云 7000 2021-11-04 2
研發部 馬超 4000 2021-11-05 3
研發部 黃忠 4000 2021-11-06 3
銷售部 曹操 2000 2021-11-01 1
銷售部 許褚 3000 2021-11-02 1
銷售部 典韋 5000 2021-11-03 2
銷售部 張遼 6000 2021-11-04 2
銷售部 徐晃 9000 2021-11-05 3
銷售部 曹洪 6000 2021-11-06 3

案例2:

-- 案例2:去除每個部門的第一組員工 select * from (select dname,ename,salary, hiredate,ntile(3) over( partition by dname order by hiredate) as ntfrom employee )t where t.nt = 1;

查詢結果:

研發部 劉備 3000 2021-11-01 1
研發部 關羽 5000 2021-11-02 1
銷售部 曹操 2000 2021-11-01 1
銷售部 許褚 3000 2021-11-02 1

3000 5000
銷售部 曹洪 6000 2021-11-06 3000 5000

8.2、ntile

8.2.1、介紹
  • 用途:將分區中的有序數據分為n個等級,記錄等級數
  • 應用場景:將每個部門員工按照入職日期分成3組
8.2.2、操作
-- ntile -- 用途:將分區中的有序數據分為n個等級,記錄等級數 -- 案例1:將每個部門的員工按照入職日期分成3組 select dname,ename,salary, hiredate,ntile(3) over( partition by dname order by hiredate) as nt from employee;

查詢結果:

研發部 劉備 3000 2021-11-01 1
研發部 關羽 5000 2021-11-02 1
研發部 張飛 7000 2021-11-03 2
研發部 趙云 7000 2021-11-04 2
研發部 馬超 4000 2021-11-05 3
研發部 黃忠 4000 2021-11-06 3
銷售部 曹操 2000 2021-11-01 1
銷售部 許褚 3000 2021-11-02 1
銷售部 典韋 5000 2021-11-03 2
銷售部 張遼 6000 2021-11-04 2
銷售部 徐晃 9000 2021-11-05 3
銷售部 曹洪 6000 2021-11-06 3

案例2:

-- 案例2:去除每個部門的第一組員工 select * from (select dname,ename,salary, hiredate,ntile(3) over( partition by dname order by hiredate) as ntfrom employee )t where t.nt = 1;

查詢結果:

研發部 劉備 3000 2021-11-01 1
研發部 關羽 5000 2021-11-02 1
銷售部 曹操 2000 2021-11-01 1
銷售部 許褚 3000 2021-11-02 1

總結

以上是生活随笔為你收集整理的08_MySQL的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91.麻豆视频| 欧美黄色成人 | 国产精品1000 | 一区二区三区免费在线播放 | 亚洲国产视频直播 | 91精品国产乱码久久桃 | 国产精品久久久久久久久久三级 | av东方在线| 天天色天天干天天色 | 日韩欧美精品免费 | 正在播放国产精品 | 亚洲美女免费精品视频在线观看 | 一区二区三区视频在线 | 四虎亚洲精品 | 91av在线免费看 | 国产亚洲成av人片在线观看桃 | 狠狠躁夜夜躁人人爽超碰91 | 精品国产一区二区三区免费 | 黄色成人在线 | 国产99久久久国产精品免费二区 | 国产精品国内免费一区二区三区 | 成人欧美一区二区三区黑人麻豆 | 99视频在线免费 | 国产精品美女在线 | 国产精品久久久久久久免费观看 | 日韩欧美一区二区三区视频 | 超碰免费97 | 免费看黄色91 | 成片免费观看视频大全 | 国产婷婷久久 | 成年人在线免费视频观看 | 激情欧美xxxx | 免费观看性生活大片 | 久久不卡国产精品一区二区 | 精品成人国产 | 婷婷综合亚洲 | 天天色天天操天天爽 | 亚洲最新视频在线 | 人人爽人人爽人人片av | 国产精品综合av一区二区国产馆 | 97在线观看免费高清完整版在线观看 | 日韩狠狠操 | 一区二区中文字幕在线观看 | 91精品国产高清自在线观看 | 国产精品一区二区三区在线免费观看 | 欧美黄污视频 | 久久久综合香蕉尹人综合网 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 国产91欧美 | 国产毛片aaa| 国内精品久久久久久久久久久 | 国产成人av一区二区三区在线观看 | 国产成人综合精品 | 在线精品在线 | 在线视频日韩一区 | 福利视频 | 999国产 | 狠狠干电影 | 人人玩人人添人人澡97 | 亚洲视频分类 | 国产二区精品 | 最新中文在线视频 | 日韩字幕| 日韩高清成人 | 日韩av美女 | 欧洲精品在线视频 | 天天爽夜夜操 | 美女网站一区 | 国产精品9999 | 久久久免费精品国产一区二区 | 亚洲精品一区二区久 | 91热视频 | 狠狠色噜噜狠狠狠狠2021天天 | 国产精品午夜在线 | 久久综合婷婷 | 中文字幕 影院 | 99热只有精品在线观看 | 国产网站色 | 天天曰天天曰 | 亚洲热久久 | 91喷水 | 91麻豆网 | 丁香5月婷婷久久 | 亚洲精品黄色在线观看 | 国产电影黄色av | 免费在线国产视频 | 99精品一级欧美片免费播放 | 在线午夜 | 亚洲天天摸日日摸天天欢 | 在线黄色免费av | 日韩av中文字幕在线免费观看 | 一区二区三区四区在线免费观看 | 天天色中文 | 成人在线观看资源 | 在线观看黄 | 国产亚洲激情视频在线 | 久久九九影视网 | 亚洲每日更新 | 六月丁香激情综合色啪小说 | 国产一区二区在线免费播放 | 九九热精品视频在线观看 | 日日爱网站| 久久久精品 一区二区三区 国产99视频在线观看 | 黄av免费 | 日韩av免费一区二区 | 亚洲国产日韩一区 | 久久久久99精品成人片三人毛片 | 懂色av懂色av粉嫩av分享吧 | 国产最新精品视频 | 九九热精品视频在线观看 | 激情网第四色 | 精品一区二区亚洲 | 免费观看黄色12片一级视频 | 亚洲精品美女久久久久 | 国产精品高清在线观看 | 天天干天天操天天射 | 欧美黄污视频 | 欧美日本国产在线观看 | 91黄视频在线观看 | 日本久久精品视频 | 美女福利视频网 | 亚洲在线日韩 | av成人免费在线 | 久久精品在线免费观看 | 亚洲在线视频网站 | 日批网站在线观看 | 成人国产精品久久久久久亚洲 | 久99视频| 色综合久久88 | 国产视频精品久久 | 99久久精品久久久久久清纯 | 亚洲成人av片在线观看 | 国产一在线精品一区在线观看 | 亚州av网站| 狠狠色综合欧美激情 | av免费电影在线 | 顶级bbw搡bbbb搡bbbb | 精品亚洲欧美一区 | 不卡的av在线播放 | 波多野结衣一区三区 | av免费观看高清 | 夜夜干夜夜 | 最新日韩在线观看视频 | 午夜婷婷综合 | 四虎成人精品永久免费av | 免费高清在线观看成人 | 五月婷久 | 亚洲狠狠丁香婷婷综合久久久 | 91激情在线视频 | 一本一道久久a久久精品 | 精品国产乱子伦一区二区 | 久久不射电影院 | 欧美日韩高清 | 国产91精品一区二区麻豆亚洲 | 999成人 | 久久在线看 | 精品国产亚洲一区二区麻豆 | 五月婷婷导航 | av色综合| 欧美91在线| 久久高清国产视频 | av福利在线免费观看 | 中文字幕第一 | 超碰在线公开免费 | 国产亚洲在线观看 | 99久久久国产精品免费99 | 中文字幕在线影院 | 国产精品99久久99久久久二8 | 国产又粗又猛又色又黄视频 | 国产成人777777| 欧美极品少妇xbxb性爽爽视频 | 在线播放视频一区 | 天天草视频 | 九九视频热 | 中文字幕在线资源 | 在线看片视频 | 久久久久久久99精品免费观看 | av.com在线 | 91福利视频网站 | 四虎成人免费观看 | 成 人 黄 色 视频 免费观看 | 国产成人一区二区三区免费看 | 西西444www| 超碰97av在线 | 激情婷婷六月 | 精品国产免费av | 国产中文在线视频 | 九九日韩 | 在线观看日本高清mv视频 | 欧美xxxx性xxxxx高清 | 色婷婷婷 | 91精品一区在线观看 | 四虎国产精品永久在线国在线 | 97国产精品一区二区 | 日韩国产精品久久久久久亚洲 | 一区二区三区久久精品 | 久草av在线播放 | 91在线精品一区二区 | 日韩综合视频在线观看 | 少妇搡bbbb搡bbb搡69 | 国产成人精品一区二区三区在线观看 | 正在播放五月婷婷狠狠干 | 一区免费观看 | 亚洲激情在线 | 久久人人爽爽人人爽人人片av | 久久人人97超碰国产公开结果 | 狠狠的干 | 99在线精品视频在线观看 | 成人免费亚洲 | 97视频在线看 | 国产明星视频三级a三级点| 激情五月婷婷 | 亚洲精品乱码久久久久久久久久 | 欧美日韩国产精品一区二区三区 | 亚洲成人黄色网址 | 97日日碰人人模人人澡分享吧 | 亚洲最新av在线网站 | 久久国产精品久久久久 | 久久婷婷一区二区三区 | 日日天天狠狠 | 成人毛片100免费观看 | 亚洲在线视频观看 | 国产精品福利久久久 | 国产精品久久精品国产 | 精品国产黄色片 | 黄色网址在线播放 | 久久视频免费观看 | 国产福利不卡视频 | 国产精品久久久久久模特 | 亚洲在线成人精品 | 这里只有精品视频在线观看 | 国精产品永久999 | 日本激情视频中文字幕 | 日本一区二区三区视频在线播放 | 99视频在线免费看 | 亚洲无在线 | 超碰人人国产 | 国产色婷婷精品综合在线手机播放 | 成人91在线 | 天天干天天干天天射 | 日韩免费看的电影 | 国产精品自产拍在线观看中文 | 精品高清视频 | 黄色在线免费观看网址 | 7777精品伊人久久久大香线蕉 | 欧美另类色图 | 日本黄色免费观看 | 首页中文字幕 | 亚洲国产精品日韩 | 天天操夜夜操夜夜操 | 久久精品国产一区二区 | 国产伦理精品一区二区 | 免费福利视频网 | 毛片激情永久免费 | 国产一二三在线视频 | 国产精品久久精品国产 | 久久精品导航 | 国产成人一区二区三区 | 在线成人中文字幕 | 人人草在线观看 | 成年在线观看 | 麻豆91精品| 免费福利小视频 | 国产尤物一区二区三区 | 97免费在线观看视频 | 欧美国产不卡 | 国产精品12345 | 色欧美综合 | 中文字幕亚洲欧美日韩2019 | 色婷婷视频网 | 国产午夜精品一区二区三区在线观看 | 欧美视频xxx | 日本久久久精品视频 | 国产r级在线观看 | 99热99| 国产手机视频在线观看 | 国产一区二区久久精品 | 国产在线91在线电影 | 亚洲国产婷婷 | 日本精品一区二区 | 国产精品爽爽久久久久久蜜臀 | 中文字幕免费看 | 久久久香蕉视频 | 日韩免费高清在线 | 午夜的福利| 精品一区二区三区香蕉蜜桃 | 一区二区三区四区在线免费观看 | 在线观看视频免费大全 | a级片韩国 | 国产精品av一区二区 | 国产特级毛片aaaaaa毛片 | 亚洲日本va中文字幕 | 国产精品成人免费一区久久羞羞 | 中文免费观看 | 久久免费激情视频 | 久精品在线| 久久久久免费网站 | 国产精品激情偷乱一区二区∴ | 久久香蕉电影网 | 69精品在线| 天堂av网在线 | 中文字幕av播放 | 日韩精品一区二区三区电影 | 亚洲电影影音先锋 | 亚洲欧洲中文日韩久久av乱码 | 亚洲综合成人在线 | 久久久久久久久久国产精品 | 国产成人一区二区三区电影 | 中文字幕乱偷在线 | 亚洲第一香蕉视频 | 日本mv大片欧洲mv大片 | 97在线观看免费高清完整版在线观看 | 欧美成人69av| 欧美日韩亚洲第一页 | 日日操天天操狠狠操 | 亚洲欧洲日韩在线观看 | 久久九九影视 | 97视频一区| 视频在线观看一区 | av日韩不卡 | 亚洲va在线va天堂va偷拍 | 国产亚洲精品久久久久秋 | 插插插色综合 | 中文字幕黄色av | 亚洲第一中文字幕 | 婷婷色资源 | www九九热 | 亚洲 欧美日韩 国产 中文 | 99精品视频在线观看视频 | 91精品色 | 欧美大码xxxx | 午夜狠狠干 | 又黄又刺激视频 | 日韩簧片在线观看 | 91精品综合在线观看 | 在线免费试看 | 亚洲国产一区二区精品专区 | 国产人成精品一区二区三 | 成人资源在线观看 | 九九色在线观看 | 福利区在线观看 | 日韩伦理片一区二区三区 | 国产第一页福利影院 | 99精品免费久久久久久久久日本 | 91大神电影 | 永久免费毛片在线观看 | 中文字幕久久网 | 国产福利91精品张津瑜 | 国产美女精品 | 色综合夜色一区 | 激情在线五月天 | av千婊在线免费观看 | 国内精品亚洲 | 欧美精品在线一区二区 | 国产剧在线观看片 | 久久露脸国产精品 | 精品久久九九 | 久久国产免费视频 | 伊人狠狠色 | 日本三级吹潮在线 | 91亚洲精品乱码久久久久久蜜桃 | 97国产精品久久 | av福利在线导航 | 一区免费在线 | 国产精品福利av | 中文字幕在线观看的网站 | 日韩伦理一区二区三区av在线 | 国产精品日韩在线观看 | 国产精品综合在线观看 | 久久久久久久久福利 | 国产高清在线精品 | 欧美日韩成人一区 | 日本精品视频在线播放 | 国产二级视频 | 亚洲国产片 | 国产精品一区二区在线 | 有没有在线观看av | 欧美成人播放 | 国产精品露脸在线 | 久草在线视频国产 | 天天色天天射天天操 | 色老板在线视频 | 欧美日韩一区二区三区免费视频 | 久久久国产高清 | 国产 日韩 在线 亚洲 字幕 中文 | 99久久精品国产观看 | 91久久偷偷做嫩草影院 | 中文字幕一区二区三区在线视频 | 国产精品九九九九九 | av资源在线观看 | 九九免费在线看完整版 | 久久9999久久 | 91久久偷偷做嫩草影院 | 日本三级不卡视频 | 人人澡人摸人人添学生av | 九色福利视频 | 日本黄色免费在线观看 | 日韩动态视频 | 五月婷婷在线播放 | 天天做天天爽 | 欧美巨大荫蒂茸毛毛人妖 | 国产小视频在线免费观看视频 | 狠狠操狠狠| 日韩a在线观看 | a√天堂中文在线 | 在线免费观看视频 | 国产一区二区免费看 | 中文字幕在线一区二区三区 | 精品久久久久久综合 | 成年人免费观看国产 | 看片在线亚洲 | 欧美韩国日本在线观看 | 日本精品一 | a在线观看国产 | 欧美久久精品 | 国产成人精品一区二区三区在线观看 | 国产69久久| 黄色免费网站 | 久久婷婷五月综合色丁香 | 日韩免费观看一区二区 | 一区二区三区久久 | 日韩一级理论片 | 四虎海外影库www4hu | 久久久久免费 | 日韩av播放在线 | a黄色| 香蕉网在线 | 欧美影片 | www91在线观看 | 日本中文乱码卡一卡二新区 | 91久久影院| 亚洲天堂香蕉 | 一区二区伦理 | 黄网站色成年免费观看 | 日韩免费在线视频观看 | 国产区网址 | 国产精品免费久久久久 | 久久免费毛片视频 | 娇妻呻吟一区二区三区 | 天天亚洲 | 免费人成在线观看网站 | 日韩视频欧美视频 | a级国产乱理伦片在线观看 亚洲3级 | 摸bbb搡bbb搡bbbb| 国产亚洲日本 | 最近中文字幕第一页 | 五月花婷婷 | 亚洲爱爱视频 | 成人午夜电影在线 | 午夜少妇一区二区三区 | 99欧美精品 | 亚洲一级久久 | 狠狠干 狠狠操 | 天天操天天怕 | 精品一区二区日韩 | 亚洲国产精品va在线看黑人 | 久久激情视频 | 日本激情视频中文字幕 | 亚洲综合视频在线 | 一区二区三区四区五区在线 | 91精品国自产拍天天拍 | 手机看片国产日韩 | 日韩欧美精选 | 国产精品一区二区精品视频免费看 | 久操久 | 美女免费视频观看网站 | 国产精品美女久久久久久久久 | 成人免费视频观看 | 在线va网站| 精品久久九九 | 在线观看网站黄 | 免费午夜在线视频 | 日本婷婷色 | 日韩中文字幕免费在线观看 | 不卡的av在线播放 | 国产精品免费在线视频 | 久久久综合电影 | av免费在线观 | 国产精品免费视频久久久 | 免费看久久久 | 久久久久久久久黄色 | 西西大胆啪啪 | 欧美aaa一级| 天天爽夜夜爽人人爽一区二区 | 久久精品99国产精品日本 | 又爽又黄又刺激的视频 | 天天狠狠 | 91探花系列在线播放 | 一级全黄毛片 | 黄色亚洲精品 | 国产成人中文字幕 | 91av手机在线 | 超级碰碰碰免费视频 | 日韩精品久久久久久久电影竹菊 | 欧美综合色| 欧美日韩伦理一区 | 999精品网| 丁香九月婷婷综合 | 啪啪免费观看网站 | 久久久精品午夜 | 美女免费视频黄 | 日韩精品欧美专区 | 日韩一级片大全 | 日韩视频免费看 | 国产精品情侣视频 | 成人免费视频观看 | 热久久免费视频精品 | 99亚洲精品在线 | 碰超在线 | 五月的婷婷 | 九色激情网 | 天天干天天综合 | 久久艹精品 | 久久久国产精品一区二区三区 | 日韩午夜三级 | 精品一区二区三区在线播放 | a电影在线观看 | 成年人黄色在线观看 | 9999国产| av软件在线观看 | 麻豆久久一区二区 | 免费视频久久 | 91免费版在线观看 | 91chinese在线 | 激情伊人五月天 | 久草剧场| 日韩色高清 | 天天色综合1 | 天天操天天玩 | 久久免费福利视频 | 成人免费视频免费观看 | 美女网站视频色 | 九九热在线视频 | 国产在线观看一 | 欧美色综合天天久久综合精品 | www.久久成人 | 欧美激情视频一二区 | 午夜电影中文字幕 | 欧美一区二区在线看 | 成人在线视频你懂的 | 97免费公开视频 | 成人黄大片视频在线观看 | 97香蕉久久国产在线观看 | 日韩中文字幕免费看 | 成人a视频在线观看 | 蜜桃麻豆www久久囤产精品 | 97超碰在线久草超碰在线观看 | 色橹橹欧美在线观看视频高清 | 日韩精品一区二区免费视频 | 日韩欧美综合 | 一级成人网| 欧美在线视频精品 | 日本黄色免费观看 | 国产一级91| 日韩在线国产 | 成人黄色小说网 | 青青色影院 | 国产短视频在线播放 | av在线在线| 婷婷网站天天婷婷网站 | 天天干天天拍天天操天天拍 | 色www免费视频 | 久久天天综合网 | 成人91在线| 999久久久久久 | 丁香在线观看完整电影视频 | 久久婷婷影视 | www.91国产 | 韩日在线一区 | 国产精品一区二区免费 | 国产精品黄网站在线观看 | 日日干av | 国产精品99在线播放 | 综合久久久久 | 尤物97国产精品久久精品国产 | 99热高清 | 天天爱天天操天天射 | 91麻豆精品91久久久久同性 | 国产一级视屏 | 91禁看片| 久久免费电影网 | 国产视频精选在线 | 免费三级av| 国产亚洲情侣一区二区无 | 在线观看国产麻豆 | 亚洲国产精品99久久久久久久久 | 在线电影91 | 日韩大片在线免费观看 | 深夜福利视频在线观看 | 91视频在线免费观看 | 欧美a性| 亚洲精品视频国产 | 久草在线视频新 | 日韩影视在线 | 人人插人人做 | www成人av | 国产精品中文 | 国产资源av | 中文字幕激情 | 日韩午夜视频在线观看 | 操操碰| 91在线资源 | 九9热这里真品2 | 国产精品中文久久久久久久 | 天天操夜夜拍 | a视频在线播放 | 天天干 天天摸 天天操 | 欧美日韩国产精品一区二区 | 欧美另类亚洲 | 丝袜网站在线观看 | 午夜久久 | 欧美日韩视频在线观看免费 | 精品久久久久久久久亚洲 | 91看成人| 久久久久蜜桃 | 国产亚洲精品免费 | 久久久久国产a免费观看rela | 久久专区 | 99久久99视频只有精品 | 久久人人爽人人人人片 | 狠狠色丁香婷婷综合久小说久 | 亚洲动漫在线观看 | 成人黄色片免费看 | 久久伊人五月天 | 欧美男同网站 | 亚洲欧美国产精品va在线观看 | 天天性天天草 | 日本精品视频免费 | 精品嫩模福利一区二区蜜臀 | 精品欧美在线视频 | 99热最新在线| 久久久久在线观看 | 久久一二三四 | 免费观看一区二区 | 91色在线观看视频 | 五月天最新网址 | www日| 久久午夜国产 | 中文字幕一区二区三区视频 | 久久黄色影视 | 精品久久久久久久 | 久久蜜臀一区二区三区av | 久久成人欧美 | 日本特黄一级片 | www.操.com| 精品久久五月天 | 日本黄色一级电影 | 91传媒在线看 | 久久免费试看 | 久久久久久高潮国产精品视 | 国产精品色视频 | 久久精品aaa | 亚洲一级黄色片 | 日韩在线观看的 | 欧美一级专区免费大片 | 99久热 | 久久国产二区 | 91精品国产自产在线观看永久 | 91视频啊啊啊 | 91字幕 | 在线观看国产福利片 | 久久99视频免费观看 | 国产成人久久av免费高清密臂 | 日韩高清观看 | av成人动漫在线观看 | 日韩中文字幕电影 | av手机版 | 97色涩| 在线观看视频黄色 | 日韩精品亚洲专区在线观看 | 精品在线观看一区二区 | 四虎成人精品永久免费av九九 | 五月婷在线播放 | 亚洲精品66 | 女人久久久久 | 国产日韩精品在线观看 | 久章操 | 99视频网址 | 国产婷婷 | 一区二区网| 色婷婷99 | 久久久高清免费视频 | 久久精品免费 | 久久久久97国产 | 国产成人精品一区二区三区在线 | 最新av电影网站 | 伊人影院得得 | 亚洲美女精品 | 欧美日韩精品二区第二页 | 91精品啪在线观看国产81旧版 | 波多野结衣亚洲一区二区 | 综合国产视频 | 九色porny真实丨国产18 | 黄网站色视频免费观看 | 激情视频免费观看 | 六月丁香社区 | 青青草久草在线 | 亚洲视频中文 | 天天曰天天 | 天天射天天艹 | 在线播放日韩av | 97在线观看视频国产 | 久久激情综合网 | 国产高清绿奴videos | 日韩中文免费视频 | 91最新国产 | 夜夜高潮夜夜爽国产伦精品 | 亚洲国产精品va在线看 | 香蕉在线观看 | 韩国精品视频在线观看 | 久久综合中文字幕 | 亚洲国产资源 | 天天插天天狠天天透 | 亚洲伦理电影在线 | 久久国产精品久久精品 | 98精品国产自产在线观看 | 99久久9| 夜夜摸夜夜爽 | 伊人va| 人人干干人人 | 久久丁香 | 欧美综合久久久 | 一区二区三区影院 | 偷拍福利视频一区二区三区 | 中日韩三级视频 | 国内小视频 | 亚洲免费资源 | 欧美视频日韩视频 | 久久av高清 | 国产在线精品一区二区不卡了 | 国内精品久久久久影院优 | 国产精品粉嫩 | 日韩专区 在线 | 国产精品美女www爽爽爽视频 | 91影视成人 | 国产精品一区二区在线看 | 国产一级做a | 亚洲精品永久免费视频 | 毛片网在线 | 国产亚洲成av片在线观看 | 国产韩国日本高清视频 | 国产亚洲一区二区在线观看 | 日韩影视在线 | 久久另类视频 | 97在线观看免费观看高清 | 92国产精品久久久久首页 | www.色的| 日韩黄色在线观看 | 91看片淫黄大片在线播放 | 99久久国产免费,99久久国产免费大片 | 99久久精品国产一区二区三区 | 日韩亚洲国产中文字幕 | 亚洲成人精品影院 | 成人免费视频观看 | 91精品国产自产91精品 | 久艹视频免费观看 | 国外调教视频网站 | 国产1区2| 韩国av在线 | 在线国产黄色 | 国产在线中文字幕 | 精品视频免费在线 | 国产高清一区二区 | 国产日韩精品在线观看 | 在线视频观看亚洲 | 天天做天天爱天天爽综合网 | 91精彩视频在线观看 | 2018亚洲男人天堂 | 国产精品久久久99 | 一区二区av| 99精品国产一区二区三区不卡 | 在线国产视频一区 | 精品视频久久久久久 | 成 人 a v天堂 | 99精品视频在线观看免费 | 欧美精品久久久久久久久久久 | 久久久久免费精品 | 国产精品麻豆99久久久久久 | 欧美黑人性猛交 | 天天碰天天操 | 国产偷国产偷亚洲清高 | 91av在线不卡 | 欧美成天堂网地址 | 国产成人精品av在线 | 亚洲黄色小说网址 | 欧美色图狠狠干 | 天天操天天色天天射 | 国产你懂的在线 | 玖草在线观看 | 中文字幕在线观看第三页 | 久草视频视频在线播放 | www.成人精品 | 黄色在线观看免费网站 | 国产精品视频永久免费播放 | 国产黄色资源 | 超碰在线最新地址 | 欧美另类巨大 | 久久国产影视 | 日韩一级电影在线观看 | 成人黄色大片在线观看 | 在线观看亚洲视频 | 亚洲免费黄色 | 久热国产视频 | 狠狠狠干 | 亚洲v精品 | 久久国产成人午夜av影院宅 | www.亚洲黄 | 中文字幕91| 中文一区二区三区在线观看 | 亚洲免费av片 | 香蕉手机在线 | 国产h片在线观看 | 精品国产一区二区三区久久影院 | www.福利视频 | 黄色软件在线看 | 精品九九九九 | 一级黄色免费 | 99精品在线视频观看 | 日韩精品一区二区三区水蜜桃 | 九九热在线视频免费观看 | 精品字幕在线 | 超碰人人乐 | 国产视频1| 国产精品成人久久久久久久 | 日本三级全黄少妇三2023 | 亚洲成a人片77777潘金莲 | 天天看天天干 | 欧美色伊人 | 国产精品久久久久一区二区 | 日韩视频免费 | 免费看片网址 | 久草在线高清视频 | 在线视频欧美日韩 | 久久国产精品99精国产 | 在线免费视频你懂的 | 日韩中文字幕在线观看 | 欧美a在线看 | 天天色天天操综合网 | 狠狠狠狠狠狠狠干 | 国产大片免费久久 | 亚洲高清色综合 | 2023亚洲精品国偷拍自产在线 | a午夜电影| 99热免费在线 | 在线观看国产中文字幕 | 成人黄色在线观看视频 | 色偷偷网站视频 | 最新国产福利 | 日日夜精品 | 日本高清中文字幕有码在线 | 91成人小视频 | 91中文在线视频 | 日韩a级免费视频 | 久久久精品国产免费观看一区二区 | 天天干天天想 | 91视视频在线直接观看在线看网页在线看 | 超碰人人做 | 亚洲成人黄 | 最新国产视频 | 国产专区欧美专区 | 免费网站黄色 | 欧美另类人妖 | 久久狠狠亚洲综合 | 中文有码在线 | 免费在线观看a v | 综合激情久久 | 免费在线一区二区 | 国产日韩欧美视频 | 啪啪精品 | 国产精品大尺度 | 好看的国产精品视频 | 亚洲精品日韩一区二区电影 | 久久一区二区三区超碰国产精品 | 精品久久久久久久久久久久久久久久久久 | 天天操操操操操操 | 色狠狠婷婷 | 国产精品一区欧美 | 日本中文在线 | 欧美日韩1区 | 日韩二区三区 | 亚洲乱码精品久久久久 | 男女视频国产 | 欧美精品乱码久久久久久 | 激情网五月婷婷 | av中文字幕日韩 | 免费网址在线播放 | 99精品视频免费在线观看 | 久久精品站 | 偷拍精品一区二区三区 | 天堂av免费在线 | 欧美日韩在线视频一区 | 久久久五月婷婷 | 超碰人人射 | 在线不卡视频 | 久久免费福利视频 | 91看片在线观看 | 午夜国产一区二区 | 国精产品999国精产品视频 | 五月婷婷激情六月 | 麻豆免费精品视频 | 亚洲天堂网在线视频 | 国产精品久久久久久久久毛片 | 狠狠操狠狠干2017 | 日韩视频免费观看高清完整版在线 | 日产av在线播放 | 综合色狠狠| 九九视频免费观看视频精品 | 久久综合影视 | 久久免费国产电影 | 色综合久久88色综合天天人守婷 | 三级黄色片在线观看 | 久久久久综合精品福利啪啪 | 在线观看精品一区 | 日韩精品视频网站 | 色欧美综合 | 欧美少妇xxxxxx| 爱av在线网 | 精品一区二区免费在线观看 | 亚洲人成影院在线 | 射久久久| 成人影视免费 | 国产麻豆电影在线观看 | 国产高清区 | 久久久男人的天堂 | 色婷婷88av视频一二三区 | 国产剧情在线一区 | 99这里只有久久精品视频 | 99色人| 久久婷婷视频 | 成人试看120秒 | 国产麻豆剧果冻传媒视频播放量 | 中文在线8新资源库 | 欧美激情综合五月色丁香 | av在线电影网站 | 日日夜色| 波多野结衣在线视频一区 | 成人精品国产免费网站 | 国产资源在线免费观看 | 夜夜澡人模人人添人人看 | 91视频一8mav | 99精品国产99久久久久久97 | 精品国产色 | 久草电影在线观看 | 日韩综合一区二区三区 | 九草视频在线 | 综合久久网站 | 欧美激情精品久久 | 永久黄网站色视频免费观看w | 天天色天天爱天天射综合 | 欧美日韩中文视频 | av看片网址| 亚洲精品无 | 超碰av在线播放 | 在线观看第一页 | 久久免费看毛片 | 福利精品在线 | 久久久久伦理电影 | 久久久久久国产精品亚洲78 | 日本在线精品视频 | 国产成人精品亚洲精品 | 五月天六月婷 | 日本h视频在线观看 | 福利精品在线 | 日本黄区免费视频观看 | 国产不卡在线看 | 国产日韩欧美精品在线观看 | 日韩黄色在线电影 | av大全免费在线观看 | 日本精品中文字幕 | 亚洲在线网址 | 成人一区不卡 | 玖草在线观看 | 国产精品久久久久久久久久了 | 91黄色小视频 | 高清av在线免费观看 | 国产精品综合久久 | 欧美精品亚洲精品日韩精品 | 免费视频二区 | 91av视频观看 | 黄色一集片 | 国产美女精彩久久 | 色综合色综合色综合 | 樱空桃av| 日韩在线视频观看免费 | 欧美黑人xxxx猛性大交 | 久久午夜视频 | 国产女做a爱免费视频 | 91网址在线| 丁香激情五月 | 丁香九月婷婷综合 | 国产剧情av在线播放 | 亚洲国产成人在线播放 | 欧美日韩天堂 | 成人免费在线观看入口 | 国产黄色网 | 国产精品免费久久久久 | 521色香蕉网站在线观看 | 免费黄色av. |