国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

讀SQL學(xué)習(xí)指南(第3版)筆記10_元數(shù)據(jù)與大數(shù)據(jù)

這篇具有很好參考價值的文章主要介紹了讀SQL學(xué)習(xí)指南(第3版)筆記10_元數(shù)據(jù)與大數(shù)據(jù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

讀SQL學(xué)習(xí)指南(第3版)筆記10_元數(shù)據(jù)與大數(shù)據(jù)文章來源地址http://www.zghlxwxcb.cn/news/detail-693033.html

1.?元數(shù)據(jù)

1.1.?metadata

1.2.?關(guān)于數(shù)據(jù)的數(shù)據(jù)

1.3.?數(shù)據(jù)字典

1.3.1.?⒅與外鍵關(guān)聯(lián)的數(shù)據(jù)表/列

1.3.2.?⒄外鍵列

1.3.3.?⒃外鍵名

1.3.4.?⒂存儲索引的信息

1.3.5.?⒁索引列的排序(升序或降序)

1.3.6.?⒀已索引的列

1.3.7.?⑿索引類型(B樹、位圖)

1.3.8.?⑾索引名

1.3.9.?⑩主鍵索引名

1.3.10.?⑨主鍵名

1.3.11.?⑧主鍵列

1.3.12.?⑦not null列約束

1.3.13.?⑥列名

1.3.14.?⑤列數(shù)據(jù)類型

1.3.15.?④列的默認值

1.3.16.?③存儲引擎

1.3.17.?②存儲數(shù)據(jù)表的信息(數(shù)據(jù)表空間、初始大小等)

1.3.18.?①數(shù)據(jù)表名

1.3.19.?系統(tǒng)編目

1.3.19.1.?system catalog

2.?information_schema數(shù)據(jù)庫

2.1.?所有可用對象都是視圖

2.2.?information_schema的特殊模式,在每個數(shù)據(jù)庫中自動提供

2.3.?為了遵循ANSI SQL:2003標(biāo)準(zhǔn),MySQL 和SQL Server都提供這個接口

2.4.?information_schema數(shù)據(jù)庫中的視圖是可以被查詢的

2.5.?information_schema.tables

2.5.1.?mysql

-> SELECT table_name, table_type
    -> FROM information_schema.tables
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 1;

2.5.2.?包含了數(shù)據(jù)表和視圖

2.6.?information_schema.views

2.6.1.?mysql

-> SELECT table_name, is_updatable
    -> FROM information_schema.views
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 1;

2.7.?information_schema.columns

2.7.1.?mysql

-> SELECT column_name, data_type,
    ->   character_maximum_length char_max_len,
    ->   numeric_precision num_prcsn, numeric_scale num_scale
    -> FROM information_schema.columns
    -> WHERE table_schema = 'sakila' AND table_name = 'film'
    -> ORDER BY ordinal_position;

2.8.?information_schema.statistics

2.8.1.?mysql

-> SELECT index_name, non_unique, seq_in_index, column_name
    -> FROM information_schema.statistics
    -> WHERE table_schema = 'sakila' AND table_name = 'rental'
    -> ORDER BY 1, 3;

2.8.2.?檢索關(guān)于數(shù)據(jù)表的索引信息

2.9.?information_schema.table_constraints

2.9.1.?mysql

-> SELECT constraint_name, table_name, constraint_type
    -> FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila'
    -> ORDER BY 3,1;

2.9.2.?檢索已創(chuàng)建的不同類型的約束(外鍵、主鍵、唯一)

3.?使用元數(shù)據(jù)

3.1.?模式生成腳本

3.1.1.?mysql

 -> SELECT 'CREATE TABLE category (' create_table_statement
    -> UNION ALL
    -> SELECT cols.txt
    -> FROM
    ->  (SELECT concat(' ',column_name, ' ', column_type,
    ->    CASE
    ->      WHEN is_nullable = 'NO' THEN ' not null'
    ->      ELSE ''
    ->    END,
    ->    CASE
    ->      WHEN extra IS NOT NULL AND extra LIKE 'DEFAULT_GENERATED%'
    ->        THEN concat(' DEFAULT ',column_default,substr(extra,18))
    ->      WHEN extra IS NOT NULL THEN concat(' ', extra)
    ->      ELSE ''
    ->    END,
    ->    ',') txt
    ->   FROM information_schema.columns
    ->   WHERE table_schema = 'sakila' AND table_name = 'category'
    ->   ORDER BY ordinal_position
    ->  ) cols
    -> UNION ALL
    -> SELECT concat(' constraint primary key (')
    -> FROM information_schema.table_constraints
    -> WHERE table_schema = 'sakila' AND table_name = 'category'
    ->   AND constraint_type = 'PRIMARY KEY'
    -> UNION ALL
    -> SELECT cols.txt
    -> FROM
    ->  (SELECT concat(CASE WHEN ordinal_position > 1 THEN ' ,'
    ->     ELSE ' ' END, column_name) txt
    ->   FROM information_schema.key_column_usage
    ->   WHERE table_schema = 'sakila' AND table_name = 'category'
    ->     AND constraint_name = 'PRIMARY'
    ->   ORDER BY ordinal_position
    ->  ) cols
    -> UNION ALL
    -> SELECT ' )'
    -> UNION ALL
    -> SELECT ')';

3.1.2.?mysql

-> CREATE TABLE category2 (
    ->   category_id tinyint(3) unsigned not null auto_increment,
    ->   name varchar(25) not null ,
    ->   last_update timestamp not null DEFAULT CURRENT_TIMESTAMP
    ->     on update CURRENT_TIMESTAMP,
    ->   constraint primary key (
    ->     category_id
    ->   )
    -> );

3.2.?驗證部署

3.2.1.?查詢返回Sakila模式中每個數(shù)據(jù)表的列數(shù)、索引數(shù)以及主鍵約束(0或1)數(shù)

3.2.2.?mysql

-> SELECT tbl.table_name,
    -> (SELECT count(*) FROM information_schema.columns clm
    ->  WHERE clm.table_schema = tbl.table_schema
    ->    AND clm.table_name = tbl.table_name) num_columns,
    -> (SELECT count(*) FROM information_schema.statistics sta
    ->  WHERE sta.table_schema = tbl.table_schema
    ->    AND sta.table_name = tbl.table_name) num_indexes,
    -> (SELECT count(*) FROM information_schema.table_constraints tc
    ->  WHERE tc.table_schema = tbl.table_schema
    ->    AND tc.table_name = tbl.table_name
    ->    AND tc.constraint_type = 'PRIMARY KEY') num_primary_keys
    -> FROM information_schema.tables tbl
    -> WHERE tbl.table_schema = 'sakila' AND tbl.table_type = 'BASE TABLE'
    -> ORDER BY 1;

3.3.?動態(tài)SQL生成

3.3.1.?mysql

-> SELECT concat('SELECT ',
    ->   concat_ws(',', cols.col1, cols.col2, cols.col3, cols.col4,
    ->     cols.col5, cols.col6, cols.col7, cols.col8, cols.col9),
    ->   ' FROM customer WHERE customer_id = ?')
    -> INTO @qry
    -> FROM
    ->  (SELECT
    ->     max(CASE WHEN ordinal_position = 1 THEN column_name
    ->       ELSE NULL END) col1,
    ->     max(CASE WHEN ordinal_position = 2 THEN column_name
    ->       ELSE NULL END) col2,
    ->     max(CASE WHEN ordinal_position = 3 THEN column_name
    ->       ELSE NULL END) col3,
    ->     max(CASE WHEN ordinal_position = 4 THEN column_name
    ->       ELSE NULL END) col4,
    ->     max(CASE WHEN ordinal_position = 5 THEN column_name
    ->       ELSE NULL END) col5,
    ->     max(CASE WHEN ordinal_position = 6 THEN column_name
    ->       ELSE NULL END) col6,
    ->     max(CASE WHEN ordinal_position = 7 THEN column_name
    ->       ELSE NULL END) col7,
    ->     max(CASE WHEN ordinal_position = 8 THEN column_name
    ->       ELSE NULL END) col8,
    ->     max(CASE WHEN ordinal_position = 9 THEN column_name
    ->       ELSE NULL END) col9
    ->  FROM information_schema.columns
    ->  WHERE table_schema = 'sakila' AND table_name = 'customer'
    ->  GROUP BY table_name
    -> ) cols;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @qry;
+--------------------------------------------------------------------+
| @qry                                                               |
+--------------------------------------------------------------------+
| SELECT customer_id,store_id,first_name,last_name,email,
    address_id,active,create_date,last_update
  FROM customer WHERE customer_id = ? |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> PREPARE dynsql3 FROM @qry;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> SET @custid = 45;
Query OK, 0 rows affected (0.00 sec)
mysql> EXECUTE dynsql3 USING @custid;

3.3.2.?使用包含循環(huán)結(jié)構(gòu)的過程化語言(比如Java、PL/SQL、Transact-SQL或MySQL的存儲過程語言)生成查詢的做法更佳

4.?大型數(shù)據(jù)庫

4.1.?現(xiàn)代磁盤陣列可以存儲超過4PB的數(shù)據(jù)

4.2.?云端存儲量基本上是無限的

4.2.1.?將服務(wù)托管在云端所帶來的最大好處之一是即時可擴展性,允許快速提高或降低運行服務(wù)所需的計算能力

4.3.?通過分區(qū)、集群、分片等策略,企業(yè)可以通過將數(shù)據(jù)分散在多個存儲層和服務(wù)器上來繼續(xù)使用關(guān)系型數(shù)據(jù)庫

4.4.?在視圖中,用戶與作為接口而不是實際數(shù)據(jù)表的模式對象進行交互

5.?分區(qū)

5.1.?數(shù)據(jù)表分區(qū)最初是在20世紀(jì)90年代后期由Oracle引入的

5.2.?當(dāng)數(shù)據(jù)表增長至超過數(shù)百萬行時,會變得愈加困難和/或耗時的任務(wù)

5.2.1.?需要全表掃描的查詢

5.2.2.?索引創(chuàng)建/重建

5.2.3.?數(shù)據(jù)歸檔/刪除

5.2.4.?生成數(shù)據(jù)表/統(tǒng)計索引信息

5.2.5.?數(shù)據(jù)表重定位(例如,移動到不同的表空間)

5.2.6.?數(shù)據(jù)庫備份

5.3.?數(shù)據(jù)表被分區(qū)后,會創(chuàng)建出兩個或更多的數(shù)據(jù)表分區(qū)

5.4.?每個分區(qū)的定義完全相同,但具有不重疊的數(shù)據(jù)子集

5.5.?一旦數(shù)據(jù)表被分區(qū),數(shù)據(jù)表本身就變成了一個虛擬的概念

5.6.?分區(qū)保存數(shù)據(jù),任何索引都建立在分區(qū)數(shù)據(jù)之上

5.7.?優(yōu)勢

5.7.1.?只需要與一個分區(qū)交互,而不再與整個數(shù)據(jù)表交互

5.7.2.?分區(qū)修剪(partition pruning)

5.7.2.1.?服務(wù)器會檢查數(shù)據(jù)表的元數(shù)據(jù),以確定實際需要包含哪些分區(qū)

5.7.3.?分區(qū)連接(partitionwise join)

5.7.3.1.?只有那些包含查詢所需數(shù)據(jù)的分區(qū)才會被包含在內(nèi)

5.7.4.?能夠快速刪除不再需要的數(shù)據(jù)

5.7.4.1.?財務(wù)數(shù)據(jù)可能需要在線保存7年,如果數(shù)據(jù)表已根據(jù)事務(wù)日期進行分區(qū),就可以撤銷數(shù)據(jù)保存時長超過7年的分區(qū)

5.7.5.?能夠同時更新多個分區(qū),這可以大大減少數(shù)據(jù)表中每行所需的處理時間

5.8.?管理特性

5.8.1.?分區(qū)可以存儲在不同的表空間中,表空間可以位于不同的物理存儲層

5.8.2.?可以使用不同的壓縮方案來壓縮分區(qū)

5.8.3.?可以撤銷某些分區(qū)的本地索引

5.8.4.?可以在某些分區(qū)上凍結(jié)數(shù)據(jù)表的統(tǒng)計信息,同時在其他分區(qū)上定期刷新

5.8.5.?單個分區(qū)可以固定在內(nèi)存中或存儲在數(shù)據(jù)庫的閃存存儲層中

5.9.?數(shù)據(jù)表分區(qū)

5.9.1.?水平分區(qū)

5.9.1.1.?將整行分配給一個分區(qū)

5.9.2.?垂直分區(qū)

5.9.2.1.?將列集分配給不同的分區(qū),但必須手動完成

5.10.?索引分區(qū)

5.10.1.?全局索引

5.10.1.1.?如果經(jīng)過分區(qū)的數(shù)據(jù)表有索引,可以選擇特定的索引保持原樣

5.10.1.2.?跨越數(shù)據(jù)表的所有分區(qū),對于沒有指定分區(qū)鍵值的查詢很有用

5.10.2.?局部索引

5.10.2.1.?劃分成幾個部分,使每個分區(qū)有自己的索引

5.11.?分區(qū)方法

5.11.1.?范圍分區(qū)

5.11.1.1.?range partitioning

5.11.1.2.?第一種被實現(xiàn)的分區(qū)方法

5.11.1.3.?使用最廣泛的方法

5.11.1.4.?允許一個maxvalue分區(qū)捕獲任何沒有映射到其他分區(qū)的行

5.11.1.5.?mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY RANGE (yearweek(sale_date))
    ->  (PARTITION s1 VALUES LESS THAN (202002),
    ->   PARTITION s2 VALUES LESS THAN (202003),
    ->   PARTITION s3 VALUES LESS THAN (202004),
    ->   PARTITION s4 VALUES LESS THAN (202005),
    ->   PARTITION s5 VALUES LESS THAN (202006),
    ->   PARTITION s999 VALUES LESS THAN (MAXVALUE)
    ->  );

5.11.1.6.?sql

ALTER TABLE sales REORGANIZE PARTITION s999 INTO
 (PARTITION s6 VALUES LESS THAN (202007),
  PARTITION s7 VALUES LESS THAN (202008),
  PARTITION s999 VALUES LESS THAN (MAXVALUE)
 );

5.11.1.7.?使用information_schema數(shù)據(jù)庫中的partitions數(shù)據(jù)表

5.11.1.8.?mysql

-> SELECT partition_name, partition_method, partition_expression
    -> FROM information_schema.partitions
    -> WHERE table_name = 'sales'
    -> ORDER BY partition_ordinal_position;

5.11.2.?列表分區(qū)

5.11.2.1.?選擇作為分區(qū)鍵的列包含州編碼(例如CA、TX、VA等)、貨幣(例如USD、EUR、JPY等)或其他一些枚舉值集

5.11.2.2.?它允許指定將哪些值分配給各個分區(qū)

5.11.2.3.?不提供溢出分區(qū)(spillover partition)

5.11.2.3.1.?添加另一個列值,就得修改分區(qū)定義,然后才能將包含新值的行添加到數(shù)據(jù)表中

5.11.2.4.?mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   geo_region_cd VARCHAR(6) NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY LIST COLUMNS (geo_region_cd)
    ->  (PARTITION NORTHAMERICA VALUES IN ('US_NE','US_SE','US_MW',
    ->                                     'US_NW','US_SW','CAN','MEX'),
    ->   PARTITION EUROPE VALUES IN ('EUR_E','EUR_W'),
    ->   PARTITION ASIA VALUES IN ('CHN','JPN','IND')
    -> );

5.11.2.5.?mysql

-> ALTER TABLE sales REORGANIZE PARTITION ASIA INTO
    -> (PARTITION ASIA VALUES IN ('CHN','JPN','IND', 'KOR'));

5.11.3.?哈希分區(qū)

5.11.3.1.?hash partition

5.11.3.2.?盡力將行均勻地分布在一組分區(qū)中

5.11.3.3.?不同于列表分區(qū)(選擇作為分區(qū)鍵的列應(yīng)該包含少量值),哈希分區(qū)的分區(qū)鍵列在包含大量不同值時效果最佳

5.11.3.4.?mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY HASH (cust_id)
    ->   PARTITIONS 4
    ->    (PARTITION H1,
    ->     PARTITION H2,
    ->     PARTITION H3,
    ->     PARTITION H4
    ->    );

5.11.4.?復(fù)合分區(qū)

5.11.4.1.?composite partition

5.11.4.2.?允許對同一個數(shù)據(jù)表使用兩種不同類型的分區(qū)

5.11.4.2.1.?第一種分區(qū)方法定義了分區(qū)
5.11.4.2.2.?第二種分區(qū)方法定義了子分區(qū)

5.11.4.3.?mysql

-> CREATE TABLE sales
    ->  (sale_id INT NOT NULL,
    ->   cust_id INT NOT NULL,
    ->   store_id INT NOT NULL,
    ->   sale_date DATE NOT NULL,
    ->   amount DECIMAL(9,2)
    ->  )
    -> PARTITION BY RANGE (yearweek(sale_date))
    -> SUBPARTITION Y HASH (cust_id)
    ->  (PARTITION s1 VALUES LESS THAN (202002)
    ->     (SUBPARTITION s1_h1,
    ->      SUBPARTITION s1_h2,
    ->      SUBPARTITION s1_h3,
    ->      SUBPARTITION s1_h4),
    ->   PARTITION s2 VALUES LESS THAN (202003)
    ->     (SUBPARTITION s2_h1,
    ->      SUBPARTITION s2_h2,
    ->      SUBPARTITION s2_h3,
    ->      SUBPARTITION s2_h4),
    ->   PARTITION s3 VALUES LESS THAN (202004)
    ->     (SUBPARTITION s3_h1,
    ->      SUBPARTITION s3_h2,
    ->      SUBPARTITION s3_h3,
    ->      SUBPARTITION s3_h4),
    ->   PARTITION s4 VALUES LESS THAN (202005)
    ->     (SUBPARTITION s4_h1,
    ->      SUBPARTITION s4_h2,
    ->      SUBPARTITION s4_h3,
    ->      SUBPARTITION s4_h4),
    ->   PARTITION s5 VALUES LESS THAN (202006)
    ->     (SUBPARTITION s5_h1,
    ->      SUBPARTITION s5_h2,
    ->      SUBPARTITION s5_h3,
    ->      SUBPARTITION s5_h4),
    ->   PARTITION s999 VALUES LESS THAN (MAXVALUE)
    ->     (SUBPARTITION s999_h1,
    ->      SUBPARTITION s999_h2,
    ->      SUBPARTITION s999_h3,
    ->      SUBPARTITION s999_h4)
    ->  );

6.?集群

6.1.?clustering

6.2.?允許將多個服務(wù)器用作單個數(shù)據(jù)庫

6.3.?共享磁盤/共享緩存的配置

6.3.1.?shared-disk/shared-cache configuration

6.3.2.?集群中的每個服務(wù)器都可以訪問所有磁盤,緩存在一個服務(wù)器中的數(shù)據(jù)可以被集群中的其他服務(wù)器訪問

6.4.?Oracle Exadata平臺托管可供數(shù)千個并發(fā)用戶訪問的超大型數(shù)據(jù)庫

6.4.1.?該平臺仍無法滿足更大型公司的需求,這導(dǎo)致Google、Facebook、Amazon等公司另辟新徑

7.?分片

7.1.?對單個數(shù)據(jù)表和整個數(shù)據(jù)庫進行分區(qū)

7.2.?跨多個數(shù)據(jù)庫對數(shù)據(jù)進行分區(qū),類似于數(shù)據(jù)表分區(qū),但規(guī)模更大,復(fù)雜性也高得多

7.3.?需要選擇一個分片鍵,用于決定連接到哪個數(shù)據(jù)庫

7.4.?單獨的行分配給單個分片,但較小的參考表可能需要復(fù)制到所有分片上,同時還要定義相應(yīng)的策略,以決定如何修改參考數(shù)據(jù)并將改動傳播給所有分片

7.5.?如果單個分片變得過大(例如社交媒體公司現(xiàn)在擁有了20億用戶),就需要計劃添加更多的分片并將數(shù)據(jù)重新分布在分片中

7.6.?當(dāng)需要變更模式時,要定義相應(yīng)的策略,用于在所有分片上部署變更,以便模式保持同步

7.7.?如果應(yīng)用程序邏輯需要訪問存儲在多個分片中的數(shù)據(jù),要定義相應(yīng)的策略,以決定如何跨數(shù)據(jù)庫查詢以及如何實現(xiàn)跨數(shù)據(jù)庫事務(wù)

8.?大數(shù)據(jù)

8.1.?容量(Volume)

8.1.1.?常意味著數(shù)十億或數(shù)萬億數(shù)據(jù)點

8.2.?速度(Velocity)

8.2.1.?對數(shù)據(jù)到達速度的一種衡量

8.3.?多樣性(Variety)

8.3.1.?文檔數(shù)據(jù)庫屬于所謂的NoSQL數(shù)據(jù)庫的子集,通常使用簡單的“鍵-值”機制存儲數(shù)據(jù)

8.3.2.?MongoDB是用于文檔存儲的一種比較流行的NoSQL平臺

8.4.?Hadoop分布式文件系統(tǒng)

8.4.1.?Hadoop Distributed File System,HDFS

8.4.2.?HDFS允許跨很多個服務(wù)器管理文件

8.5.?MapReduce

8.5.1.?該技術(shù)通過將任務(wù)分解為可以在多個服務(wù)器上并行運行的許多細小部分來處理大量結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)

