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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Clickhouse基础语法、数据类型、数据表引擎学习

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Clickhouse基础语法、数据类型、数据表引擎学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、Clickhouse創建數據庫的語法,如下所示:

1 CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]

使用案例,如下所示:

1 master :) CREATE DATABASE IF NOT EXISTS gab_db;2 3 CREATE DATABASE IF NOT EXISTS gab_db4 5 Ok.6 7 0 rows in set. Elapsed: 0.013 sec. 8 9 master :) show databases; 10 11 SHOW DATABASES 12 13 ┌─name───────────────────────────┐ 14 │ _temporary_and_external_tables │ 15 │ default │ 16 │ gab_db │ 17 │ system │ 18 └────────────────────────────────┘ 19 20 4 rows in set. Elapsed: 0.012 sec. 21 22 master :)

?

2、默認情況下,ClickHouse使用的是原生的數據庫引擎Ordinary(在此數據庫下可以使用任意類型的表引擎,在絕大多數情況下都只需使用默認的數據庫引擎)。當然也可以使用Lazy引擎和MySQL引擎,比如使用MySQL引擎,可以直接在ClickHouse中操作MySQL對應數據庫中的表。假設MySQL中存在一個名為Clickhouse的數據庫,可以使用下面的方式連接MySQL數據庫。

1 -- --------------------------語法-----------------------------------2 CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]3 ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')4 5 -- --------------------------示例------------------------------------6 CREATE DATABASE mysql_db ENGINE = MySQL('192.168.0.109:3306', 'clickhouse', 'root', '123456');7 8 9 -- ---------------------------操作----------------------------------- 10 master :) CREATE DATABASE mysql_db ENGINE = MySQL('192.168.0.109:3306', 'clickhouse', 'root', '123456'); 11 12 CREATE DATABASE mysql_db 13 ENGINE = MySQL('192.168.0.109:3306', 'clickhouse', 'root', '123456') 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.011 sec. 18 19 master :) show databases; 20 21 SHOW DATABASES 22 23 ┌─name───────────────────────────┐ 24 │ _temporary_and_external_tables │ 25 │ default │ 26 │ gab_db │ 27 │ mysql_db │ 28 │ system │ 29 └────────────────────────────────┘ 30 31 5 rows in set. Elapsed: 0.006 sec. 32 33 master :) use mysql_db; 34 35 USE mysql_db 36 37 Ok. 38 39 0 rows in set. Elapsed: 0.002 sec. 40 41 master :) show tables; 42 43 SHOW TABLES 44 45 Ok. 46 47 0 rows in set. Elapsed: 0.012 sec. 48 49 master :) show tables; 50 51 SHOW TABLES 52 53 ┌─name────┐ 54 │ user_db │ 55 └─────────┘ 56 57 1 rows in set. Elapsed: 0.011 sec. 58 59 master :) select * from user_db; 60 61 SELECT * 62 FROM user_db 63 64 ┌─id─┬─name─────┬─age─┬─address──────┐ 65 │ 1 │ zhangsan │ 22 │ 河南省新鄉市 │ 66 └────┴──────────┴─────┴──────────────┘ 67 68 1 rows in set. Elapsed: 0.020 sec. 69 70 master :)

如果創建的時候報下面的錯誤,是因為權限的問題,執行下面的命令,解決問題即可。

1 master :) CREATE DATABASE mysql_db ENGINE = MySQL('192.168.0.109:3306', 'clickhouse', 'root', '123456');2 3 CREATE DATABASE mysql_db4 ENGINE = MySQL('192.168.0.109:3306', 'clickhouse', 'root', '123456')5 6 7 Received exception from server (version 20.8.3):8 Code: 501. DB::Exception: Received from localhost:9000. DB::Exception: Cannot create MySQL database, because Poco::Exception. Code: 1000, e.code() = 1045, e.displayText() = mysqlxx::ConnectionFailed: Access denied for user 'root'@'192.168.0.109' (using password: YES) ((nullptr):3306), 9 10 0 rows in set. Elapsed: 0.042 sec.

執行下面兩行命令,解決問題即可。

1 grant all privileges on *.* to root@'%' identified by '123456'; 2 3 FLUSH PRIVILEGES;

?

3、Clickhouse創建數據表的,語法如下所示:

1 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] 2 ( 3 name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1], 4 name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2], 5 ... 6 ) ENGINE = engine

使用案例,如下所示:

1 master :) 2 master :) show tables;3 4 SHOW TABLES5 6 Ok.7 8 0 rows in set. Elapsed: 0.008 sec. 9 10 master :) create table user_db( 11 :-] id Int32, 12 :-] name String 13 :-] )engine=Memory; 14 15 CREATE TABLE user_db 16 ( 17 `id` Int32, 18 `name` String 19 ) 20 ENGINE = Memory 21 22 Ok. 23 24 0 rows in set. Elapsed: 0.003 sec. 25 26 master :) show tables; 27 28 SHOW TABLES 29 30 ┌─name────┐ 31 │ user_db │ 32 └─────────┘ 33 34 1 rows in set. Elapsed: 0.007 sec. 35 36 master :)

上面命令是創建了一張內存表,即使用的是Memory引擎。表引擎決定了數據表的特性,也決定了數據將會被如何存儲及加載。Memory引擎是ClickHouse最簡單的表引擎,數據只會被保存在內存中,在服務重啟時數據會丟失。

?

4、Clickhouse的數據類型,在創建數據表的時候指定字段的數據類型,數據類型在使用的時候是區分大小寫的,所以在定義字段的時候一定注意數據類型的書寫。

4.1、整數數據類型Int Ranges ,Clickhouse直接使用Int8、Int16、Int32、Int64指代4種大小的Int類型,其末尾的數據正好表明了占用字節的大小(1個節點 = 8位)。

名稱大小(字節)范圍普遍觀念
Int81個字節-128到127Tinyint
Int162個字節-32768到32767Smallint
Int324個字節-2147483648到2147483647int
Int648個字節-9223372036854775808到9223372036854775807Bigint

?具體對應關系,如下所示:

Int8 - [-128 : 127] Int16 - [-32768 : 32767] Int32 - [-2147483648 : 2147483647] Int64 - [-9223372036854775808 : 9223372036854775807]

整數數據類型Uint Ranges,Clickhouse支持無符號的整數,使用前綴U表示,都表示的是正數,即無負數表示。

UInt8 - [0 : 255] UInt16 - [0 : 65535] UInt32 - [0 : 4294967295] UInt64 - [0 : 18446744073709551615]

使用案例,如下所示:

1 master :) create table tb_name(2 :-] id UInt8 , -- 指定數據類型3 :-] age UInt8 , -- 指定數據類型4 :-] flow Int64 -- 指定數據類型5 :-] ) engine=Log ; -- 指定表引擎6 7 CREATE TABLE tb_name8 (9 `id` UInt8, 10 `age` UInt8, 11 `flow` Int64 12 ) 13 ENGINE = Log 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.004 sec. 18 19 master :)

4.2、小數數據類型。

Float32 - float,注意:和我們之前的認知是一樣的,這種數據類型在數據特別精準的情況下可能出現數據精度問題。 Float64 - double Decimal(P,S) Decimal32(s) Decimal64(s) ) Decimal128(s)。
名稱大小(字節)有效精度(位數)普遍概念
Float324個字節7位Float
Float648個字節16位Double

Select 8.0/0 INF表示的是正無窮,Select -8.0/0 INF表示負無窮,Select 0/0 NAN表示非數字。

使用案例,如下所示:

1 master :) create table tb_user(2 :-] uid Int8 ,3 :-] sal Decimal32(2)-- 指定2位小數點 4 :-] ) engine=TinyLog ;5 6 CREATE TABLE tb_user7 (8 `uid` Int8,9 `sal` Decimal32(2) 10 ) 11 ENGINE = TinyLog 12 13 Ok. 14 15 0 rows in set. Elapsed: 0.018 sec. 16 17 master :) insert into tb_user values(1,10000),(2,30000),(3,2000) ; 18 19 INSERT INTO tb_user VALUES 20 21 Ok. 22 23 3 rows in set. Elapsed: 0.053 sec. 24 25 master :) select * from tb_user; 26 27 SELECT * 28 FROM tb_user 29 30 ┌─uid─┬──────sal─┐ 31 │ 1 │ 10000.00 │ 32 │ 2 │ 30000.00 │ 33 │ 3 │ 2000.00 │ 34 └─────┴──────────┘ 35 36 3 rows in set. Elapsed: 0.009 sec. 37 38 master :)

  Decimal如果要求高精度的數值運算,則需要使用定點數。Clickhouse提供了Decimal32、Decimal64和Decimal128三種精度的定點數。可以通過兩種行式表明定點,簡寫方式有Decimal32(S)、Decimal64(S)、Decimal128(S)三種,原生方式為Decimal(P,S),其中,P代表了精度,決定總位數(整數部分+ 小數部分),取值范圍是1~38,S代表規模,決定小數位,取值范圍是0~P。

