一、GaussDB數據庫語法入門
之前我們講了如何連接數據庫實例,那連接數據庫后如何使用數據庫呢?那么我們今天就帶大家了解一下GaussDB,以下簡稱GaussDB的基本語法。
關于如何連接數據庫,請戳這里。
學習本節課程之后,您將可以完成創建數據庫、創建表及向表中插入數據和查詢表中數據等操作。
1、前提條件
?? ?GaussDB實例正常運行。
?? ?已通過DAS或gsql連接數據庫實例。
2、操作步驟
- 通過DAS或gsql連接數據庫實例。
- 創建數據庫用戶。
? ? ? 默認只有創建實例時的管理員用戶可以訪問初始數據庫,您還可以手動創建其他數據庫用戶帳號。
postgres=# CREATE USER joe WITH PASSWORD "xxxxxxxx";
? ? ? xxxxxxxx需要替換為指定的密碼,當結果顯示為如下信息,則表示創建成功。
CREATE ROLE
? ? ? 如上創建了一個用戶名為joe,密碼為xxxxxxxxx的用戶。
? ? ? 如下命令為設置joe用戶為系統管理員。
postgres=# GRANT ALL PRIVILEGES TO joe;
? ? ? 使用GRANT命令進行相關權限設置,具體操作請參考GRANT。
? ? ? 引申信息:GaussDB對于用戶可以進行靈活的權限控制,想要了解請戳管理用戶及權限。
- 創建數據庫。
postgres=# CREATE DATABASE db_tpcds;
? ? ? 當結果顯示為如下信息,則表示創建成功。
CREATE DATABASE
? ? ??創建完db_tpcds數據庫后,就可以按如下方法退出postgres數據庫,使用新用戶連接到此數據庫執行接下來的創建表等操作。當然,也可以選擇繼續在默認的postgres數據庫下做后續的體驗。
postgres=# \q
gsql -d db_tpcds -p 8000 -U joe
Password for user joe:
gsql compiled at 2020-05-08 02:59:43 commit 2143 last mr 131)
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help. db_tpcds=>
- 創建表。
? ??創建一個名稱為mytable,只有一列的表。字段名為firstcol,字段類型為integer。
db_tpcds=> CREATE TABLE mytable (firstcol int);
? ? ? ?未使用“DISTRIBUTE BY”指定分布列時,系統默認會指定第一列為哈希分布列,且給出提示。系統返回信息以“CREATE TABLE”結束,表示創建表成功。
NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'firstcol' as the distribution column by default.
HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE
? ?向表中插入數據:
db_tpcds=> INSERT INTO mytable values (100);
? ? ? ?當結果顯示為如下信息,則表示插入數據成功。
INSERT 0 1
? ?查看表中數據:
db_tpcds=> SELECT * from mytable; firstcol
---------- 100
(1 row)
? ? ??引申信息:
- 默認情況下,新的數據庫對象是創建在“$user”模式下的,例如剛剛新建的表。關于模式的更多信息請參考創建和管理schema。
- 關于創建表的更多信息請參見創建和管理表。
- 除了創建的表以外,數據庫還包含很多系統表。這些系統表包含集群安裝信息以及GaussDB上運行的各種查詢和進程的信息。可以通過查詢系統表來收集有關數據庫的信息。請參見查看系統表。
二、GaussDB數據庫gsql入門
gsql是GaussDB提供在命令行下運行的數據庫連接工具,可以通過此工具連接服務器并對其進行操作和維護,除了具備操作數據庫的基本功能,gsql還提供了若干高級特性,便于用戶使用。
1、基本功能
- 連接數據庫:可以通過gsql遠程連接數據庫實例。如何使用gsql連接數據庫請參考連接實例。
- 執行SQL語句:支持交互式地鍵入并執行SQL語句,也可以執行一個文件中指定的SQL語句。
- 執行元命令:元命令可以幫助管理員查看數據庫對象的信息、查詢緩存區信息、格式化SQL輸出結果,以及連接到新的數據庫等。
2、使用指導
步驟 1 使用gsql連接到GaussDB實例。
gsql工具使用-d參數指定目標數據庫名、-U參數指定數據庫用戶名、-h參數指定主機名、-p參數指定端口號信息。
若未指定數據庫名稱,則使用初始化時默認生成的數據庫名稱;若未指定數據庫用戶名,則默認使用當前操作系統用戶作為數據庫用戶名;當某個值沒有前面的參數(-d、-U等)時,若連接的命令中沒有指定數據庫名(-d)則該參數會被解釋成數據庫名;如果已經指定數據庫名(-d)而沒有指定數據庫用戶名(-U)時,該參數則會被解釋成數據庫用戶名。
示例,使用jack用戶連接到遠程主機postgres數據庫的8000端口。
gsql -h 10.180.123.163 -d postgres -U jack -p 8000
詳細的gsql參數請參見命令參考。
步驟 2 執行SQL語句。
以創建數據庫human_staff為例。
CREATE DATABASE human_staff;
CREATE DATABASE
通常,輸入的命令行在遇到分號的時候結束。如果輸入的命令行沒有錯誤,結果就會輸出到屏幕上。
步驟 3 執行gsql元命令。
以列出GaussDB中所有的數據庫和描述信息為例。
postgres=# \lList of databasesName | Owner | Encoding | Collate | Ctype | Access privileges
----------------+----------+-----------+---------+-------+-----------------------human_resource | root | SQL_ASCII | C | C | postgres | root | SQL_ASCII | C | C | template0 | root | SQL_ASCII | C | C | =c/root +| | | | | root=CTc/roottemplate1 | root | SQL_ASCII | C | C | =c/root +| | | | | root=CTc/roothuman_staff | root | SQL_ASCII | C | C |
(5 rows)
更多gsql元命令請參見元命令參考。
3、示例
以把一個查詢分成多行輸入為例。注意提示符的變化:
postgres=# CREATE TABLE HR.areaS(
postgres(# area_ID NUMBER,
postgres(# area_NAME VARCHAR2(25)
postgres-# )tablespace EXAMPLE;
CREATE TABLE
查看表的定義:
postgres=# \d HR.areaSTable "hr.areas"Column | Type | Modifiers
-----------+-----------------------+-----------area_id | numeric | not nullarea_name | character varying(25) |
向HR.areaS表插入四行數據:
postgres=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (1, 'Europe');
INSERT 0 1
postgres=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (2, 'Americas');
INSERT 0 1
postgres=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (3, 'Asia');
INSERT 0 1
postgres=# INSERT INTO HR.areaS (area_ID, area_NAME) VALUES (4, 'Middle East and Africa');
INSERT 0 1
切換提示符:
postgres=# \set PROMPT1 '%n@%m %~%R%#'
root@[local] postgres=#
查看表:
root@[local] postgres=#SELECT * FROM HR.areaS;area_id | area_name
---------+------------------------1 | Europe4 | Middle East and Africa2 | Americas3 | Asia
(4 rows)
可以用\pset命令以不同的方法顯示表:
root@[local] postgres=#\pset border 2
Border style is 2.
root@[local] postgres=#SELECT * FROM HR.areaS;
+---------+------------------------+
| area_id | area_name |
+---------+------------------------+
| 1 | Europe |
| 2 | Americas |
| 3 | Asia |
| 4 | Middle East and Africa |
+---------+------------------------+
(4 rows)root@[local] postgres=#\pset border 0
Border style is 0.
root@[local] postgres=#SELECT * FROM HR.areaS;
area_id area_name
------- ----------------------1 Europe2 Americas3 Asia4 Middle East and Africa
(4 rows)
使用元命令:
root@[local] postgres=#\a \t \x
Output format is unaligned.
Showing only tuples.
Expanded display is on.root@[local] postgres=#SELECT * FROM HR.areaS;
area_id|2
area_name|Americasarea_id|1
area_name|Europearea_id|4
area_name|Middle East and Africaarea_id|3
area_name|Asia
?三、總結
云數據庫 GaussDB各特性版本的功能發布和對應的文檔動態,歡迎體驗。
GaussDB是華為公司傾力打造的自研企業級分布式關系型數據庫,該產品支持優異的分布式事務,同城跨AZ部署,數據0丟失,支持1000+擴展能力,PB級海量存儲等企業級數據庫特性。擁有云上高可用,高可靠,高安全,彈性伸縮,一鍵部署,快速備份恢復,監控告警等關鍵能力,能為企業提供功能全面,穩定可靠,擴展性強,性能優越的企業級數據庫服務。
今天就為大家介紹到這里啦,歡迎交流~