8.6.?YARN

8.6.1.?用于HDFS的資源管理器和作業(yè)調(diào)度器

8.7.?允許像單一邏輯系統(tǒng)那樣在數(shù)百甚至數(shù)千臺服務(wù)器上存儲和處理文件

8.8.?Hive

8.8.1.?允許用戶查詢存儲在Hadoop中數(shù)據(jù)的初期嘗試之一

8.9.?Spark SQL

8.9.1.?一個庫,用于查詢以各種格式存儲在Spark中的數(shù)據(jù)

9.?Presto

10.?Toad Data Point

11.?Apache Drill

11.1.?初現(xiàn)于2015年

11.2.?更像是一個抽象層,促進了跨各種數(shù)據(jù)庫平臺的數(shù)據(jù)分析

11.3.?特性

11.3.1.?促進跨多種數(shù)據(jù)格式的查詢,包括分隔數(shù)據(jù)、JSON、Parquet和日志文件

11.3.2.?連接到關(guān)系型數(shù)據(jù)庫、Hadoop、NoSQL、HBase、Kafka,以及PCAP、BlockChain等專用數(shù)據(jù)格式

11.3.3.?允許創(chuàng)建自定義插件,以連接到大多數(shù)其他數(shù)據(jù)存儲

11.3.4.?不需要前期的模式定義