名稱等效聲明范圍
Decimal32(S)Decimal(1 ~ 9,S)-1 * 10^(9-S) 到 1 * 10^(9-S)
Decimal64(S)Decimal(10 ~ 18,S)-1 * 10^(18-S) 到 1 * 10^(18-S)
Decimal128(S)Decimal(19 ~ 38,S)-1 * 10^(38-S) 到 1 * 10^(38-S)

在使用兩個不同精度的定點數進行四則運算的時候,它們的小數點,位數S會發生變化。

  在進行加法運算的時候,S取最大值,例如下面的查詢toDecimal64(2,4)與toDecimal32(2,2)相加后S=4;
  在進行減法運算的時候,S取最大值,例如下面的查詢toDecimal(2,4)與toDecimal32(2,2)相減后S=4;
  在進行乘法運算的時候,S取最大值,例如下面的查詢toDecimal(2,4)與toDecimal32(2,2)相乘后S=4+2;
  在進行除法運算的時候,S取最大值,例如下面的查詢toDecimal(2,4)與toDecimal32(2,2)相除后S=4;

但是要保證被除數的S大于除數的S,否則會報錯。

4.3、boolean類型,Clickhouse中沒有對布爾類型進行支持,可以使用0 和1 來代表布爾數據類型。

4.4、字符串數據類型,字符串類型可以細分為String、FixedString、UUID三類,從命名來看彷佛是由一款數據庫提供的類型,反而更像一門編程語言的設計,Clickhouse語法具備編程語言的特征(數據+運算)。

  a)、String,字符串由String定義,長度不限,因此在使用String的時候無須聲明大小。它完全代替了傳統意義上數據庫的Varchar、Text、Clob和Blob等字符類型。String類型不限定字符集,因為它根本就沒有這個概念,所以可以將任意編碼的字符串存入其中。但是為了程序的規范性和可維護性,在同一套程序中應該遵守使用統一的編碼,例如,統一使用UTF-8編碼就是一種很好的約定。所以在對數據操作的時候我們不再需要去關注編碼和亂碼問題。

  b)、FixedString,類型和傳統意義上的Char類型有些類似,對于一些字符有明確長度的場合,可以使用固定長度的字符串。定長字符串通過FixedString(N)聲明,其中N表示字符串長度,但是與Char不同的是,FixedString使用Null字節填充末尾字符,而Char通常使用空格填充。

String -- 字符串數據類型 一般情況下使用String;類型就可以 FixedString(n) -- 固定長度的數據類型

使用案例,如下所示:

1 master :) drop table if exists tb_stu ;2 3 DROP TABLE IF EXISTS tb_stu4 5 Ok.6 7 0 rows in set. Elapsed: 0.013 sec. 8 9 master :) create table if not exists tb_stu( 10 :-] sid FixedString(8) , 11 :-] name String , 12 :-] address String 13 :-] ) engine = TinyLog ; 14 15 CREATE TABLE IF NOT EXISTS tb_stu 16 ( 17 `sid` FixedString(8), 18 `name` String, 19 `address` String 20 ) 21 ENGINE = TinyLog 22 23 Ok. 24 25 0 rows in set. Elapsed: 0.013 sec. 26 27 master :) 28 master :) insert into tb_stu values('aaaaaaaa' , 'HANGGE' ,'ZhongNanHai') ; 29 30 INSERT INTO tb_stu VALUES 31 32 Ok. 33 34 1 rows in set. Elapsed: 0.011 sec. 35 36 master :) select * from tb_stu; 37 38 SELECT * 39 FROM tb_stu 40 41 ┌─sid──────┬─name───┬─address─────┐ 42 │ aaaaaaaa │ HANGGE │ ZhongNanHai │ 43 └──────────┴────────┴─────────────┘ 44 45 1 rows in set. Elapsed: 0.008 sec. 46 47 master :)

4.5、UUID隨機的一串字符串。

1 master :) drop table if exists tb_uuid ;2 3 DROP TABLE IF EXISTS tb_uuid4 5 Ok.6 7 0 rows in set. Elapsed: 0.002 sec. 8 9 master :) create table tb_uuid( 10 :-] id UUID , 11 :-] name String 12 :-] ) engine = TinyLog ; 13 14 CREATE TABLE tb_uuid 15 ( 16 `id` UUID, 17 `name` String 18 ) 19 ENGINE = TinyLog 20 21 Ok. 22 23 0 rows in set. Elapsed: 0.003 sec. 24 25 master :) 26 master :) insert into tb_uuid (name) values ('zss') , ('lss') ,('daa') ; 27 28 INSERT INTO tb_uuid (name) VALUES 29 30 Ok. 31 32 3 rows in set. Elapsed: 0.004 sec. 33 34 master :) insert into tb_uuid select generateUUIDv4() , 'HANGGE' ; 35 36 INSERT INTO tb_uuid SELECT 37 generateUUIDv4(), 38 'HANGGE' 39 40 Ok. 41 42 0 rows in set. Elapsed: 0.010 sec. 43 44 master :) select * from tb_uuid; 45 46 SELECT * 47 FROM tb_uuid 48 49 ┌───────────────────────────────────id─┬─name───┐ 50 │ 00000000-0000-0000-0000-000000000000 │ zss │ 51 │ 00000000-0000-0000-0000-000000000000 │ lss │ 52 │ 00000000-0000-0000-0000-000000000000 │ daa │ 53 │ c712b9e8-1c6c-4614-a836-f85da3de62aa │ HANGGE │ 54 └──────────────────────────────────────┴────────┘ 55 56 4 rows in set. Elapsed: 0.008 sec. 57 58 master :)

4.6、枚舉類型,包括 Enum8 和 Enum16 類型。Enum 保存 'string'= integer 的對應關系。Enum8 用 'String'= Int8 對描述。Enum16 用 'String'= Int16 對描述。

用法演示,創建一個帶有一個枚舉 Enum8('hello' = 1, 'world' = 2) 類型的列:

1 master :) CREATE TABLE t_enum2 :-] (3 :-] x Enum8('hello' = 1, 'world' = 2)4 :-] )5 :-] ENGINE = TinyLog;6 7 CREATE TABLE t_enum8 (9 `x` Enum8('hello' = 1, 'world' = 2) 10 ) 11 ENGINE = TinyLog 12 13 Ok. 14 15 0 rows in set. Elapsed: 0.008 sec. 16 17 master :) 18 19 -- 這個 x 列只能存儲類型定義中列出的值:'hello'或'world'。如果嘗試保存任何其他值,ClickHouse 拋出異常。 20 master :) INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello') 21 :-] ; 22 23 INSERT INTO t_enum VALUES 24 25 Ok. 26 27 3 rows in set. Elapsed: 0.006 sec. 28 29 master :) INSERT INTO t_enum VALUES; 30 31 INSERT INTO t_enum VALUES 32 33 Ok. 34 35 0 rows in set. Elapsed: 0.004 sec. 36 37 master :) insert into t_enum values('a') 38 :-] ; 39 40 INSERT INTO t_enum VALUES 41 42 43 Exception on client: 44 Code: 36. DB::Exception: Unknown element 'a' for type Enum8('hello' = 1, 'world' = 2) 45 46 Connecting to localhost:9000 as user default. 47 Connected to ClickHouse server version 20.8.3 revision 54438. 48 49 master :) 50 51 52 -- 從表中查詢數據時,ClickHouse 從 Enum 中輸出字符串值。 53 master :) select * from t_enum; 54 55 SELECT * 56 FROM t_enum 57 58 ┌─x─────┐ 59 │ hello │ 60 │ world │ 61 │ hello │ 62 └───────┘ 63 64 3 rows in set. Elapsed: 0.009 sec. 65 66 master :) 67 68 69 -- 如果需要看到對應行的數值,則必須將 Enum 值轉換為整數類型。cast 強制數據類型轉換... 將枚舉類型字段轉換成Int8數據類型 70 master :) SELECT CAST(x, 'Int8') FROM t_enum 71 :-] ; 72 73 SELECT CAST(x, 'Int8') 74 FROM t_enum 75 76 ┌─CAST(x, 'Int8')─┐ 77 │ 1 │ 78 │ 2 │ 79 │ 1 │ 80 └─────────────────┘ 81 82 3 rows in set. Elapsed: 0.006 sec. 83 84 master :)

4.7、數組數據類型。Array(T):由 T 類型元素組成的數組。其中,T 可以是任意類型,包含數組類型。 但不推薦使用多維數組,ClickHouse 對多維數組的支持有限。

