文章來源地址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;
文章來源:http://www.zghlxwxcb.cn/news/detail-693033.html
到了這里,關(guān)于讀SQL學(xué)習(xí)指南(第3版)筆記10_元數(shù)據(jù)與大數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!