11.3.5.?支持SQL:2003標(biāo)準(zhǔn)

11.3.6.?可與Tableau、Apache Superset等流行的商業(yè)智能(business intelligence,BI)工具配合使用

11.3.7.?可以連接到任意數(shù)量的數(shù)據(jù)源進行查詢,無須先設(shè)置元數(shù)據(jù)倉庫

11.4.?查詢文件

11.4.1.?sql

apache drill> SELECT file_name, is_directory, is_file, permission
. . . . . . > FROM information_schema.`files`
. . . . . . > WHERE schema_name = 'dfs.data';

11.5.?查詢MySQL

11.5.1.?apache drill (information_schema)> use mysql.sakila;

11.5.2.?apache drill (mysql.sakila)> show tables;

11.5.3.?apache drill (mysql.sakila)

)> SELECT a.address_id, a.address, ct.city
)> FROM address a
)>   INNER JOIN city ct
)>   ON a.city_id = ct.city_id
)> WHERE a.district = 'California';

11.6.?查詢MongoDB

11.6.1.?apache drill (mongo.sakila)

)> SELECT Rating, Actors
)> FROM films
)> WHERE Rating IN ('G','PG');

11.7.?處理多個數(shù)據(jù)源

11.7.1.?在同一個查詢中組合多個來源的數(shù)據(jù),而無須將一個來源的數(shù)據(jù)轉(zhuǎn)換并加載到另一個來源