例如,不能在 MergeTree 表中存儲多維數組。

Clickhouse支持數組這種復合數據類型,并且數據操作在數據分析中起到非常便利的效果,數組的定義方式有兩種: 第一種是array(T),泛型的方式。 第二種是直接插入數據的行式[e1,e2,e3.....],我們在這里要求數組中的數據類型是一致的,數組是強數據類型。

使用案例,如下所示:

1 master :) SELECT array(1, 2) AS x, toTypeName(x);2 3 SELECT 4 [1, 2] AS x,5 toTypeName(x)6 7 ┌─x─────┬─toTypeName(array(1, 2))─┐8 │ [1,2] │ Array(UInt8) │9 └───────┴─────────────────────────┘ 10 11 1 rows in set. Elapsed: 0.022 sec. 12 13 master :) SELECT [1, 2] AS x, toTypeName(x); 14 15 SELECT 16 [1, 2] AS x, 17 toTypeName(x) 18 19 ┌─x─────┬─toTypeName([1, 2])─┐ 20 │ [1,2] │ Array(UInt8) │ 21 └───────┴────────────────────┘ 22 23 1 rows in set. Elapsed: 0.009 sec. 24 25 26 -- 數組的取值,從1開始取值,中括號里面從1開始,就可以取出數組的第一個值。 27 28 master :) SELECT ['a', 'b', 'c'][1] 29 :-] ; 30 31 SELECT ['a', 'b', 'c'][1] 32 33 ┌─arrayElement(['a', 'b', 'c'], 1)─┐ 34 │ a │ 35 └──────────────────────────────────┘ 36 37 1 rows in set. Elapsed: 0.006 sec. 38 39 master :) select array('a','b','c')[2]; 40 41 SELECT ['a', 'b', 'c'][2] 42 43 ┌─arrayElement(array('a', 'b', 'c'), 2)─┐ 44 │ b │ 45 └───────────────────────────────────────┘ 46 47 1 rows in set. Elapsed: 0.007 sec. 48 49 master :)

如果要創建Array數組類型的字段,需要使用()來指定泛型,比如Array(String),如下所示:

1 master :) 2 master :) CREATE TABLE tb_array3 :-] (4 :-] `id` UInt8,5 :-] `name` String,6 :-] `hobby` Array(String)7 :-] )ENGINE = Log;8 9 CREATE TABLE tb_array 10 ( 11 `id` UInt8, 12 `name` String, 13 `hobby` Array(String) 14 ) 15 ENGINE = Log 16 17 Ok. 18 19 0 rows in set. Elapsed: 0.029 sec. 20 21 master :) desc tb_array; 22 23 DESCRIBE TABLE tb_array 24 25 ┌─name──┬─type──────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐ 26 │ id │ UInt8 │ │ │ │ │ │ 27 │ name │ String │ │ │ │ │ │ 28 │ hobby │ Array(String) │ │ │ │ │ │ 29 └───────┴───────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘ 30 31 3 rows in set. Elapsed: 0.014 sec. 32 33 master :) insert into tb_array values(1,'張三',['抽煙','喝酒','燙頭']),(2,'岳岳',['說相聲','唱歌']); 34 35 INSERT INTO tb_array VALUES 36 37 Ok. 38 39 2 rows in set. Elapsed: 0.045 sec. 40 41 master :) 42 master :) select * from tb_array; 43 44 SELECT * 45 FROM tb_array 46 47 ┌─id─┬─name─┬─hobby──────────────────┐ 48 │ 1 │ 張三 │ ['抽煙','喝酒','燙頭'] │ 49 │ 2 │ 岳岳 │ ['說相聲','唱歌'] │ 50 └────┴──────┴────────────────────────┘ 51 52 2 rows in set. Elapsed: 0.071 sec. 53 54 master :)

注意:根據數組創建的數據塊數,會根據服務器的核數來決定創建幾個塊,服務器的核數決定了創建的塊數。

1 總核數 = 物理CPU個數 * 每顆物理CPU的核數。2 總邏輯CPU數 = 物理CPU個數 * 每顆物理CPU的核數 * 超線程數。3 4 查看物理CPU個數。5 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l6 7 查看每個物理CPU中的core的個數即核數。8 cat /proc/cpuinfo | grep "cpu cores" |uniq9 10 查看邏輯CPU的個數 11 cat /proc/cpuinfo | grep "processor" | wc -l

數組居然還支持高階函數,類似Java的lambda表達式,也是很強大的東西了,如下所示:

注意:Clickhouse的字符串不能使用雙引號引起來,只能使用單引號引起來。

1 master :) 2 master :) select arrayMap(e -> concat(e,'lambda'),hobby) from tb_array;3 4 SELECT arrayMap(e -> concat(e, 'lambda'), hobby)5 FROM tb_array6 7 ┌─arrayMap(lambda(tuple(e), concat(e, 'lambda')), hobby)─┐8 │ ['抽煙lambda','喝酒lambda','燙頭lambda'] │9 │ ['說相聲lambda','唱歌lambda'] │ 10 └────────────────────────────────────────────────────────┘ 11 12 2 rows in set. Elapsed: 0.048 sec. 13 14 master :)

4.8、Nested數據類型,Nested(name1 Type1, Name2 Type2, …)。

  Nested是一種嵌套表結構,一張數據表,可以定義任意多個嵌套類型字段,但是每個字段的嵌套層級只支持一級,即嵌套表內不能繼續使用嵌套類型,對于簡單場景的層級關系或者關聯關系,使用嵌套類型也是一個不錯的選擇。

  Nested嵌套類型本質是一種多維數組的結構,嵌套表中的每個字段的都是一個數組,并且行與行之間數組的長度無須對齊,但是需要注意的是,在同一行數據內每個數組字段的長度必須相等。

1 master :) 2 master :) CREATE TABLE tb_nested3 :-] (4 :-] `id` String,5 :-] `user` Nested( uid Int, name String, age UInt8)6 :-] )ENGINE = TinyLog;7 8 CREATE TABLE tb_nested9 ( 10 `id` String, 11 `user` Nested( uid Int, name String, age UInt8) 12 ) 13 ENGINE = TinyLog 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.010 sec. 18 19 master :) desc tb_nested ; 20 21 DESCRIBE TABLE tb_nested 22 23 ┌─name──────┬─type──────────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐ 24 │ id │ String │ │ │ │ │ │ 25 │ user.uid │ Array(Int32) │ │ │ │ │ │ 26 │ user.name │ Array(String) │ │ │ │ │ │ 27 │ user.age │ Array(UInt8) │ │ │ │ │ │ 28 └───────────┴───────────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘ 29 30 4 rows in set. Elapsed: 0.012 sec. 31 32 master :)

插入數據,進行簡單的測試,如下所示:

1 master :) insert into tb_nested values(1 , [1,2,3],['zss','lss','ymm'],[21,33,18]) ;2 3 INSERT INTO tb_nested VALUES4 5 Ok.6 7 1 rows in set. Elapsed: 0.007 sec. 8 9 master :) SELECT 10 :-] user.uid, 11 :-] user.name 12 :-] FROM tb_nested; 13 14 SELECT 15 user.uid, 16 user.name 17 FROM tb_nested 18 19 ┌─user.uid─┬─user.name───────────┐ 20 │ [1,2,3] │ ['zss','lss','ymm'] │ 21 └──────────┴─────────────────────┘ 22 23 1 rows in set. Elapsed: 0.008 sec. 24 25 master :)

4.9、元組,Tuple(T1, T2, ...):元組,其中每個元素都有單獨的類型。

  Tuple元組數據類型,是一個特殊的數據類型,可以理解為集合,可以存儲任意的數據類型,這一點區別于數組。在定義的時候需要聲明數據類型和數據元素的個數。

  數據類型由1~n個元素組成,每個元素之間允許設置不同的數據類型,且彼此之間不要求兼容。元素同樣支持類型推斷,其推斷依據仍然以最小存儲代價為原則。與數據類型,元組也可以使用兩種方式定義,常規方式是tuple(T),元組中可以存儲多種數據類型,但是要注意數據類型的順序。

使用案例,如下所示:

1 master :) 2 master :) SELECT tuple(1,'a') AS x, toTypeName(x); # SELECT tuple(1,'a',12.23)可以簡寫為SELECT (1,'a',12.23)3 4 SELECT 5 (1, 'a') AS x,6 toTypeName(x)7 8 ┌─x───────┬─toTypeName(tuple(1, 'a'))─┐9 │ (1,'a') │ Tuple(UInt8, String) │ 10 └─────────┴───────────────────────────┘ 11 12 1 rows in set. Elapsed: 0.008 sec. 13 14 master :)

注意:創建數據表的時候使用元組的時候,需要指定元素的數據類型。

