00.數(shù)據(jù)庫發(fā)展
1.GBase 8a MPP Cluster 數(shù)據(jù)庫屬于( )?
A 非關系型數(shù)據(jù)庫
B 關系型分布式數(shù)據(jù)庫
C 關系型事務型數(shù)據(jù)庫
D 關系型集中式數(shù)據(jù)庫
正確答案: B
解析: 南大通用大規(guī)模分布式并行數(shù)據(jù)庫 GBase 8a MPP Cluster 是列存數(shù)據(jù)庫,主要用于分析場景,屬于 OLAP 場景使用 SQL 處理結(jié)構(gòu)化數(shù)據(jù),屬于關系型數(shù)據(jù)庫。MPP 技術(shù)架構(gòu)處理海量數(shù)據(jù),數(shù)據(jù)分散在多個節(jié)點上,又是分布式數(shù)據(jù)庫。
2.數(shù)據(jù)庫行業(yè)中有多位科學家獲得了圖靈獎,其中有一位發(fā)明了很多種不同類型的數(shù)據(jù)庫,像 SqlServer、Sybase、Informix、DB2 等前生 Ingres 這款數(shù)據(jù)庫,還有 PostGreSQL(又叫 PG)也是他推出的,他的名字( )。
A Charles W. Bachman
B E.F. Codd
C Jim Gray
D Michael Stonebraker
正確答案: D
3.以下哪個老牌國產(chǎn)數(shù)據(jù)庫廠家是在 2003–2006 年期間成立的( )?
A 武漢達夢
B 人大金倉
C 南大通用
D 神州通用
正確答案: C
解析: 天津南大通用數(shù)據(jù)庫技術(shù)股份有限公司是2004年成立的。
4.集中式事務型數(shù)據(jù)庫經(jīng)過了 40 多年發(fā)展,技術(shù)上進行三代演進,分別是( )?
A 單機服務器
B 主備集群
C 共享存儲集群
D 分布式事務型集群
正確答案: A, B, C
解析: 交易數(shù)據(jù)庫發(fā)展到今天,歷經(jīng) 40 年,演進可清晰的劃分為三代:單機、主備集群、共享存儲集群。
01.核心技術(shù)
1.GBase 8a 對于智能索引的特點理解錯誤的是( )
A 智能索引是粗粒度的,基于 DC 包創(chuàng)建,每條索引很小,幾乎不影響入庫性能。
B 智能索引有局部性特點,每條索引隨著新增 DC 追加到索引數(shù)據(jù)結(jié)構(gòu)末尾,所以建索引速度與數(shù)據(jù)量無關。
C 智能索引是免維護的,不需要用戶手工創(chuàng)建,而是全字段自動建立索引,非常的智能方便。
D 智能索引能提升查詢效率,原因是數(shù)據(jù)進入 DC 時自動進行了排序,這樣智能索引在查找數(shù)據(jù)時根據(jù) DC 的最大值和最小值進行智能過濾,排除掉不滿足條件的 DC。
正確答案: D
2.GBase 8a 對于并行理解正確的是( )
A 在單個節(jié)點上,單條 SQL 語句未實現(xiàn)并行。
B 在單個節(jié)點上,單條 SQL 語句多個算子已經(jīng)實現(xiàn)了并行操作。
C 在多個節(jié)點上,多條 SQL 語句之間是并行調(diào)動操作的,下發(fā)到單節(jié)點上的子 sql 是無法并行的。
D 在多個節(jié)點上,單條 SQL 語句經(jīng)執(zhí)行器分解后下發(fā)到多個節(jié)點上進行并行計算,在單節(jié)點上的子 sql 也是可以并行的。
正確答案: B, D
3.集群鏡像是兩個統(tǒng)一管理的VC,為了實現(xiàn)數(shù)據(jù)實時同步、相互備份、負載分擔的目的而建立的鏡像關系。
正確
錯誤
正確答案: 正確
4.Candidate 是 gcware 集群競選 Leader 時的角色,選舉完成,該角色會自動成為 Leader 的備份。
正確
錯誤
正確答案: 錯誤
5.8a 數(shù)據(jù)庫的壓縮支持( )
A 按庫壓縮
B 按表壓縮
C 按列壓縮
D 按行壓縮
正確答案: A, B, C
解析: 實現(xiàn)庫級、表級、列級三級壓縮選項。壓縮算法按數(shù)據(jù)類型和數(shù)據(jù)分布不同而優(yōu)化,自動選擇最優(yōu)壓縮算法,靈活平衡性能與壓縮比的關系,可以對壓縮方式進行修改。
6.以下針對 GBase 8a 集群數(shù)據(jù)庫中 DC 的描述正確的是( )?
A DC 是基本的 I/O 單位
B 每個 DC 自動封裝和壓縮
C 每個 DC 包含 32768 行數(shù)據(jù)
D DC 尾塊不壓縮
正確答案: A, B, D
解析: DC 文件依賴操作系統(tǒng)的文件大小限制進行分裂和存儲。DC 是基本 I/O 單位,具有查詢所涉及列塊的列擴展I/O。每個 DC 包含 65536 行數(shù)據(jù),數(shù)據(jù)行數(shù)不足時以 DC 尾塊形式單獨存放。DC 尾塊不封裝、不壓縮。
7.GBase 8a 集群數(shù)據(jù)庫主要應用于( )?
A 用戶業(yè)務系統(tǒng)
B 數(shù)據(jù)倉庫系統(tǒng)
C 商業(yè)智能系統(tǒng)
D 決策支持系統(tǒng)
正確答案: BCD
解析: 南大通用大規(guī)模分布式并行數(shù)據(jù)庫集群系統(tǒng)是為管理超大規(guī)模數(shù)據(jù)量而設計的通用計算平臺,具備高性能、高可用、高擴展特性,廣泛應用于各類企業(yè)單位的數(shù)據(jù)倉庫系統(tǒng)、BI 系統(tǒng)和決策支持系統(tǒng)。
02.工作機制
1.GBase 8a 集群中由數(shù)據(jù)節(jié)點組成的集群叫做( )?
A 虛擬集群
B GCluster 集群
C GCware 集群
D Data 集群
正確答案: D
解析: 由 gcluster 節(jié)點組成的集群叫 GCluster 集群,由數(shù)據(jù)節(jié)點組成的集群叫 Data 集群,由 gcware 節(jié)點組成的集群叫 GCware 集群。三個集群協(xié)同工作形成聯(lián)邦架構(gòu)。
2.GBase 8a 集群內(nèi),單個節(jié)點的主分片越多,數(shù)據(jù)查詢性能越高。
正確
錯誤
正確答案: 錯誤
3.數(shù)據(jù)多分片部署的優(yōu)勢在于( )
A 降低木桶效應
B 提高查詢速度
C 快速擴容
D 實現(xiàn)分區(qū)
正確答案: AC
4.在 GBase8a v95 版本集群中,一個數(shù)據(jù)節(jié)點不屬于任何一個 VC 中,被稱為( )節(jié)點。
A gcluster 節(jié)點
B Free Node 節(jié)點
C gnode 節(jié)點
D 以上都不是
正確答案: B
解析: Free Node 節(jié)點不屬于任何一個 VC。
5.集群中負責各節(jié)點實例間共享信息,并在多副本操作中,控制各節(jié)點數(shù)據(jù)一致性狀態(tài)的組件是( )?
A gnode
B gcware
C gcluster
D syncserver
正確答案: B
解析: GCWare 用于各節(jié)點 GCluster 實例間共享信息,以及控制多副本數(shù)據(jù)操作時,提供可操作節(jié)點,并在多副本操作中,控制各節(jié)點數(shù)據(jù)一致性狀態(tài)。
03.安裝與卸載
1.用戶連接 GBase 8a 數(shù)據(jù)庫時,默認使用的連接端口是?
A 5050
B 5258
C 5919
D 16066–16166 之間任意一個
正確答案: B
解析: 5050 是 gnode 端口,5258 是 gcluster 端口,5919 是 gcware 端口,16066–16166 是數(shù)據(jù)遠程導出端口。
2.下列有關 demo.options 文件描述正確的是( )?
A demo.options 是安裝集群的配置文件
B 該文件指定各集群節(jié)點的角色
C 該文件描述節(jié)點和 rack 的對應關系
D 在 demo.options 文件中寫明密碼即代表所有節(jié)點所使用的密碼一致
正確答案: ABD
解析: 8a 集群安裝時,使用 demo.options 文件作為集群靜默安裝的配置文件。該文件標識集群各節(jié)點角色、賬戶信息、密碼等。
3.GBase 8a 集群數(shù)據(jù)庫安裝成功后,數(shù)據(jù)庫的初始管理員為 root,密碼為空。( )
正確
錯誤
正確答案: 正確
解析: 數(shù)據(jù)庫安裝完成后,數(shù)據(jù)庫自動生成管理員賬戶 root,初始密碼為空。使用 root 賬戶登錄數(shù)據(jù)庫后執(zhí)行初始化數(shù)據(jù)庫操作,數(shù)據(jù)庫才能正常使用。
4.影響 license 失效的原因有( )?
A 超過數(shù)據(jù)庫合法使用期限
B 超過數(shù)據(jù)庫規(guī)模范圍
C 超過 gnode 節(jié)點數(shù)量
D 更換網(wǎng)卡
正確答案: ABC
解析: 下發(fā)的 License 會包含:使用期限、數(shù)據(jù)規(guī)模、gnode 節(jié)點數(shù)量等信息。
5.下列有關 SetSysEnv.py 腳本描述正確的是( )?
A 每個節(jié)點安裝前都要執(zhí)行該腳本
B 該腳本由 DBA 用戶操作執(zhí)行
C cgroup 參數(shù)是可選項
D 運行產(chǎn)生的日志文件存在 /tmp 目錄下
正確答案: CD
解析: SetSysEnv.py 腳本用于設置集群各節(jié)點的安裝環(huán)境,會涉及到系統(tǒng)環(huán)境的設置,所以需要以操作系統(tǒng)的管理員身份執(zhí)行。Gcware 獨立部署于單獨節(jié)點的情況下,可以不執(zhí)行該腳本。
04.客戶端
1.運行在非 gcluster 節(jié)點的命令行客戶端,必須使用“-h”參數(shù)。( )
正確
錯誤
正確答案: 正確
解析: gccli -h 參數(shù)用于指定通過哪個服務器登錄數(shù)據(jù)庫。除非數(shù)據(jù)庫客戶端與登錄服務器在同一節(jié)點,否則需要指定 -h 參數(shù)指明要登錄的服務器。
2.企業(yè)管理器 GBaseDataStudio 能夠?qū)崿F(xiàn)以下哪些功能( )?
A 查看集群環(huán)境日志
B 創(chuàng)建和刪除用戶
C 診斷存儲過程和函數(shù)
D 執(zhí)行 SQL 腳本
正確答案: ABCD
解析: 企業(yè)管理器作為集群的圖形化客戶端,可以實現(xiàn)各種數(shù)據(jù)庫操作并可視化數(shù)據(jù)庫對象。
3.以下關于企業(yè)管理器 GBaseDataStudio 說法正確的是( )?
A 通過 JDBC 連接數(shù)據(jù)庫
B 可以用它執(zhí)行加載操作
C 它是 8a 數(shù)據(jù)庫的圖形化客戶端
D 它只能用在 Windows 系統(tǒng)平臺
正確答案: ABC
解析: 企業(yè)管理器作為集群的圖形化客戶端,提供 Linux 版和 Windows 版。
4.C/S 架構(gòu)中的服務端內(nèi)置在( )集群節(jié)點中?
A Gcware
B Gcluster
C Gnode
D 全部
正確答案: B
5.圖形化的企業(yè)管理器使用 JDBC 接口連接 GBase 8a 集群,因此也可以通過設置參數(shù),使得企業(yè)管理器實現(xiàn)連接時的高可用和負載均衡。
正確
錯誤
正確答案: 正確
05.集群管理
1.gcmmonit負責監(jiān)測以下哪個進程? ()
A gcrecover;
B gcware;
C gcmonit;
D syncserver;
正確答案: C
2.GBase 8a 數(shù)據(jù)庫的集群管理工具gcadmin,隨 GBase 8a 數(shù)據(jù)庫一起安裝,部署在 gcluster/server/bin 目錄中。
正確
錯誤
正確答案: 錯誤
解析: gcadmin 是專門為 DBA 管理員提供的用于對集群進行管理和監(jiān)控的工具軟件。隨 GBase 8a 數(shù)據(jù)庫一起安裝,部署在 gcware/bin 目錄中。
3.有關gcluster_services all stop命令,描述正確的是( )?
A 關閉整個集群的服務進程
B 只有操作系統(tǒng)管理員 root 可以使用
C 只關閉當前節(jié)點的 gnode 和 gcluster 相關進程
D 關閉當前節(jié)點的所有集群進程
正確答案: C
解析: 由 DBA 用戶執(zhí)行,關閉當前節(jié)點的所有數(shù)據(jù)庫服務進程。
4.以下有關gcadmin命令,說法正確的是( )?
A gcadmin 命令可以在 gcluster 節(jié)點執(zhí)行;
B gcadmin 命令可以在 node 節(jié)點執(zhí)行;
C 操作系統(tǒng) root 用戶,默認不可以執(zhí)行 gcadmin 命令查看集群狀態(tài);
D gcadmin 命令在沒有 initnodedatamap 前不能使用;
正確答案: AC
5.以下選項中,屬于gnode節(jié)點模塊進程的是( )
A gclusterd
B gcware
C gbased
D gc_sync_server
E gcrecover
正確答案: CD
解析: gbased 和 gc_sync_server 是 gnode 節(jié)點模塊的相關進程。
6.當集群 gcluster 節(jié)點出現(xiàn)數(shù)據(jù)不一致時,應如何定位問題( )?
A gcadmin showddlevent
B gcadmin showdmlevent
C gcadmin showdmlstorageevent
D 查看網(wǎng)絡
正確答案: A
解析: 集群管理節(jié)點主要維護數(shù)據(jù)庫的元數(shù)據(jù),所以出現(xiàn)數(shù)據(jù)不一致時主要查看 ddlevent。
7.gcluster_services all info 命令有可能查看到以下哪些進程( )?
A gcware
B gcluster
C gcrecover
D gcmonit
正確答案: BC
解析: gcluster_services all info 命令用于查看 gcluster 和 gcrecover 等進程的運行狀態(tài)。
[gbase@gbase8a01 ~]$ gcluster_services all info
/opt/gbase/192.168.6.72/gcluster/server/bin/gclusterd is running
/opt/gbase/192.168.6.72/gcluster/server/bin/gcrecover is running
/opt/gbase/192.168.6.72/gnode/server/bin/gbased is running
/opt/gbase/192.168.6.72/gnode/server/bin/gc_sync_server is running
8.以下有關 8a 集群初始化之前可運行的操作描述正確的是( )?
A 可以查看系統(tǒng)數(shù)據(jù)庫
B 可以創(chuàng)建數(shù)據(jù)庫
C 可以創(chuàng)建賬戶
D 能夠刪除數(shù)據(jù)
正確答案: A
解析: 只有初始化后,數(shù)據(jù)庫才能將數(shù)據(jù)寫入相對應的數(shù)據(jù)分片。
06.SQL基礎
1.GBase 8a MPP Cluster 中,使用以 @ 開頭的變量是( )
A 局部變量
B 系統(tǒng)變量
C 用戶變量
D 全局變量
正確答案: C
2.GBase 8a MPP Cluster 每條 SQL 語句默認的結(jié)束符號是( )
A .
B ;
C #
D --
正確答案: B
解析: GBase 8a MPP Cluster 每條 SQL 語句的默認結(jié)束符號是 ;。
3.DECIMAL 類型是嚴格的數(shù)值數(shù)據(jù)類型,建表語句 create table t(i int, j decimal); 中,沒有具體寫 DECIMAL 位數(shù),則默認是( )位
A 0
B 10
C 18
D 65
正確答案: B
解析: DECIMAL 默認是 DECIMAL(10,0)
4.在實際的 GBase 8a 項目中,建議客戶使用( )類型存儲字符串。
A CHAR
B TEXT
C VARCHAR
D VARCHAR2
正確答案: C
解析: 數(shù)倉等項目建議使用 VARCHAR 類型存儲字符串,8a 不支持 VARCHAR2 類型。
5.GBase 8a MPP Cluster 支持的 DECIMAL(M,D) 類型,其中 M 是總位數(shù),最大支持( )位
A 16
B 18
C 64
D 65
正確答案: D
解析: GBase 8a MPP Cluster 支持的 DECIMAL(M,D) 類型,其中 M 是總位數(shù),最大支持 65 位。
6.GBase 8a MPP Cluster 中,關于SQL描述錯誤的是( )
A SQL 的關鍵字不區(qū)分大小寫,例如 SELECT 和 select 都可以正確執(zhí)行。
B 默認 SQL 執(zhí)行采用自動提交方式,跟 oracle 默認非自動提交不同,不用單獨寫 commit 語句。
C 數(shù)據(jù)庫、表、列等標識符名稱默認支持的字符為字母、數(shù)字、一下劃線、中文組合,名稱長度有最大長度限制。
D 數(shù)據(jù)庫、表、列等標識符名稱中包括特殊字符或關鍵詞時,需要加反引號包圍,例如 gs-table.gs-column。
正確答案: CD
解析: 需要設置參數(shù) cluster_extend_ident 參數(shù)為 1 時,才支持中文庫名、表名,默認此參數(shù)為 0,不支持中文。數(shù)據(jù)庫、表、列等標識符名稱中包括特殊字符或關鍵詞時,每個對象需要加反引號包圍,例如 gs-table.gs-column,不能加到一起。
7.GBase 8a MPP Cluster 支持的 DATETIME 類型,支持的最小時間單位是( )
A 秒
B 毫秒
C 微秒
D 納秒
正確答案: C
解析: GBase 8a MPP Cluster 支持的 DATETIME 類型,支持的最小時間單位是微秒。
8.GBase 8a MPP Cluster v9 版本增加虛擬集群的概念,當沒有多個 VC 情況下,8a 集群為兼容模式,會默認包括一個 VC,id 是 vc00001,在訪問路徑中可以省略。( )
正確
錯誤
正確答案: 正確
解析: GBase 8a MPP Cluster v9 增加了虛擬集群概念,在沒有多個 VC 的情況下默認包括一個 VC,id 為 vc00001,可以在訪問路徑中省略。
9.其他數(shù)據(jù)庫表要遷移到 GBase 8a MPP Cluster 時,當遇到跟 8a 支持的數(shù)據(jù)類型關鍵字不一致時,必須要把列的數(shù)據(jù)類型完全改寫成 8a 支持的數(shù)據(jù)類型才能正確建表。( )
正確
錯誤
正確答案: 錯誤
解析: 8a 支持隱式轉(zhuǎn)換,對于一些數(shù)據(jù)類型,例如 bool 類型、int2 等,能自動轉(zhuǎn)換成 8a 支持的列類型。
10.GBase 8a MPP Cluster支持數(shù)據(jù)類型中,()類型不能有DEFAULT值。
A DECIMAL
B TEXT
C BLOB
D LONGBLOB
正確答案: BCD
解析: 大對象類型不支持 DEFAULT 值,像 TEXT、BLOB 和 LONGBLOB。
07.DDL(庫、表管理)
1.若要完整刪除數(shù)據(jù)庫中已存在的表S,可使用下列哪個命令
A DELETE TABLE S
B DROP TABLE S
C DROP S
D DELETE S
正確答案: B
2.對臨時表描述錯誤的是
A 使用關鍵詞TEMPORARY
B 被限制在當前連接中,當連接關閉時,臨時表會自動被刪除
C 臨時表跟表類型無關,可以建成隨機分布臨時表,也可以建成復制臨時表
D 臨時表跟表操作命令一樣,支持所有DDL及DML操作
正確答案: D
解析: 臨時表不支持ALTER TABLE
3.建表語句 create table tb(id int, name varchar(50), c int) REPLICATED; 創(chuàng)建的是( )表?
A 分布表
B 臨時表
C 復制表
D 分區(qū)表
正確答案: C
解析: REPLICATED 表示創(chuàng)建的是復制表。
4.當t1表是復制表時,執(zhí)行CREATE TABLE t2 LIKE t1; 則t2表是
A hash分布表
B 隨機分布表
C 復制表
D 分區(qū)表
正確答案: C
5.哈希分布表中的被選為distributed by列字段,不能做( )操作。
A delete
B update
C insert
D 以上三種
正確答案: B
解析: 哈希分布表中的 hash 列字段,不能做 update 操作。
6.目前 GBase 8a 的 hash 分布列支持哪幾種數(shù)據(jù)類型( )
A varchar
B char
C int
D decimal
正確答案: ACD
解析: hash 分布列當前只支持整數(shù)類型、varchar、decimal 數(shù)據(jù)類型
7.當客戶端連接上 GBase 8a MPP Cluster 數(shù)據(jù)庫后,執(zhí)行( )SQL命令切換到指定數(shù)據(jù)庫下。
A show databases;
B create database database_name;
C use database_name;
D select database();
正確答案: C
解析: 使用 use database_name; 命令切換到指定數(shù)據(jù)庫下
8.使用 ALTER TABLE 語句能修改表字段的( )
(多選題,2分)
A 數(shù)據(jù)類型
B 默認值
C varchar 類型的長度
D 名字
正確答案: CD
解析: ALTER TABLE 語句不支持改變量的數(shù)據(jù)類型、改變量的屬性(NOT NULL、默認值)、改變表的字符集;可以變列的長度,只能變大,不能變??;可改變名稱
9.下哪個操作能釋放 t 表數(shù)據(jù)占用的物理空間( )
A DROP TABLE t;
B RENAME TABLE t TO a;
C DELETE FROM t;
D TRUNCATE TABLE t;
正確答案: AD
解析: DROP TABLE 和 TRUNCATE TABLE 可以釋放數(shù)據(jù)占用的空間
10.建表語句 create table t(a int, b varchar(50), c int), 未寫明特別的關鍵字,則創(chuàng)建的是()表?
A 分布表
B 臨時表
C 復制表
D 分區(qū)表
正確答案: A
未寫明特別的關鍵字的建表語句,則創(chuàng)建的是隨機分布表。
08.DDL(視圖,索引)
1.hash 索引列不支持數(shù)據(jù)類型是( )
A DECIMAL
B TEXT
C BLOB
D VARCHAR
正確答案: BC
解析: hash 分布列當前只支持整數(shù)類型、varchar、decimal 數(shù)據(jù)類型
2.GBase 8a MPP Cluster支持的索引有()
A 智能索引
B 聚簇索引
C 全文索引
D hash索引
正確答案:ACD
解析: 8a不支持聚簇索引
3.索引是在基本表的列上建立的一種數(shù)據(jù)庫對象,它同基本表分開存儲,使用它能夠加快數(shù)據(jù)的()速度
A delete
B update
C insert
D select
正確答案:D
4.GBase 8a MPP Cluster支持對視圖進行()操作
A delete
B update
C insert
D select
正確答案:D
解析: 禁止對視圖進行delete update insert
5.查詢視圖跟查詢表操作一樣,使用show tables;命令可查詢視圖名稱
正確
錯誤
正確答案:正確
解析: 使用show tables;命令可查詢表名和視圖名
09.DML語句
1.GBase 8a 的 DELETE 支持級聯(lián)刪除,即關聯(lián)表的數(shù)據(jù)同時被刪除。
正確
錯誤
正確答案: 錯誤
解析: GBase 8a 的 DELETE 操作不支持級聯(lián)刪除,一次只能刪除一個表中的數(shù)據(jù)。
2.哈希分布表中被定義為 distributed by 的字段,不能做( )操作。
A delete
B update
C insert
D 以上三種
正確答案: B
解析: 哈希分布表中的 hash 列字段,不能做 update 操作。
3.快速UPDATE模式,需要開啟( )參數(shù)開關
A gbase_fast_update
B fast_update
C _t_gbase_fast_update
D _fast_update
正確答案: A
解析: 快速 UPDATE 模式,需要開啟 gbase_fast_update 參數(shù)為 1 或者 on,開啟快速更新模式。
4.哈希分布表的哈希列的約束是( )
A 哈希列的值不能是空值。
B 哈希列只支持 1 列。
C 哈希列的值支持的數(shù)據(jù)類型是整型、DECIMAL 或 VARCHAR。
D UPDATE 語句不能改寫哈希列的值。
正確答案: CD
解析: v95 版本的 8a 支持 hash 列可以是 null 值和多列 hash。
5.GBase 8a MPP Cluster 執(zhí)行 SQL 命令,DDL 和 DML 執(zhí)行步驟不同點:( )
A 一條 DDL 命令會在所有 gcluster 管理節(jié)點和 gnode 計算節(jié)點上執(zhí)行。一條 DML 命令由 GCluster 發(fā)起節(jié)點下發(fā)給 gnode 計算節(jié)點,各計算節(jié)點執(zhí)行 DML 命令更新數(shù)據(jù),然后返回結(jié)果給發(fā)起管理節(jié)點。
B DDL 和 DML 語句首先發(fā)給所有管理節(jié)點,然后再下發(fā)到各個計算節(jié)點。
C DDL 僅在所有管理節(jié)點上執(zhí)行;DML 語句僅在計算節(jié)點上執(zhí)行。
D DDL 和 DML 語句首先發(fā)給 GCluster 發(fā)起節(jié)點,再下發(fā)到各個計算節(jié)點。
正確答案: A
解析: 一條 DDL 命令會在所有 gcluster 管理節(jié)點和 gnode 計算節(jié)點上執(zhí)行。一條 DML 命令由 GCluster 發(fā)起節(jié)點下發(fā)給 gnode 計算節(jié)點,各計算節(jié)點執(zhí)行 DML 命令更新數(shù)據(jù),然后返回結(jié)果給發(fā)起管理節(jié)點。
6.GBase 8a 的 DELETE 操作會實際刪除數(shù)據(jù),重新創(chuàng)建智能索引,所以刪除數(shù)據(jù)操作的性能較低。
正確
錯誤
正確答案: 錯誤
解析: GBase 8a 的 DELETE 操作會打刪除標記,不實際刪除數(shù)據(jù)。
7.以下 INSERT 語句正確的是( )
A INSERT INTO score (sid, score) VALUES (1, 80);
B INSERT INTO score [sid, score] VALUES (1, 80);
C INSERT score (sid, score) VALUES ((1, 80), (2, 76), (3, 91), (4,86), (5,89));
D INSERT score (sid, score) VALUES (1, 80), (2, 76), (3, 91), (4,86), (5,89);
正確答案: AD
解析: 插入多個值時,元組集合外不用再加一層圓括號。
8.數(shù)據(jù)操作語句 DML 包含( )
A SELECT
B INSERT
C DELETE
D UPDATE
正確答案: BCD
解析: DML 不包含 SELECT 查詢語句。
9.Student 包含 SId,Sname,Sdept,Sage 等字段,以下 INSERT 語句正確的是( )
A INSERT Student (SId , Sname) SELECT user_id, user_Name FROM user_info
B INSERT INTO Student (SId , Sname) SELECT user_id, user_Name FROM user_info
C INSERT INTO Dept_age (Sdept , Avg_age) SELECT Sdept, AVG(Sage) FROM Student GROUP BY Sdept
D INSERT INTO Student SELECT user_id, user_Name FROM user_info
正確答案: ABC
解析: 表名后不寫明要插入的列是錯誤的。
10.DQL語句
1.where和having用法區(qū)別( )
A where 中不能有列的別名,having 中可以操作列的別名。
B WHERE 子句用來篩選 FROM 子句中指定的數(shù)據(jù)集。HAVING 子句用來從分組的結(jié)果中篩選。
C where 中不能有聚合函數(shù),having 中可以有聚合函數(shù)。
D 執(zhí)行的順序不一樣:where 的搜索條件是在進行分組之前執(zhí)行;having 的搜索條件是在分組后執(zhí)行的。
正確答案: BCD
解析: having 中不能有列的別名,所以A錯。
2.COUNT(*) 和 COUNT(colName) 結(jié)果( )
A 完全相同。
B colName 列存在 NULL 值時,不同。
C 總是不同。
D 由表類型(哈希分布表、隨機分布表)決定。
正確答案: B
解析: 有 NULL 值時,二者查詢的條數(shù)不同。COUNT(colName) 只記錄不含 NULL 值的條數(shù)。
3.笛卡爾乘積是由于( )的表關聯(lián)產(chǎn)生的。
A 左外連接
B 右外連接
C 全連接
D 沒有關聯(lián)條件
正確答案: D
解析: 沒有關聯(lián)條件的兩表會產(chǎn)生兩表條數(shù)相乘記錄的聯(lián)合表。
4.GBase 8a MPP Cluster 執(zhí)行單個復制表 DQL 語句,會下發(fā)到( )計算節(jié)點上
A 所有
B 指定
C 隨機一個
D 以上皆非
正確答案: C
解析: 每個節(jié)點都有復制表,隨機選擇一個節(jié)點執(zhí)行即可。
5.表連接類型分為( )兩大類
A 內(nèi)連接
B 外連接
C 左連接
D 右連接
正確答案: AB
解析: 表連接類型分為內(nèi)連接和外連接。
6.以下聚合語句中錯誤的是( )
A select Ssex, count(Sno) from student group by Ssex;
B select YEAR(Sage), count(Sno) from student group by YEAR(Sage);
C select Cno, count(Sno) from student group by Cno;
D select Cno, count(Sno) from student group by Ssex;
正確答案: D
解析: 有 group by 子句時,投影列需包括 group by 后分組字段和聚合函數(shù)。
7.Base 8a MPP Cluster 執(zhí)行單個 hash 分布表 select 語句,WHERE 子句中只有一個 hash 分布列條件,語句會下發(fā)到( )計算節(jié)點上
A 所有
B 指定
C 隨機一個
D 和條件中比較值的 hash 運算值相匹配的
正確答案: D
解析: hash 分布表能計算出數(shù)據(jù)具體落在哪個節(jié)點上,所以不是所有節(jié)點都查詢,只下發(fā)到有該數(shù)值的節(jié)點執(zhí)行即可。
8.使用 union 或 union all 時,需( )
A 必須保證各個 select 集合的結(jié)果有相同個數(shù)的列。
B 必須保證各個 select 集合相同次序上的列名相同。
C 必須保證各個 select 集合對應的列類型是一樣的。
D 各個 select 集合相同次序上的列名可以不同。
正確答案: ACD
解析: 各個 select 集合投影列相同次序上的列類型一致,個數(shù)一致,列名可以不同,以第一個 select 列名顯示。
11.常用系統(tǒng)函數(shù)
1.查詢?nèi)掌谠路葑詈笠惶?,以下語句哪些是正確的()
A select last_day('2019年2月10日')
B select last_day('2019-2-10 12:10:30')
C select last_day('19-02-10')
D select last_day('190210')
E 以上皆錯
正確答案: BCD
解析: 含中文字符日期不是標準可支持的日期類型格式。
2.數(shù)據(jù)庫字符集是 UTF8,SELECT LENGTH('南大通用數(shù)據(jù)') 執(zhí)行結(jié)果是( )
A 12
B 6
C 18
D 10
正確答案: C
解析: LENGTH() 函數(shù)返回值是字節(jié)個數(shù),UTF8 字符集,一個漢字為 3 個字節(jié)存儲,則結(jié)果為 18。
3.以下條件分支語句正確的是( )
A CASE Ssex WHEN '男' THEN '帥哥' WHEN '女' THEN '美女' ELSE '不明'
B CASE Ssex WHEN '男' THEN '帥哥' WHEN '女' THEN '美女' ELSE '不明' END
C CASE Ssex WHEN '男' THEN '帥哥' WHEN '女' THEN '美女' END
D CASE WHEN Ssex='男' THEN '帥哥' WHEN Ssex='女' THEN '美女' ELSE '不明' END
正確答案: BCD
解析: 語句末尾要有 END
4.select round(123.456, -2) 的執(zhí)行結(jié)果:
A 123.46
B 123.45
C 100
D 123.00
正確答案: C
解析: round 函數(shù)支持四舍五入,-2 參數(shù)表示小數(shù)點前 2 位,為百位,查看十位數(shù)字為 2,則直接舍去,結(jié)果為 100。
5.獲取當前日期時間,可以使用( )函數(shù)。
A SYSDATE
B NOW
C CURDATETIME
D CURRENT_TIMESTAMP
E CURRENT_DATETIME
正確答案: ABCDE
解析: 全部都正確,均能獲取當前日期時間。
6.統(tǒng)計 2012(含)年后出生的學生,以下( )語句正確且執(zhí)行效率最高。
A select SId, SName, SAge from student where to_char(SAge, 'YYYY') >= 2012;
B select SId, SName, SAge from student where SAge >= to_date('2012-1-1');
C select SId, SName, SAge from student where SAge >= to_date('2012-1-1', 'YYYY-MM-DD');
D select SId, SName, SAge from student where to_char(SAge, 'YYYY') > 2012;
正確答案: C
解析: where 條件中使用函數(shù)盡量在值上,不要在字段上使用函數(shù),這樣少執(zhí)行函數(shù)次數(shù),提高性能。to_date 函數(shù)有兩個參數(shù),只寫一個參數(shù)是錯誤的。
7.NOW和SYSDATE函數(shù)的區(qū)別是()
A NOW 有同義詞,SYSDATE 沒有同義詞。
B NOW 取的是語句開始執(zhí)行的時間,SYSDATE 取的是該函數(shù)執(zhí)行的實時時間。
C NOW 得到當前日期和時間,SYSDATE 得到當前日期。
D NOW 得到當前時間,SYSDATE 得到當前日期。
正確答案: B
解析: NOW 和 SYSDATE 函數(shù)都能得到當前日期和時間,區(qū)別為 NOW 取的是語句開始執(zhí)行的時間,SYSDATE 取的是該函數(shù)執(zhí)行的實時時間。
8.SELECT add_months('2020-12-30', 1); 的執(zhí)行結(jié)果()
A 2020-01-30 00:00:00
B 2020-11-30 00:00:00
C 2021-01-30
D 2021-01-30 00:00:00
正確答案: D
解析: add_months() 函數(shù)返回值是日期時間類型。
9.SELECT IFNULL(country, '未知') RESULT FROM worldcup 語句中控制流函數(shù) IFNULL 可以替換為()。
A CASE WHEN THEN ELSE END
B IF
C NVL
D NULLIF
正確答案: ABC
解析: NULLIF 函數(shù)是判斷表達式是真還是假,與 IFNULL 返回值不同,所以不能替換。
10.系統(tǒng)函數(shù)在 SQL 語句中,經(jīng)常出現(xiàn)的位置在 SELECT 投影列中,或者 WHERE 子句中的查詢條件中。
正確
錯誤
正確答案: 正確
11.SELECT LAST_DAY('0000-12-1') 運行的結(jié)果是( )
A 0-12-31
B 0000-12-31
C 0000-12-30
D NULL
正確答案: D
解析: '0000-12-1' 不是一個正確的日期,返回值為 NULL。
12.SELECT CHAR_LENGTH('南大通用數(shù)據(jù)') 執(zhí)行結(jié)果是()
A 12
B 6
C 18
D 10
正確答案: B
解析: CHAR_LENGTH() 函數(shù)返回值是字符個數(shù),結(jié)果為 6。
13.SELECT TRUNCATE(127.456, -1) 執(zhí)行結(jié)果為( )
A 100
B 120
C 123.5
D 123.4
正確答案: B
解析: TRUNCATE 函數(shù)為截取指定位數(shù),-1 參數(shù)表示小數(shù)點前 1 位,為十位,則直接舍去十位后面的數(shù)字,結(jié)果為 120。
14.顯示 “2021年03月16日” 這樣的日期格式,正確的 SQL 語句是()
A SELECT DATE_FORMAT(sysdate(), '%y年%m月%d日')
B SELECT DATE_FORMAT(sysdate(), '%Y年%m月%d日')
C SELECT DATE_FORMAT(sysdate(), '%Y年%0m月%d日')
D SELECT DATE_FORMAT(sysdate(), '%Y年%mm月%dd日')
正確答案: B
解析: 根據(jù)日期格式規(guī)則,正確答案為 SELECT DATE_FORMAT(sysdate(), '%Y年%m月%d日'),%Y 代表 4 位的年,%m 代表 2 位的數(shù)字月,%d 代表 2 位的天。
15.關于 NULL 的敘述,()是錯誤的
A NULL 值表示“沒有數(shù)據(jù)”,值未知,值不確定,不占空間。
B NULL 的拼寫,大小寫無關。
C SELECT count(SAge) FROM Student 統(tǒng)計表包括 NULL 值的總條數(shù)。
D NULL 和 UNKNOWN 是等價的。
正確答案: C
解析: count(SAge) 不統(tǒng)計表中該字段為 NULL 值的條數(shù)。
16.字符串連接語句正確的是()
A select '我已使用' || 20 || '天GBase 8a'
B select '我已使用' + '20' + '天GBase 8a'
C select concat('我已使用', 20, '天GBase 8a')
D select concat('我已使用', '20', '天GBase 8a')
正確答案: ACD
解析: + 為數(shù)值相加運算符,沒有字符串拼接的功能。
17.求距離月底還有多少天,正確的語句是( )
A SELECT DATEADD(LAST_DAY(NOW()), NOW());
B SELECT DATEDIFF(LAST_DAY(NOW()), NOW());
C SELECT DATESUB(LAST_DAY(NOW()), NOW());
D SELECT DATEDIFF(NOW(), LAST_DAY(NOW()));
正確答案: B
解析: DATEDIFF(LAST_DAY(NOW()), NOW()) 得到的天數(shù)為正數(shù),DATEDIFF(NOW(), LAST_DAY(NOW())) 得到的天數(shù)為負數(shù)。
12.DCL語句
1.以下授予表插入數(shù)據(jù)權(quán)限的語句正確的是( )
A grant insert("ID") on courseware.test01 from bizMan@localhost;
B grant insert(ID) on courseware.test01 to bizMan@localhost;
C grant insert("ID") on *.test01 to bizMan@localhost;
D grant insert("ID") on courseware.test01 to bizMan@localhost;
正確答案: BD
解析:
“grant insert("ID") on courseware.test01 from bizMan@localhost;” 錯誤在于 grant 后面的關鍵詞應該是 to;
“grant insert("ID") on *.test01 to bizMan@localhost;” 的錯誤在于表級權(quán)限在數(shù)據(jù)庫級權(quán)限下,需寫明具體的數(shù)據(jù)庫。
2.ALL 是一個特殊權(quán)限,不包含( )
A PROCESS
B GRANT OPTION
C EXECUTE
D SHUTDOWN
正確答案: B
解析:
ALL 權(quán)限不包含 GRANT OPTION 給其他用戶授權(quán)權(quán)限。
3.收回表插入數(shù)據(jù)權(quán)限語句以下正確的是( )
A revoke insert("ID") on courseware.test01 to bizMan@localhost;
B revoke insert(ID) on *.test01 from bizMan@localhost;
C revoke insert(ID) on courseware.test01 from bizMan@localhost;
D revoke insert(ID) on courseware.test01 to bizMan@localhost;
正確答案: C
解析:
revoke 后面用 from 關鍵詞,表級權(quán)限需寫明具體的數(shù)據(jù)庫名稱。
4.create user bizMan identified by 'x' 創(chuàng)建的bizMan用戶可訪問的客戶端( )
A 任意主機
B 只能是數(shù)據(jù)庫服務器本機,即 localhost
C 只能是 127.0.0.1
D 該用戶在任何主機上都不能訪問數(shù)據(jù)庫
正確答案: A
解析: 新建用戶 bizMan 等同于 bizMan@%,任意主機均可登錄。
5.授予用戶權(quán)限組權(quán)限,正確的語句是( )
A grant "role1" to bizMan@localhost;
B grant role1 to bizMan@localhost;
C grant "role1" from bizMan@localhost;
D grant role1 from bizMan@localhost;
正確答案: AB
解析:
grant 后面用 to 關鍵詞,用戶組加雙引號,認為是數(shù)據(jù)庫對象;若是單引號,則會認為是字符串。
6.回收用戶的 Role 權(quán)限,正確的語句是( )
A revoke role1 to bizMan@localhost;
B revoke *.role1 from bizMan@localhost;
C revoke role1 from bizMan@localhost;
D revoke "role1" from bizMan@localhost;
正確答案: CD
解析: revoke 后面用 from 關鍵詞,用戶組加雙引號,認為是數(shù)據(jù)庫對象;若是單引號,則會認為是字符串。
7.以下授權(quán)語句( )是正確的
A grant select on * to bizMan@localhost
B grant select courseware.* to bizMan@localhost
C grant select on courseware.* to bizMan@localhost
D grant select on courseware.* to user bizMan
正確答案: C
解析:
“grant select on * to bizMan@localhost” 錯誤在于只有一個 ;
“grant select courseware. to bizMan@localhost” 錯誤在于缺少 on 關鍵詞;
“grant select on courseware.* to user bizMan” 錯誤在于多了 user。
8.GBase 8a 數(shù)據(jù)庫用戶名大小寫不敏感( )
正確
錯誤
正確答案: 錯誤
解析: GBase 8a 數(shù)據(jù)庫用戶名大小寫是敏感的。
9.GBase 8a 的權(quán)限級別包括( )
A 全局級
B 數(shù)據(jù)庫級
C 表級
D 列級
E 過程級
正確答案: ABCDE
13.系統(tǒng)表
1.顯示當前數(shù)據(jù)庫版本,正確的語句是( )
A select version;
B select versions();
C select version();
D show version;
正確答案: C
解析:
version() 函數(shù)返回數(shù)據(jù)庫版本信息。
2.查看正在運行的線程,與 SHOW PROCESSLIST 等價的語句是( )
A select * from gbase.processlist;
B select id, user, host, db, command, time, state, info from information_schema.processlist;
C select id, user, host, db, command, time, state, info from performance_schema.processlist;
D select * from processlist;
正確答案: B
解析: SHOW PROCESSLIST 與 information_schema.processlist 表查詢的內(nèi)容一致。
3.和 SHOW VARIABLES LIKE 'gbase_sql%' 等價的語句是( )
A SELECT variable_name, variable_value from information_schema.global_variables where variable_name like 'gbase_sql%';
B SELECT * from information_schema.global_variables where variable_name like 'gbase_sql%';
C SELECT variable_name, variable_value from global_variables where variable_name like 'gbase_sql%';
D SELECT name, value from global_variables where variable_name like 'gbase_sql%';
正確答案: A
解析: 選項 A 正確地從 information_schema.global_variables 表中查詢 variable_name 和 variable_value,與 SHOW VARIABLES LIKE 'gbase_sql%' 等價。
4.( )表存儲哈希鍵值與 nodeid 的對應關系。GBase 8a 數(shù)據(jù)庫引擎根據(jù)計算出的 hash 值確定數(shù)據(jù)存儲在哪個節(jié)點上。
A gbase.audit_log
B gbase.nodedatamap
C gbase.proc
D gbase.time_zone
正確答案: B
解析: gbase.nodedatamap 表存儲哈希鍵值與 nodeid 的對應關系。
5.獲取用戶組 Role 和用戶 User 關系信息需要查詢( )系統(tǒng)表
A gbase.user
B gbase.user_check
C gbase.role_edges
D gbase.roleanduser
正確答案: C
解析: gbase.role_edges 表記錄用戶組 Role 和用戶 User 關系信息。
6.中止連接當前執(zhí)行的語句,但是不中止該連接本身,正確的語句是( )
A kill query 3789
B kill 3789
C pause 3789
D CONTINUE 3789
正確答案: A
解析: 需要加 QUERY 參數(shù),以中止連接當前執(zhí)行的語句,但是不中止該連接本身。
7.STUDENT 表分片有一個副本,以下( )語句等價于 SELECT COUNT() FROM STUDENT
A SELECT COUNT(1) FROM STUDENT;
B select TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS from performance_schema.tables where TABLE_SCHEMA='courseware' and TABLE_NAME='student';
C select TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS/2 from performance_schema.tables where TABLE_SCHEMA='courseware' and TABLE_NAME='student';
D select TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS/3 from performance_schema.tables where TABLE_SCHEMA='courseware' and TABLE_NAME='student';
正確答案: AC
解析: COUNT() 與 COUNT(1) 都表示總條數(shù);performance_schema.tables 保存的是所有分片的表條數(shù),由于有一個副本,2倍數(shù)據(jù),需要將 TABLE_ROWS 除以 2。