11.7.2.?apache drill (mongo.sakila)

)> SELECT first_name, last_name,
)>   sum(cast(cust_payments.payment_data.Amount
)>         as decimal(4,2))) tot_payments
)> FROM
)>  (SELECT cust_data.first_name,
)>     cust_data.last_name,
)>     f.Rating,
)>     flatten(cust_data.rental_data.Payments)
)>       payment_data
)>   FROM mysql.sakila.film f
)>     INNER JOIN
)>    (SELECT c.`First Name` first_name,
)>       c.`Last Name` last_name,
)>       flatten(c.Rentals) rental_data
)>     FROM mongo.sakila.customers c
)>    ) cust_data
)>     ON f.film_id =
)>       cast(cust_data.rental_data.filmID as integer)
)>   WHERE f.rating IN ('G','PG')
)>  ) cust_payments
)> GROUP BY first_name, last_name
)> HAVING
)>   sum(cast(cust_payments.payment_data.Amount
)>         as decimal(4,2))) > 80;

到了這里,關(guān)于讀SQL學(xué)習(xí)指南(第3版)筆記10_元數(shù)據(jù)與大數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 讀SQL學(xué)習(xí)指南(第3版)筆記01_背景知識

    讀SQL學(xué)習(xí)指南(第3版)筆記01_背景知識

    2.1.3.1.?單根層次結(jié)構(gòu) 2.1.5.1.?Microsoft的Active Directory 2.1.5.2.?開源的Apache Directory Server 3.1.3.1.?大型共享數(shù)據(jù)銀行的數(shù)據(jù)關(guān)系模型 3.2.2.1.?不用操心跟蹤已分配的數(shù)字 3.2.4.1.?由兩個或多于兩個列組成的主鍵 4.4.1.1.?用于定義存儲在數(shù)據(jù)庫中的數(shù)據(jù)結(jié)構(gòu) 4.4.1.2.?通過SQL模式語句所創(chuàng)

    2024年02月12日
    瀏覽(25)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記06_連接和集合

    讀SQL學(xué)習(xí)指南(第3版)筆記06_連接和集合

    1.1.2.1.?兩個數(shù)據(jù)表的所有排列組合 1.1.3.1.?使用頻率并不高 1.1.5.1.?涉及交叉連接、外連接、日期函數(shù)、分組、集合運算(union all)和聚合函數(shù)(count()) 1.1.5.2.?sql 1.1.5.3.?mysql 1.1.5.4.?如果生成{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}、{0, 10, 20, 30, 40, 50, 60, 70, 80, 90}和{0,100, 200, 300}這3個集合的

    2024年02月11日
    瀏覽(20)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記08_視圖和索引

    讀SQL學(xué)習(xí)指南(第3版)筆記08_視圖和索引

    3.1.3.1.?Oracle Database用戶另一種選擇可以保護數(shù)據(jù)表的行列數(shù)據(jù)安全 3.1.3.2.?VPD允許用戶對數(shù)據(jù)表施加策略,服務(wù)器據(jù)此對用戶的查詢進行修改 5.10.4.1.?sql 5.12.1.1.?平衡樹索引(balanced-tree index) 5.12.1.1.1.?B樹索引(B-tree index) 5.12.1.2.?MySQL、Oracle Database和SQL Server均默認采用B樹

    2024年02月10日
    瀏覽(46)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記09_條件邏輯與事務(wù)

    讀SQL學(xué)習(xí)指南(第3版)筆記09_條件邏輯與事務(wù)

    1.3.1.1.?Oracle的decode()函數(shù) 1.3.1.2.?MySQL的if()函數(shù) 1.3.1.3.?SQL Server的coalesce()函數(shù) 1.3.2.1.?在Oracle Database、SQL Server、MySQL、PostgreSQL、IBM UDB等數(shù)據(jù)庫中實現(xiàn) 1.3.3.1.?用于select、insert、update和delete語句 1.3.4.1.?sql 1.3.4.2.?mysql 1.3.5.1.?simple case expression 1.3.5.2.?類似于搜索型case表達式,但

    2024年02月10日
    瀏覽(18)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記07_分組和子查詢

    讀SQL學(xué)習(xí)指南(第3版)筆記07_分組和子查詢

    2.1.1.1.?查詢返回的每個值都是由聚合函數(shù)生成的 2.1.1.2.?沒有使用group by子句 2.1.1.3.?只有一個隱式分組 2.1.1.3.1.?payment數(shù)據(jù)表中的所有行 2.2.1.1.?添加一個group by子句來指定聚合函數(shù)應(yīng)該應(yīng)用于哪個分組 2.6.2.1.?因為在評估where子句時,分組尚未生成,因而必須將分組過濾條件

    2024年02月11日
    瀏覽(22)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記12_時間函數(shù)和分析函數(shù)

    讀SQL學(xué)習(xí)指南(第3版)筆記12_時間函數(shù)和分析函數(shù)

    1.6.3.1.?SQL Server的getutcdate() 1.6.3.2.?MySQL的utc_timestamp() 1.8.2.1.?對于每個登錄的用戶可能有所不同 1.8.2.2.?改變當(dāng)前會話的時區(qū)設(shè)置 1.8.2.3.?mysql> SET time_zone = \\\'Europe/Zurich\\\'; 2.4.1.1.?年份,包括世紀(jì) 2.4.1.2.?1000--9999 2.4.2.1.?月份 2.4.2.2.?01 (1月)~12 (12月) 2.4.3.1.?日 2.4.3.2.?01~31 2.4.4.1

    2024年02月10日
    瀏覽(28)
  • 讀SQL學(xué)習(xí)指南(第3版)筆記11_字符串函數(shù)和數(shù)值函數(shù)

    讀SQL學(xué)習(xí)指南(第3版)筆記11_字符串函數(shù)和數(shù)值函數(shù)

    2.5.3.1.?SQL Server 2005還包括varchar(max)數(shù)據(jù)類型,并建議使用其代替text類型,text類型將在未來的某個版本中被刪除 2.9.7.1.?如果使用的是MySQL,可以通過內(nèi)建函數(shù)quote()來實現(xiàn),該函數(shù)會將整個字符串放入引號內(nèi)并對其中任意的引號/撇號進行轉(zhuǎn)義 2.9.7.2.?mysql 2.9.7.3.?在檢索數(shù)據(jù)用

    2024年02月10日
    瀏覽(23)
  • Redis學(xué)習(xí)指南(2)-Redis與傳統(tǒng)SQL數(shù)據(jù)庫的差異

    在數(shù)據(jù)庫領(lǐng)域,Redis和SQL數(shù)據(jù)庫是兩種不同的存儲解決方案,各自具有一系列優(yōu)勢和劣勢。本文將對Redis和SQL數(shù)據(jù)庫進行對比分析,以幫助讀者更好地了解它們的特點和適用場景。 1. 高性能 Redis以其出色的性能而聞名,主要因為它是一個基于內(nèi)存的鍵值存儲系統(tǒng)。這意味著數(shù)

    2024年01月21日
    瀏覽(26)
  • 【大數(shù)據(jù)進階第三階段之DolphinScheduler學(xué)習(xí)筆記】DolphinScheduler(海豚調(diào)度)的部署指南

    【大數(shù)據(jù)進階第三階段之DolphinScheduler學(xué)習(xí)筆記】DolphinScheduler(海豚調(diào)度)的部署指南

    參考官網(wǎng)部署方式:https://dolphinscheduler.apache.org/zh-cn/docs/3.1.3/guide/installation/standalone 部署方式:單機部署,偽集群部署,集群部署。 如果是新手,想要體驗 DolphinScheduler 的功能,推薦使用Standalone方式體檢。如果你是在生產(chǎn)中使用,推薦使用 集群部署或者 kubernetes。 Standalone

    2024年01月22日
    瀏覽(18)
  • 計算機網(wǎng)絡(luò):自頂向下第八版學(xué)習(xí)指南筆記和課后實驗--網(wǎng)絡(luò)層(數(shù)據(jù)平面)

    記錄一些學(xué)習(xí)計算機網(wǎng)絡(luò):自頂向下的學(xué)習(xí)筆記和心得 Github地址,歡迎star ?????????? 網(wǎng)絡(luò)層中的每一臺主機和路由器都有一個網(wǎng)絡(luò)層的部分,網(wǎng)絡(luò)層可以被分解為兩個相互作用的部分: 數(shù)據(jù)平面 和 控制平面 數(shù)據(jù)平面主要是網(wǎng)絡(luò)中每臺路由器的功能,該數(shù)據(jù)平面

    2024年02月03日
    瀏覽(57)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包