1 master :) 2 master :) CREATE TABLE tb_tuple3 :-] (4 :-] `id` UInt8,5 :-] `t1` Tuple(String,Int8,Date) 6 :-] )ENGINE = Log;7 8 CREATE TABLE tb_tuple9 ( 10 `id` UInt8, 11 `t1` Tuple(String, Int8, Date) 12 ) 13 ENGINE = Log 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.066 sec. 18 19 master :) insert into tb_tuple values(1, ('red',25,'1994-05-18')); 20 21 INSERT INTO tb_tuple VALUES 22 23 Ok. 24 25 1 rows in set. Elapsed: 0.145 sec. 26 27 master :) select * from tb_tuple; 28 29 SELECT * 30 FROM tb_tuple 31 32 ┌─id─┬─t1──────────────────────┐ 33 │ 1 │ ('red',25,'1994-05-18') │ 34 └────┴─────────────────────────┘ 35 36 1 rows in set. Elapsed: 0.033 sec. 37 38 master :)

4.10、Date日期類型、DateTime日期時間類型,支持符合格式的字符串類型的插入。

DateTime64可以記錄亞秒,它在DateTime之上增加了精度的設置,在指定數據類型的時候可以使用DateTime64(2)指定兩位精度。

1 master :) 2 master :) CREATE TABLE tb_name3 :-] (4 :-] `id` UInt8,5 :-] `age` UInt8,6 :-] `birthday` Date,7 :-] `updateTime` DateTime8 :-] )ENGINE = Log;9 10 CREATE TABLE tb_name 11 ( 12 `id` UInt8, 13 `age` UInt8, 14 `birthday` Date, 15 `updateTime` DateTime 16 ) 17 ENGINE = Log 18 19 Ok. 20 21 0 rows in set. Elapsed: 0.055 sec. 22 23 master :) 24 master :) insert into tb_name values(1,22,'1994-05-16','2021-02-20 14:21:30'),(2,24,'1994-05-17','2021-02-20 14:21:30'); 25 26 INSERT INTO tb_name VALUES 27 28 Ok. 29 30 2 rows in set. Elapsed: 0.065 sec. 31 32 master :) select * from tb_name; 33 34 SELECT * 35 FROM tb_name 36 37 ┌─id─┬─age─┬───birthday─┬──────────updateTime─┐ 38 │ 1 │ 22 │ 1994-05-16 │ 2021-02-20 14:21:30 │ 39 │ 2 │ 24 │ 1994-05-17 │ 2021-02-20 14:21:30 │ 40 └────┴─────┴────────────┴─────────────────────┘ 41 42 2 rows in set. Elapsed: 0.010 sec. 43 44 master :)

4.11、Enum枚舉類型,Clickhouse支持枚舉類型,這是一種在定義常量的時候經常會使用的數據類型,Clickhouse提供了Enum8和Enum16兩種枚舉類型,他們除了取值范圍不同之外,別無二致。枚舉固定使用(String:Int),這種Key/Value鍵值對的行式定義數據,所以Enum8和Enum16分別會對應(String:Int8)和(String:Int16)。

1 master :) 2 master :) CREATE TABLE tb_enum3 :-] (4 :-] `id` UInt8,5 :-] `color` Enum('red' = 1,'green' = 2, 'blue' = 3)6 :-] )ENGINE = Log;7 8 CREATE TABLE tb_enum9 ( 10 `id` UInt8, 11 `color` Enum('red' = 1, 'green' = 2, 'blue' = 3) 12 ) 13 ENGINE = Log 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.034 sec. 18 19 master :) insert into tb_enum values(1,'red'),(2,'green'),(3,'blue'); 20 21 INSERT INTO tb_enum VALUES 22 23 Ok. 24 25 3 rows in set. Elapsed: 0.055 sec. 26 27 master :) insert into tb_enum values(4,1),(5,2),(6,3); 28 29 INSERT INTO tb_enum VALUES 30 31 Ok. 32 33 3 rows in set. Elapsed: 0.035 sec. 34 35 master :)

4.12、Domain(pojo、beans實體類)里面的IPv4數據類型,域名分為IPv4和IPv6兩類,本質上它們是對整數和字符串的進一步封裝,其中IPv4類型是基于UInt32封裝的。

  1)、出于便捷性的考量,例如IPv4類型支持格式檢查,格式錯誤的IP數據是無法被寫入的。

  2)、出于性能的考量,同樣以IPv4為例,IPv4使用UInt32存儲,相對String更加緊湊,占用空間更小,查詢性能更快。IPv6類型是基于FixedString(16)封裝的,它的使用彷佛與IPv4別無二致,在使用Domain類型的時候還有一點需要注意,雖然它從表象上看起來與String一樣,但是Domain類型并不是字符串,所以它不支持隱式的自動類型轉換。如果需要返回IP的字符串行式,需要顯示調用IPv4NumToString或者IPv6NumToString函數進行轉換。

1 master :) 2 master :) CREATE TABLE tb_domin3 :-] (4 :-] `id` UInt8,5 :-] `ip` IPv46 :-] )ENGINE = Log;7 8 CREATE TABLE tb_domin9 ( 10 `id` UInt8, 11 `ip` IPv4 12 ) 13 ENGINE = Log 14 15 Ok. 16 17 0 rows in set. Elapsed: 0.024 sec. 18 19 master :) insert into tb_domin values(1, '192.168.110.133'); 20 21 INSERT INTO tb_domin VALUES 22 23 Ok. 24 25 1 rows in set. Elapsed: 0.058 sec. 26 27 master :) insert into tb_domin values(1, '192.168.110.133'); 28 29 INSERT INTO tb_domin VALUES 30 31 Ok. 32 33 1 rows in set. Elapsed: 0.006 sec. 34 35 master :) select * from tb_domin; 36 37 SELECT * 38 FROM tb_domin 39 40 ┌─id─┬──────────────ip─┐ 41 │ 1 │ 192.168.110.133 │ 42 └────┴─────────────────┘ 43 ┌─id─┬──────────────ip─┐ 44 │ 1 │ 192.168.110.133 │ 45 └────┴─────────────────┘ 46 47 2 rows in set. Elapsed: 0.025 sec. 48 49 master :)

?

5、Clickhouse為什么可以這么快?主要特點,如下所示:

  1)、開發語言是C++,可以更好的利用硬件優勢來提升數據處理的效率。
  2)、摒棄了hadoop生態體系。
  3)、數據底層以列式數據存儲。
  4)、可以利用單節點的多核并行處理。
  5)、為數據建立索引,分為一級索引、二級索引、稀疏索引。
  6)、使用大量高效率算法處理數據。
  7)、支持向量化處理數據。
  8)、支持預先運算模型,預先計算,等等優勢。

?

6、Clickhouse的引擎分為數據庫引擎和數據表引擎,數據表的引擎,不同的引擎決定數據庫的類型,Clickhouse的數據庫引擎的作用。

  1)、引擎決定了數據存儲位置。
  2)、數據組織結構。
  3)、是否分塊、是否索引、是否持久化操作。
  4)、是否可以并發讀寫。
  5)、是否支持副本操作、是否支持索引。
  6)、是否支持分布式。

?

7、Clickhouse的數據表引擎(即表的類型)決定了的特征,如下所示:

  1)、數據的存儲方式和位置,寫到哪里以及從那里讀取數據。
  2)、支持那些查詢以及如何支持。
  3)、并發數據訪問。
  4)、索引的使用(如果存在)。
  5)、是否可以執行多線程請求。
  6)、數據復制參數。在讀取時候,引擎只需要輸出所請求的列,但在某些情況下,引擎可以在響應請求時部分處理數據。對于大多數正式的任務,應該使用MergeTree族中的引擎。

?

8、數據庫,數據庫起到了命名空間的作用,可以有效規避命名沖突的問題,也是為后續的數據隔離提供了支撐。任何一張數據表,都必須歸屬在某個數據庫之下。在Clickhouse中數據庫也有自己的引擎,數據庫目前支持的數據庫引擎有6種,如下所示:

  1)、Ordinary,默認引擎,在絕大多數情況下我們都會使用默認引擎,使用的時候無須刻意聲明。在此數據庫下可以使用任意類型的表引擎。

  2)、Dictionary,字段引擎,此類數據庫會自動為所有數據字典創建它們的數據表。

  3)、Memory,內存引擎,了解即可,用于存放臨時數據,此類數據庫下的數據表只會停留在內存中,不會設計任何磁盤操作,當服務重啟后數據會被清除。

  4)、Lazy,日志引擎,此類數據庫下只能使用Log系列的表引擎。

  5)、Mysql,Mysql數據庫的引擎,此類數據庫下會自動拉取遠端Mysql數據庫中的數據,并為他們創建Mysql表引擎的數據表。

  6)、MaterializeMySQL,主要做Mysql的數據同步,Clickhouse 20.8將新增 MaterializeMySQL引擎 ,可通過binlog日志實時物化mysql數據,極大提升了數倉的查詢性能和數據同步的時效性;原有mysql中承擔的數據分析工作 可交由clickhouse去做,這么做可顯著降低線上mysql的負載,從此OLTP與OLAP業務實現完美融合。
?

9、Clickhouse的數據表引擎,具體分類,如下所示:

9.1)、Log日志引擎,具有最小功能的輕量級引擎。當您需要快速寫入許多小表(最多約100萬行)并在以后整體讀取它們時,該類型的引擎是最有效的。具體表現為,比較簡單,數據少,測試使用,Log家族都屬于本地表(在/var/lib/clickhouse/data下面),本地存儲表數據。

  1)、TinyLog引擎(數據不分快)。最簡單的數據表引擎,用于將數據存儲在磁盤上。每列都存儲在單獨的壓縮文件中,寫入的時候,數據將附加到文件末尾。該引擎沒有并發控制,只支持并發讀。如果同時從表中讀取和寫入數據,則讀取操作將拋出異常。如果同時寫入多個查詢中的表,則數據將被破壞。

     注意:TinyLog引擎(數據不分快)引擎,*.bin每個字段的壓縮數據,數據插入時會進行追加數據。sizes.json文件,顯示每個字段文件的大小。該引擎的特點,沒有數據塊,不能并行操作,不能同時讀寫操作,沒有索引,寫是追加寫,數據以列字段文件存儲。

1 master :) 2 master :) 3 master :) CREATE TABLE tb_tinyLog4 :-] (5 :-] `id` UInt8,6 :-] `log_name` String7 :-] )ENGINE = TinyLog;8 9 CREATE TABLE tb_tinyLog 10 ( 11 `id` UInt8, 12 `log_name` String 13 ) 14 ENGINE = TinyLog 15 16 Ok. 17 18 0 rows in set. Elapsed: 0.016 sec. 19 20 master :) insert into tb_tinyLog values(1, '張三三'); 21 22 INSERT INTO tb_tinyLog VALUES 23 24 Ok. 25 26 1 rows in set. Elapsed: 0.027 sec. 27 28 master :) select * from tb_tinyLog; 29 30 SELECT * 31 FROM tb_tinyLog 32 33 ┌─id─┬─log_name─┐ 34 │ 1 │ 張三三 │ 35 └────┴──────────┘ 36 37 1 rows in set. Elapsed: 0.010 sec. 38 39 master :)

  2)、StripeLog引擎,數據分塊列在一起,在你需要寫入許多小數據量(小于一百萬行)的表的場景下使用這個引擎。

  3)、Log引擎。

9.2)、MergeTree引擎,主要包含下面幾種。

  1)、MergeTree()。

  2)、ReplacingMergeTree。

  3)、SummingMergeTree引擎,將相同主鍵的數據分區內合并指定字段進行累加。

  4)、CollapsingMergeTree,ClickHouse實現了CollapsingMergeTree來消除ReplacingMergeTree的限制(只刪除小版本字段的問題)。該引擎要求在建表語句中指定一個標記列Sign,后臺Compaction時會將主鍵相同、Sign相反的行進行折疊,也即刪除。

     CollapsingMergeTree雖然解決了主鍵相同的數據即時刪除的問題,但是狀態持續變化且多線程并行寫入情況下,狀態行與取消行位置可能亂序,導致無法正常折疊。只有保證老的狀態行在在取消行的上面, 新的狀態行在取消行的下面,但是多線程無法保證寫的順序。

  5)、VersionedCollapsingMergeTree,取消字段和數據版本同事使用,避免取消行數據無法刪除的問題,為了解決CollapsingMergeTree亂序寫入情況下無法正常折疊問題,VersionedCollapsingMergeTree表引擎在建表語句中新增了一列Version,用于在亂序情況下記錄狀態行與取消行的對應關系。主鍵相同,且Version相同、Sign相反的行,在Compaction時會被刪除。與CollapsingMergeTree類似, 為了獲得正確結果,業務層需要改寫SQL,將count()、sum(col)分別改寫為sum(Sign)、sum(col * Sign)。

總結

以上是生活随笔為你收集整理的Clickhouse基础语法、数据类型、数据表引擎学习的全部內容,希望文章能夠幫你解決所遇到的問題。

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

99在线视频精品 | 欧美日韩不卡一区二区 | 色综合久久88色综合天天6 | 91成人精品在线 | 波多野结衣理论片 | 国产精品青青 | 天天草天天插 | 亚洲精品影院在线观看 | 久久激情精品 | 亚洲美女免费精品视频在线观看 | 91系列在线观看 | 婷婷 综合 色 | 美女视频a美女大全免费下载蜜臀 | 97超碰在线免费观看 | 91少妇精拍在线播放 | 麻豆视频免费看 | 久久久国产精品麻豆 | 日韩成人免费电影 | 欧美日韩国产一区 | 欧美激情精品久久久久久免费印度 | 三级在线视频播放 | 樱空桃av| 色偷偷网站视频 | 精品视频在线观看 | 日日干夜夜草 | 成人中文字幕在线观看 | 婷婷色婷婷| 婷婷精品 | av线上免费观看 | 色吊丝av中文字幕 | 欧美在线视频二区 | 日韩经典一区二区三区 | 日本免费一二三区 | 中文字幕成人在线 | 国产精品大片 | 在线观看免费日韩 | 日本中文字幕在线视频 | 在线免费观看视频一区二区三区 | 国产成人高清 | 亚洲在线国产 | 久久久久国产精品视频 | 又黄又爽又湿又无遮挡的在线视频 | 国产永久网站 | 国产成人免费在线观看 | 久久99精品国产99久久6尤 | 麻豆影视在线观看 | 99在线热播 | 91麻豆精品国产91久久久无需广告 | 九色琪琪久久综合网天天 | 国内精品久久久久久久影视麻豆 | 天天爱综合 | 国产99久久精品一区二区300 | 国产精品毛片久久久久久久久久99999999 | 麻豆一精品传二传媒短视频 | 超碰人人在线观看 | 色偷偷男人的天堂av | 日韩一区二区三区高清免费看看 | 国产群p视频 | 91亚洲影院 | 久久视频在线免费观看 | 精品日韩在线 | 激情小说网站亚洲综合网 | 国产国语在线 | 超碰公开在线 | 手机看国产毛片 | 亚洲视频 一区 | 最新91在线视频 | 激情黄色一级片 | 日韩在线高清 | 精品视频专区 | 亚洲理论电影网 | 国产精品欧美 | 亚洲最新av| 黄色午夜| 国产一区二区电影在线观看 | 五月婷婷久久综合 | 亚洲第一区在线播放 | 成人av在线亚洲 | 中文字幕一区二区三区四区 | 日韩成人高清在线 | 婷婷丁香花五月天 | 99情趣网视频 | 热久久视久久精品18亚洲精品 | 久草在线综合网 | 国产视频在线观看一区二区 | 97超碰在线免费观看 | 精品毛片在线 | 中文字幕欧美日韩va免费视频 | 国产黄网站在线观看 | 欧美性成人| 米奇影视7777 | 成人av电影免费观看 | 精品久久久免费视频 | 日韩精品在线看 | 国产91亚洲| 欧美成人黄 | 欧美精品v国产精品 | www.国产毛片| 99草在线视频 | 亚洲乱码精品久久久久 | 中文字幕影片免费在线观看 | 在线国产能看的 | 精品爱爱 | 日日爱网站 | 激情综合电影网 | 精品美女久久久久久免费 | 成人毛片一区二区三区 | 在线视频 91| 成人性生交视频 | 久久精品欧美日韩精品 | 91高清视频 | 欧美激情综合五月 | 胖bbbb搡bbbb擦bbbb| 日韩亚洲国产中文字幕 | 久久久久国产精品免费 | 精品av网站 | 亚洲午夜av久久乱码 | 在线免费观看av网站 | 最新极品jizzhd欧美 | 久久在线看 | 欧美精品一区二区蜜臀亚洲 | 久久久片 | 日韩网站在线观看 | 亚洲1区 在线| 午夜av激情 | 波多野结衣精品 | 国产综合片 | 99热精品久久 | 亚洲黄色片一级 | 久久亚洲综合色 | 00av视频 | 久久久久久黄色 | 亚洲精品影院在线观看 | 人人射 | 久久久久久久网 | 麻豆视频免费在线播放 | 国产又粗又猛又黄又爽 | 久久无码精品一区二区三区 | 欧美激情亚洲综合 | 免费国产在线精品 | 欧美久久久久久久久中文字幕 | 国产精品久久久久久久久久久久久久 | 精品在线二区 | 最新国产视频 | 9999国产精品 | 久久一区二区三区国产精品 | 青青河边草免费观看 | 国产高清不卡在线 | 欧美a√大片 | 九九色在线观看 | 91在线色| 日韩视频免费观看高清完整版在线 | 久久国产精品99国产精 | 午夜精品一区二区三区视频免费看 | 日韩精品视频在线观看网址 | 日日干夜夜操视频 | 精品在线播放 | 伊人婷婷色 | 国内小视频 | 久久久久久免费网 | 在线 视频 一区二区 | 免费国产一区二区 | 天天色天天干天天 | 精品国产欧美一区二区三区不卡 | 成人欧美一区二区三区黑人麻豆 | 国产老太婆免费交性大片 | 久草久草视频 | 狠狠色丁香久久婷婷综合五月 | 亚洲精品777 | av网站免费在线 | 免费h漫在线观看 | 久久视频免费 | 亚洲国产美女精品久久久久∴ | 免费在线一区二区 | 五月婷影院| 91成人天堂久久成人 | 波多野结衣久久精品 | 美女网站视频免费黄 | 人人天天夜夜 | 五月天久久婷婷 | 日韩在线视频不卡 | 国内精品久久久久久久影视简单 | 日本性高潮视频 | 六月激情久久 | 日日婷婷夜日日天干 | 色av男人的天堂免费在线 | 五月婷婷开心中文字幕 | 免费麻豆 | 五月开心六月伊人色婷婷 | 射综合网 | 国产成人精品一区二区三区福利 | 国产精品高清在线观看 | 69夜色精品国产69乱 | 久久精品国产亚洲精品 | 日韩午夜视频在线观看 | 国产精品久久久久影院 | 天天射天天艹 | 久久久久久毛片精品免费不卡 | 国产亚洲视频中文字幕视频 | 国产小视频在线看 | 成人影视免费看 | 亚洲欧洲一级 | 国产伦精品一区二区三区四区视频 | 日韩电影中文字幕在线观看 | 91视频久久久久久 | 国产网站色 | 国产一级片播放 | 四虎成人网 | 久久国产露脸精品国产 | 国产综合香蕉五月婷在线 | 日本精品久久久久久 | 日韩激情第一页 | 在线成人中文字幕 | 精品国产乱码久久久久 | 日韩激情久久 | 国产成人精品午夜在线播放 | www.少妇| 亚洲精品在线视频网站 | 亚洲综合色站 | 国产69精品久久99不卡的观看体验 | 亚洲午夜在线视频 | 国产一级电影网 | 久久无码av一区二区三区电影网 | 91在线小视频 | 国产精品色 | 欧美精品在线观看 | 激情五月网站 | 国产网红在线观看 | 国产在线播放一区二区 | 九九99| 国产精品私人影院 | 中中文字幕av | 久久成视频 | 日韩r级在线 | 一区二区三区在线免费播放 | 久久综合久久综合九色 | 日批视频在线播放 | 久草视频99 | 国产精品爽爽久久久久久蜜臀 | 亚洲国产精品电影在线观看 | 一区在线播放 | 日本 在线 视频 中文 有码 | 国产精品福利在线播放 | 精品九九久久 | 99视频久久 | 国产一级免费av | 国产视频一区在线播放 | 亚洲精品永久免费视频 | 亚洲人精品午夜 | 就操操久久 | 久久99精品久久久久久清纯直播 | 成人av久久 | 99久久精品午夜一区二区小说 | 天天综合亚洲 | 国产一级久久 | 91丨九色丨国产在线观看 | 69视频国产 | 国产一区二区免费 | 日韩视频在线不卡 | 激情综合网五月 | 亚洲三级网站 | 精品一区中文字幕 | 综合天天色 | 天天视频色 | 五月婷在线 | 成人一级免费电影 | 成人免费网视频 | 中文字幕一区二区三区四区在线视频 | 久久久国内精品 | 九九在线免费视频 | 国产精品剧情 | 国产视频在线观看一区 | 亚洲涩综合 | 国产精品麻豆91 | 狠狠狠狠狠狠狠 | 成 人 黄 色 视频播放1 | 不卡电影一区二区三区 | 日韩中文字幕电影 | 97人人模人人爽人人喊中文字 | 免费av电影网站 | 久插视频 | 亚洲日本va在线观看 | 欧美日韩中文字幕综合视频 | 91在线播 | 天海冀一区二区三区 | 天天爱天天草 | 国产成人福利片 | 亚洲精品综合一二三区在线观看 | 黄色资源网站 | 天天爱天天操天天干 | 国产一级电影网 | 欧美久久久影院 | 这里只有精彩视频 | 成人免费观看在线视频 | 91探花国产综合在线精品 | 国产精品区二区三区日本 | 久久久久久福利 | 欧美性高跟鞋xxxxhd | 久久成视频| 久久热首页 | 国产精品永久久久久久久久久 | 91最新在线 | 超碰在线公开免费 | 欧美午夜理伦三级在线观看 | av 一区二区三区四区 | 国产精品国产三级在线专区 | 成人精品视频久久久久 | 97操碰 | 97电影手机 | 国产专区一 | 中文字幕在线国产 | 99精品国产一区二区三区麻豆 | 国产原创中文在线 | 全久久久久久久久久久电影 | 91精品国产高清 | 日韩精品中文字幕久久臀 | 国产第页| 高清视频一区二区三区 | 亚洲高清精品在线 | 97超视频在线观看 | 精品久久久久久久久久久久久久久久 | 久久免费电影 | 美女视频网 | 欧美作爱视频 | 亚洲综合在线视频 | 欧美色道 | 婷婷丁香激情 | 日韩视频免费在线 | 久久国产精品影视 | 天天操天天干天天玩 | 免费91在线观看 | 日本天天色| av综合网址 | 精品国产一区二区三区日日嗨 | 欧美日韩aaaa | av中文在线观看 | 91在线精品秘密一区二区 | 日韩视频中文 | 亚洲aⅴ久久精品 | 亚洲视频2| 色在线高清 | 日日操日日 | 91免费国产在线观看 | 久久久久久久久综合 | 久久手机视频 | 97手机电影网 | 国产精品区免费视频 | 国产精品久久片 | 一区二区 不卡 | 精品在线视频一区二区三区 | 在线精品在线 | 成年人视频在线免费 | 久草影视在线观看 | 天天干,天天干 | 天天操天天色天天 | 91热在线 | 欧美孕妇与黑人孕交 | 欧美日韩国产在线精品 | 夜夜操夜夜干 | 一区二区三区四区五区在线 | 久久激情小说 | 欧美性黄网官网 | 亚洲黄色av | 97电影网手机版 | 超碰97在线资源 | 99热这里精品 | 婷婷色综 | 国产伦精品一区二区三区在线 | 国产麻豆成人传媒免费观看 | 在线天堂视频 | 99国内精品 | 西西www4444大胆在线 | 中文字幕影片免费在线观看 | 狠狠色噜噜狠狠狠合久 | 91在线精品播放 | 日本中文在线播放 | 中文字幕美女免费在线 | 香蕉视频网站在线观看 | 国产夫妻av在线 | 日韩二区精品 | 四虎影视欧美 | 日本久久电影网 | 成人综合免费 | 四月婷婷在线观看 | 日韩欧美精品免费 | 国内精品在线一区 | 日韩区欠美精品av视频 | 九九国产精品视频 | 亚洲 欧美 综合 在线 精品 | 亚洲欧美偷拍另类 | 国产视频18 | 天天色天天骑天天射 | 999国内精品永久免费视频 | 天天爽夜夜爽人人爽一区二区 | 国产成人av在线影院 | 五月婷婷开心中文字幕 | 久久婷婷一区 | 亚洲欧美精品一区 | 久久久久久久久久伊人 | 一区三区视频在线观看 | 久久久久久久久久久国产精品 | 国产精品99蜜臀久久不卡二区 | 中文字幕色播 | 中文字幕一区在线观看视频 | 成人黄色短片 | 久久午夜电影 | 欧美精品久久久久久久亚洲调教 | 国产精品毛片久久久久久 | 国产999精品 | 国产高清 不卡 | 久久国产精品成人免费浪潮 | 久久久久免费 | 97视频在线免费播放 | 婷婷综合导航 | 亚洲免费不卡 | 在线看岛国av | 婷婷性综合 | 中文视频一区二区 | 欧美在线视频第一页 | 久久久精品国产一区二区电影四季 | 蜜臀91丨九色丨蝌蚪老版 | 久久国产品 | 国产美女视频免费 | 久久草精品 | 三级黄色网址 | 国产精品欧美久久久久久 | 亚洲激情视频在线观看 | 超碰在线99 | 97超碰在线免费观看 | 久久久2o19精品 | 亚洲有 在线 | 色婷婷综合久久久久中文字幕1 | 超碰在线日本 | 日韩欧美精品一区二区三区经典 | 爱射综合 | 久久免费国产 | 色免费在线 | 91免费视频网站在线观看 | 国产高清视频免费最新在线 | av在线免费播放网站 | 在线天堂视频 | 国产成视频在线观看 | 久久tv| 91九色porny蝌蚪主页 | 九九交易行官网 | 国产精品久久久久久久午夜 | 久久视频免费看 | 天天狠狠操 | 中国一级片在线观看 | 久久久黄色免费网站 | 在线观看香蕉视频 | 久久一区91 | 日本精品视频一区二区 | 91在线视频免费91 | 黄色美女免费网站 | 久久免费精品视频 | 亚洲欧美日韩在线看 | 天天射天天射天天 | 国产露脸91国语对白 | 四虎天堂 | 国产精品一区免费在线观看 | 中文字幕在线看视频 | 精品99久久 | 蜜臀久久99静品久久久久久 | 日日碰狠狠躁久久躁综合网 | 色网av | 91cn国产在线 | 欧美狠狠操 | 色六月婷婷 | 国产精品va视频 | 国产色a在线观看 | 亚洲成av人片在线观看www | 91免费在线视频 | 精品超碰 | 久久最新视频 | 激情久久伊人 | 国产精品三级视频 | 99久热在线精品视频观看 | 91九色蝌蚪在线 | 国产午夜精品福利视频 | 中文字幕丝袜一区二区 | 超碰97在线人人 | 亚洲综合涩 | 99热在线观看 | 国产成人精品一区二三区 | 日日干天天操 | 久久免费视频5 | 激情影音| 久久艹综合 | 国产成人综 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产高清视频 | 日韩免费av在线 | 国产精品免费久久久 | 欧美xxxxx在线视频 | 激情网婷婷 | 日韩成人精品在线观看 | 24小时日本在线www免费的 | 国产精品精品视频 | 91看片成人 | 九九热只有精品 | 成人a视频在线观看 | 亚洲精品午夜aaa久久久 | 97在线观看免费观看 | 99久久久成人国产精品 | 在线亚州| 四虎国产永久在线精品 | 久久中国精品 | 在线免费观看涩涩 | 欧美在线观看视频一区二区三区 | 久久观看最新视频 | 最新影院 | 91亚洲欧美激情 | 国产麻豆果冻传媒在线观看 | 一区二区不卡在线观看 | 亚洲精品成人免费 | 99精彩视频在线观看免费 | 免费国产在线精品 | 久免费视频 | 97av免费视频 | 在线观看视频一区二区三区 | 精品国产伦一区二区三区观看说明 | 日韩在线视频一区二区三区 | 五月天久久久 | 午夜av在线电影 | 国产精品永久在线观看 | 亚洲婷婷在线视频 | 免费福利小视频 | 亚洲久草网 | 国产又粗又猛又黄又爽的视频 | 日批视频 | 天堂中文在线播放 | 狠狠狠色 | 视频在线91 | 久草电影在线 | 黄色电影网站在线观看 | 97在线观看免费观看 | 天天撸夜夜操 | 久久综合久久久久88 | 麻豆国产露脸在线观看 | 欧美日韩亚洲一 | 亚洲人成综合 | 亚洲精品乱码久久久一二三 | 中文字幕一区二区三 | 91女人18片女毛片60分钟 | 成人在线视频你懂的 | 亚洲精品综合一二三区在线观看 | av色图天堂网 | 国产精品18久久久久久久网站 | 在线免费观看成人 | 最新在线你懂的 | 91丨精品丨蝌蚪丨白丝jk | 欧美久久久久久久久久久久久 | 日日碰狠狠躁久久躁综合网 | 天堂av中文字幕 | 久久久福利视频 | 香蕉网站在线观看 | 亚洲精选99| 天天爱天天操天天射 | 欧美日产在线观看 | 九九久久免费 | 超碰在线99 | 国内精品久久久久久久久久久 | 国产大片黄色 | 在线你懂| 国产区在线看 | 视频一区二区三区视频 | 日韩二级毛片 | 激情开心站| 婷婷综合成人 | 波多野结衣电影一区二区 | 色婷婷88av视频一二三区 | 在线观看国产日韩 | 最近高清中文在线字幕在线观看 | 99超碰在线观看 | 国产视频在线观看一区二区 | 国产美女精品在线 | 久久精品免费看 | 国产又粗又猛又黄 | 在线黄色av电影 | 欧美色噜噜 | 男女拍拍免费视频 | 国产剧情一区二区在线观看 | av电影中文字幕在线观看 | 日本黄色免费观看 | 人人爽久久久噜噜噜电影 | 九九免费精品 | 欧美 日韩 国产 成人 在线 | 婷婷久久综合九色综合 | 在线观看中文字幕一区 | 成人av在线播放网站 | 欧美日韩国产一区二区三区在线观看 | 国产精品自产拍 | 99成人在线视频 | 中文字幕九九 | 97精产国品一二三产区在线 | 久久er99热精品一区二区 | 国产成人精品一区二区三区免费 | 99久久成人 | 国产91学生粉嫩喷水 | 四虎国产永久在线精品 | 亚洲精品tv久久久久久久久久 | 日韩城人在线 | 精品一区二区三区久久 | 伊人影院得得 | www.xxxx变态.com| 深夜免费网站 | 91精品国产99久久久久久久 | 久久婷婷精品 | 精品久久久久久久久久久久久久久久 | 2023国产精品自产拍在线观看 | 日韩欧美电影在线 | 亚洲欧美日韩精品久久久 | 欧美精品在线免费 | 成人亚洲综合 | 国产视频黄 | 日韩av中文字幕在线 | 久久婷婷国产色一区二区三区 | 国产精品免费在线播放 | 久久久亚洲电影 | 精品国产_亚洲人成在线 | 91亚色视频在线观看 | 日本黄色免费看 | 91在线视频导航 | 国产日产精品久久久久快鸭 | 韩国一区二区av | 日韩精品第1页 | 综合激情婷婷 | 久操中文字幕在线观看 | 成人午夜电影网站 | 91色吧| 国内外成人在线 | 又大又硬又黄又爽视频在线观看 | 国产69精品久久app免费版 | 午夜视频在线观看一区二区三区 | 免费成人av电影 | 国内精品在线看 | 国产精品久久久久久久久久久杏吧 | 国产精品高清在线 | 99精品国产一区二区三区不卡 | 久久99热这里只有精品国产 | 精品产品国产在线不卡 | 九九精品视频在线观看 | 福利视频第一页 | 国产.精品.日韩.另类.中文.在线.播放 | 久久久精品视频网站 | 96精品视频 | 久久视频免费 | 日日爱网址 | 国产玖玖在线 | 久久久黄色免费网站 | 九九九九热精品免费视频点播观看 | 成人91免费视频 | 成人黄色视| 国产精品99在线播放 | 日韩欧美高清在线 | 久久精品网址 | 六月丁香激情综合色啪小说 | 日韩簧片在线观看 | 亚洲va欧美va国产va黑人 | 免费高清在线观看电视网站 | 波多野结衣视频一区二区三区 | 色婷婷综合久久久中文字幕 | 国产色婷婷精品综合在线手机播放 | av在线播放国产 | 日韩资源在线观看 | 国产免费高清视频 | 三级动图 | 九九热久久免费视频 | 国产手机在线观看视频 | 婷婷久月 | 国产精品一区二区在线观看 | 在线 你懂| 成年人免费在线看 | 夜夜夜草 | 色之综合网 | 中文一区二区三区在线观看 | 日韩在线影视 | 久久夜色精品国产欧美乱 | 国产精品丝袜久久久久久久不卡 | 91看片淫黄大片一级在线观看 | 最近中文字幕免费av | 午夜久久福利 | 天天色天天草天天射 | 精品视频免费播放 | 丁香电影小说免费视频观看 | 中文字幕有码在线观看 | 久久大香线蕉app | 亚洲精品黄色 | 狠狠狠色丁香综合久久天下网 | 国产黄色片免费看 | 婷婷综合影院 | 国内精品久久久久影院优 | 成人毛片一区二区三区 | 国产中文字幕视频在线观看 | 成人av在线播放网站 | 国产精品久久久久一区二区三区共 | 天天干夜夜夜操天 | 久久五月婷婷丁香 | 色亚洲网 | 99久久精品午夜一区二区小说 | 亚洲综合在 | 99久久精品免费视频 | 久久久久亚洲最大xxxx | 久久久激情视频 | 丰满少妇在线观看网站 | 国产高清日韩 | 中文字幕专区高清在线观看 | 成人小视频在线观看免费 | 国产九九九视频 | 免费毛片aaaaaa | 日韩在线观看第一页 | 久久久久五月天 | 午夜精品一区二区三区免费视频 | 久草99| 99热都是精品 | 国产视频久 | 亚洲日本国产精品 | 国产婷婷 | 五月婷婷开心中文字幕 | 一区电影 | av三级在线免费观看 | 久久成人免费 | 97日日碰人人模人人澡分享吧 | 国产va在线 | 日韩婷婷 | 精品国产亚洲日本 | 激情欧美日韩一区二区 | 婷婷在线免费 | av在线免费在线观看 | 日韩欧美一区二区在线观看 | 精品久久免费看 | 国产99久久久国产精品成人免费 | 日本性xxxxx| 四虎在线影视 | 国产a网站 | 69国产盗摄一区二区三区五区 | 国产精品精品久久久久久 | 911精品美国片911久久久 | 国产激情电影综合在线看 | 黄色大全免费观看 | 日韩 国产 | 西西44人体做爰大胆视频 | 国产精品精品久久久久久 | 99精品成人| 免费观看十分钟 | 成片视频免费观看 | 激情开心站 | 中文字幕xxxx | 国产一区欧美日韩 | 天天插狠狠干 | 99久久精品国产毛片 | 97精品国产aⅴ | 日韩欧美在线影院 | 日韩特级黄色片 | 日本在线中文 | av大全在线看 | 亚洲国产精彩中文乱码av | 欧美精品色 | 午夜久久精品 | 日韩成片 | 久久任你操 | 欧美激情第一区 | 国产剧情久久 | 精品产品国产在线不卡 | 一区二区三区播放 | 国产成人福利在线观看 | 久久精品影视 | 91在线文字幕 | 亚洲视屏 | 色网站在线看 | 91av影视 | 91麻豆精品国产91久久久无限制版 | 久久久久久久亚洲精品 | 夜夜操天天摸 | 一区二区三区精品久久久 | 四虎欧美| 在线视频 一区二区 | 黄色a一级视频 | 久久国产精品久久久 | 欧美日韩另类在线观看 | 999久久久国产精品 高清av免费观看 | 免费视频 你懂的 | 国产精品久久久久久久免费大片 | 色综合久久久久综合99 | 另类老妇性bbwbbw高清 | 日本中文字幕网 | 久久久高清视频 | 久久这里只有精品23 | av福利在线| 日本性动态图 | 91精品视频在线观看免费 | 亚洲黄网站 | 97在线观看视频国产 | 日韩av电影免费在线观看 | 国产在线一线 | 日本一区二区不卡高清 | 国产色黄网站 | 欧美日韩一级在线 | 在线免费国产 | 亚洲另类视频在线 | www.人人干| 久久精品久久精品久久 | 国产一区二区三区高清播放 | 午夜精品婷婷 | 在线观看国产www | 狠狠操综合网 | 人人干人人模 | 二区三区毛片 | 日韩成人免费在线观看 | 国产色综合 | 美女天天操 | 在线观看网站你懂的 | 欧美精品xx | 狠狠色网 | 美女网站在线看 | 国内精品久久久久久久久 | 亚洲最大激情中文字幕 | 日韩草比 | 9在线观看免费高清完整版在线观看明 | 久久午夜色播影院免费高清 | 国内精品免费 | 国产精品福利在线播放 | 国产精品亚州 | 99久久这里只有精品 | 精品欧美在线视频 | 色七七亚洲影院 | 国产做a爱一级久久 | 亚洲欧美在线观看视频 | 中文字幕在线看 | 欧美综合久久 | 欧美一区二区三区不卡 | 亚洲婷婷在线视频 | 欧美怡红院视频 | 91九色综合| 国产一级一片免费播放放 | 日韩视 | 97超碰人人模人人人爽人人爱 | 国产高清免费在线观看 | 日韩大陆欧美高清视频区 | www黄色| 亚洲精品66 | 久久久久久久99精品免费观看 | 欧美一级专区免费大片 | 国产+日韩欧美 | 青青草视频精品 | 欧美 日韩 性 | 麻豆免费视频 | 欧美精品免费在线观看 | 亚洲一区二区三区毛片 | 麻花豆传媒一二三产区 | 午夜视频一区二区三区 | 一级免费看 | 丁香五婷| 国产免费叼嘿网站免费 | 国产高清永久免费 | 日日天天av| 日韩av中文在线 | 精品国模一区二区三区 | 成人欧美一区二区三区黑人麻豆 | 久久开心激情 | 国产精品久久一 | 国产精品手机视频 | 成人在线观看av | 国产成年免费视频 | 日韩欧美不卡 | 欧美一级艳片视频免费观看 | 欧美久久久久久久久久久久久 | 色网站在线观看 | 视频在线观看入口黄最新永久免费国产 | 青草视频网 | 91成人在线观看喷潮 | 福利视频入口 | 久色伊人 | 性色av免费在线观看 | 91精品国产91久久久久 | 色视频在线观看 | 夜夜爽天天爽 | 免费毛片aaaaaa | 欧美成人h版电影 | 亚洲色图av| 欧美乱熟臀69xxxxxx | 超碰.com | 俺要去色综合狠狠 | 国产精品久久久久久久久久久免费看 | avlulu久久精品| 国产成人亚洲精品自产在线 | 日韩精品中文字幕久久臀 | 亚洲精品久久久久久久不卡四虎 | 色综合久久久久综合体 | 中文字幕在线观看资源 | 99精品免费 | 中文字幕在线观看一区二区三区 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 亚洲91中文字幕无线码三区 | 国产 在线 高清 精品 | 国产午夜一区 | 欧美日韩在线精品一区二区 | 日韩成人黄色 | 国产精品免费一区二区 | 欧美一区二区在线看 | 毛片网站免费在线观看 | 久久久受www免费人成 | 日韩专区一区二区 | 在线免费观看黄色 | 色噜噜日韩精品欧美一区二区 | 日韩欧美视频免费在线观看 | 国产日韩中文在线 | 国产超碰在线观看 | 精品1区2区3区 | www.狠狠 | 日韩四虎| 免费网站观看www在线观看 | 日日爱999 | 免费视频一级片 | 日韩精品视频一二三 | 国产精品综合久久 | 国产亚洲精品久久久久久无几年桃 | 成人黄色大片 | 天天射色综合 | 免费在线黄 | 久草青青在线观看 | av成年人电影 | 久久av中文字幕片 | 91免费试看 | 亚洲在线视频网站 | 亚洲精品中文字幕在线观看 | 狠狠干中文字幕 | av电影免费在线 | 国产精品免费在线视频 | 国产色妞影院wwwxxx | 国产午夜精品一区二区三区 | 在线观看精品一区 | 中文字幕乱在线伦视频中文字幕乱码在线 | 91麻豆产精品久久久久久 | 黄色a一级视频 | av免费在线免费观看 | 91视频com | 丁香综合五月 | 亚洲经典视频在线观看 | 国产成人av电影在线 | 丁香视频五月 | 久香蕉| 日韩欧美高清一区二区三区 | 国产成人精品在线观看 | 国产成人一区二区三区免费看 | 在线观看视频你懂得 | 久久午夜电影院 | 精品久久一二三区 | 欧美日韩中文在线视频 | 亚洲激情综合网 | 久久人人97超碰国产公开结果 | 天天综合日日夜夜 | 久久精品在线免费观看 | 美女视频免费精品 | 免费高清在线一区 | 91高清视频 | 国产一二区免费视频 | 日韩视频一区二区三区在线播放免费观看 | 国产精品爽爽久久久久久蜜臀 | 92精品国产成人观看免费 | 国产精品手机视频 | 久精品视频 | 日韩av片无码一区二区不卡电影 | 欧美精品在线一区二区 | 中文字幕资源网在线观看 | 天天爽夜夜爽人人爽曰av | 成人黄色大片在线观看 | 狠狠狠狠狠狠操 | 亚洲欧美色婷婷 | 果冻av在线 | 成人黄色在线观看视频 | 香蕉免费 | 在线电影日韩 | 亚洲精品视频在线免费 | 91精品久久久久久综合乱菊 | 亚洲精品高清在线观看 | 伊人久久电影网 | 人人澡人人澡人人 | 国内一区二区视频 | 成人夜晚看av | 一区二区三区在线不卡 | 成人日韩av| 日韩高清www | 国产在线理论片 | 久久99国产综合精品免费 | 99久久这里有精品 | 亚洲午夜精品久久久久久久久久久久 | 亚洲精品在线播放视频 | 九九免费精品 | 色综合五月天 | 中文乱码视频在线观看 | 在线播放日韩av | 91精品国产高清自在线观看 | 国产精品欧美一区二区三区不卡 | 香蕉在线观看 | 911国产精品| 中文字幕在线播放日韩 |