柚子快報邀請碼778899分享:海量數(shù)據(jù)庫使用操作
海量數(shù)據(jù)庫-vastbase G100使用操作
文章目錄
海量數(shù)據(jù)庫-vastbase G100使用操作使用vsql本地連接數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫功能描述
創(chuàng)建表管理表向表中插入數(shù)據(jù)更新表中數(shù)據(jù)
查看數(shù)據(jù)刪除表中數(shù)據(jù)示例查看幫助信息查看數(shù)據(jù)庫列舉表查看表結(jié)構(gòu)列舉schema查看索引切換數(shù)據(jù)庫
總結(jié)
使用vsql本地連接數(shù)據(jù)庫
步驟1 以操作系統(tǒng)用戶vastbase登錄數(shù)據(jù)庫實例所在主機。
步驟2 使用vsql連接本地數(shù)據(jù)庫。
vsql -d vastbase -p 5432
vastbase:需要連接的數(shù)據(jù)庫名稱,安裝完成后,默認(rèn)生成名稱為vastbase的數(shù)據(jù)庫,實際登錄時請根據(jù)具體情況替換。5432:數(shù)據(jù)庫的端口號,實際登錄時請根據(jù)具體情況替換。
步驟3 首次登陸時修改密碼。
(管理員首次登錄時)如果用戶的數(shù)據(jù)庫版本是2.2(Build 5.75)及以上且角色是系統(tǒng)管理員(vbadmin)、安全管理員(vbsso)或者審計管理員(vbaudit),首次登錄時系統(tǒng)會強制要求修改口令,修改語法如下: ALTER ROLE 用戶名 IDENTIFIED BY '新口令' REPLACE '原隨機口令';
其中原隨機口令表示:
實例化數(shù)據(jù)庫安裝:安裝過程中會生成隨機口令作為管理員初始口令,顯示信息如下:
數(shù)據(jù)庫三個默認(rèn)管理員vbaudit、vbsso、vbadmin的默認(rèn)口令為:
系統(tǒng)管理員[vbadmin] 初始密碼: A4b&b858
安全管理員[vbsso] 初始密碼: U6/f305f
審計管理員[vbaudit] 初始密碼: E5b44f8-
? 首次登錄數(shù)據(jù)庫,需要自行修改口令后才可以正常操作數(shù)據(jù)庫,修改實例:
ALTER ROLE vbadmin IDENTIFIED BY 'Huayu123' REPLACE 'A4b&b858';
步驟4 退出數(shù)據(jù)庫。
\q
創(chuàng)建數(shù)據(jù)庫
功能描述
數(shù)據(jù)庫安裝完成后,默認(rèn)生成名稱為vastbase的數(shù)據(jù)庫。用戶需要自己創(chuàng)建一個新的數(shù)據(jù)庫。默認(rèn)情況下新數(shù)據(jù)庫將通過復(fù)制標(biāo)準(zhǔn)系統(tǒng)數(shù)據(jù)庫template0來創(chuàng)建,且僅支持使用template0來創(chuàng)建。
創(chuàng)建一個新的數(shù)據(jù)庫testdb1。
CREATE DATABASE testdb1;
創(chuàng)建角色(用戶) 在 VastBase 中,你需要先創(chuàng)建名為 dbuser 的角色(如果還未創(chuàng)建的話)??梢允褂靡韵旅顏韯?chuàng)建角色:
CREATE ROLE dbuser WITH LOGIN PASSWORD 'Huayu123';
# 注釋
CREATE ROLE 語句用于創(chuàng)建一個新的角色。
WITH LOGIN 表示這個角色可以用于登錄數(shù)據(jù)庫,也就是相當(dāng)于創(chuàng)建了一個具有登錄權(quán)限的用戶。
PASSWORD 'your_password' 用于設(shè)置該角色(用戶)的登錄密碼
用模板template0創(chuàng)建數(shù)據(jù)庫testdb2,并指定所有者為dbuser。
CREATE DATABASE testdb2 OWNER dbuser TEMPLATE template0;
查看數(shù)據(jù)庫(vsql客戶端可用)。
\l
vastbase=# \l
數(shù)據(jù)庫庫列表
名稱 | 擁有者 | 字元編碼 | 校對規(guī)則 | Ctype | 存
權(quán)限
-----------+----------+----------+------------+------------+----------
-------------
postgres | vastbase | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | vastbase | UTF8 | en_US.utf8 | en_US.utf8 | =c/vastba
se +
| | | | | vastbase=
CTc/vastbase
template1 | vastbase | UTF8 | en_US.utf8 | en_US.utf8 | =c/vastba
se +
| | | | | vastbase=
CTc/vastbase
testdb1 | vastbase | UTF8 | en_US.utf8 | en_US.utf8 |
testdb2 | dbuser | UTF8 | en_US.utf8 | en_US.utf8 |
vastbase | vastbase | UTF8 | en_US.utf8 | en_US.utf8 |
(6 行記錄)
修改將testdb1數(shù)據(jù)庫名稱修改為testdb3。
ALTER DATABASE testdb1 RENAME TO testdb3;
刪除數(shù)據(jù)庫testdb3。
DROP DATABASE testdb3;
創(chuàng)建表
表是建立在數(shù)據(jù)庫中的,在不同的數(shù)據(jù)庫中可以存放相同的表。甚至可以通過 使用模式在同一個數(shù)據(jù)庫中創(chuàng)建相同名稱的表。
創(chuàng)建簡單的表。
CREATE TABLE public.warehouse_t1(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) ,
W_WAREHOUSE_SQ_FT INTEGER ,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
創(chuàng)建表,并指定W_STATE字段的缺省值為GA。
CREATE TABLE public.warehouse_t2
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_COUNTY VARCHAR(30) ,
W_STATE CHAR(2) DEFAULT 'GA',
W_ZIP CHAR(10) ,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
創(chuàng)建一個帶有70%填充因子的表。
CREATE TABLE public.warehouse_t3
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
) WITH(fillfactor=70);
創(chuàng)建表,并指定該表數(shù)據(jù)不寫入預(yù)寫日志。
CREATE UNLOGGED TABLE public.warehouse_t4
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
創(chuàng)建表臨時表。
CREATE TEMPORARY TABLE warehouse_t5
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
創(chuàng)建表時,指定表空間PG_DEFAULT。
CREATE TABLE public.warehouse_t6
(
W_ID INTEGER NOT NULL,
W_NAME VARCHAR(20) ,
W_MAIL VARCHAR(40)
) TABLESPACE PG_DEFAULT;
創(chuàng)建一個有主鍵約束的表。
CREATE TABLE public.warehouse_t7
(
W_WAREHOUSE_SK INTEGER PRIMARY KEY,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
創(chuàng)建一個有復(fù)合主鍵約束的表。
CREATE TABLE public.warehouse_t8
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20),
W_COUNTRY VARCHAR(20),
W_GMT_OFFSET DECIMAL(5,2),
CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID)
);
定義一個檢查列約束。
CREATE TABLE public.warehouse_t9
(
W_WAREHOUSE_SK INTEGER CHECK (W_WAREHOUSE_SK > 0),
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL),
W_WAREHOUSE_SQ_FT INTEGER ,
W_GMT_OFFSET DECIMAL(5,2)
);
向表中增加一個varchar列。
ALTER TABLE public.warehouse_t1 ADD W_GOODS_CATEGORY varchar(30);
給表增加一個檢查約束。
ALTER TABLE public.warehouse_t2 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_WAREHOUSE_SK >10);
給一個已存在字段添加非空約束。
ALTER TABLE public.warehouse_t3 ALTER COLUMN W_COUNTRY SET NOT NULL;
重命名已存在的表。
ALTER TABLE public.warehouse_t4 RENAME TO newtab;
刪除表。
DROP TABLE public.warehouse_t1;
DROP TABLE public.warehouse_t2;
DROP TABLE public.warehouse_t3;
管理表
向表中插入數(shù)據(jù)
在創(chuàng)建一個表后,表中并沒有數(shù)據(jù),在使用這個表之前,需要向表中插入數(shù)據(jù)。本小節(jié)介紹如何使用INSERT命令插入一行或多行數(shù)據(jù),及從指定表插入數(shù)據(jù)。
示例
執(zhí)行如下命令建立示例中需要使用的表customer_t1。
CREATE TABLE customer_t1
(
c_customer_sk integer,
c_customer_id char(5),
c_first_name char(6));
向表中插入數(shù)據(jù)前,意味著表已創(chuàng)建成功。創(chuàng)建表的步驟請參見創(chuàng)建表。
向表customer_t1中插入一行數(shù)據(jù): 數(shù)據(jù)值是按照這些字段在表中出現(xiàn)的順序列出的,并且用逗號分隔。通常數(shù)據(jù)值是文本(常量),但也允許使用標(biāo)量表達式。 INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name)
VALUES (3769, 'hello', 'Grace');
如果用戶已經(jīng)知道表中字段的順序,也可無需列出表中的字段。例如以下命令與上面的命令效果相同。 INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');
如果用戶不知道所有字段的數(shù)值,可以忽略其中的一些。沒有數(shù)值的字段將被填充為字段的缺省值。例如: INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace');
INSERT INTO customer_t1 VALUES (3769, 'hello');
如果需要在表中插入多行,請使用以下命令: INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES(6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James');
如果需要向表中插入多條數(shù)據(jù),除此命令外,也可以多次執(zhí)行插入一行數(shù)據(jù)命令實現(xiàn)。但是建議使用此命令可以提升效率。 如果從指定表插入數(shù)據(jù)到當(dāng)前表,例如在數(shù)據(jù)庫中創(chuàng)建了一個表customer_t1的備份表customer_t2,現(xiàn)在需要將表customer_t1中的數(shù)據(jù)插入到表customer_t2中,則可以執(zhí)行如下命令。 CREATE TABLE customer_t2
(
c_customer_sk integer,
c_customer_id char(5),
c_first_name char(6),
c_last_name char(8)
);
INSERT INTO customer_t2 SELECT * FROM customer_t1;
更新表中數(shù)據(jù)
修改已經(jīng)存儲在數(shù)據(jù)庫中數(shù)據(jù)的行為叫做更新。用戶可以更新單獨一行,所有行或者指定的部分行。還可以獨立更新每個字段,而其他字段則不受影響。
使用UPDATE命令更新現(xiàn)有行,需要提供以下三種信息:
表的名稱和要更新的字段名。字段的新值。要更新哪些行。
SQL通常不會為數(shù)據(jù)行提供唯一標(biāo)識,因此無法直接聲明需要更新哪一行。但是可以通過聲明一個被更新的行必須滿足的條件。只有在表里存在主鍵的時候,才可以通過主鍵指定一個獨立的行。
建立表和插入數(shù)據(jù)的步驟請參考創(chuàng)建表與管理表。
示例
需要將表customer_t1中c_customer_sk為9527的地域重新定義為9876: UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527;
這里的表名稱也可以使用模式名修飾,否則會從默認(rèn)的模式路徑找到這個表。SET后面緊跟字段和新的字段值。新的字段值不僅可以是常量,也可以是變量表達式。 把所有c_customer_sk的值增加100: UPDATE customer_t1 SET c_customer_sk = c_customer_sk + 100;
在這里省略了WHERE子句,表示表中的所有行都要被更新。如果出現(xiàn)了WHERE子句,那么只有匹配其條件的行才會被更新。在SET子句中的等號是一個賦值,而在WHERE子句中的等號是比較。WHERE條件不一定是相等測試,許多其他的操作符也可以使用。 用戶可以在一個UPDATE命令中更新更多的字段,方法是在SET子句中列出更多賦值,比如: UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;
查看數(shù)據(jù)
在以下示例執(zhí)行前,需按照管理表將示例對應(yīng)數(shù)據(jù)表與數(shù)據(jù)進行創(chuàng)建與插入。
執(zhí)行如下命令查詢表customer_t1的數(shù)據(jù)行數(shù)。 SELECT count(*) FROM customer_t1;
返回結(jié)果為: count
-------
7
(1 row)
執(zhí)行如下命令查詢表customer_t1的所有數(shù)據(jù)。 SELECT * FROM customer_t1;
返回結(jié)果為: c_customer_sk | c_customer_id | c_first_name
---------------+---------------+--------------
3869 | hello | Grace
3869 | hello | Grace
3869 | | Grace
3869 | hello |
6985 | maps | Joes
9976 | world | James
4421 | Admin | Local
(7 rows)
執(zhí)行如下命令只查詢字段c_customer_sk的數(shù)據(jù)。 SELECT c_customer_sk FROM customer_t1;
返回結(jié)果為: c_customer_sk
---------------
3869
3869
3869
3869
6985
9976
4421
(7 rows)
執(zhí)行如下命令過濾字段c_customer_sk的重復(fù)數(shù)據(jù)。 SELECT DISTINCT( c_customer_sk ) FROM customer_t1;
返回結(jié)果為: c_customer_sk
---------------
9976
6985
3869
4421
(4 rows)
執(zhí)行如下命令查詢字段c_customer_sk為3869的所有數(shù)據(jù)。 SELECT * FROM customer_t1 WHERE c_customer_sk = 3869;
返回結(jié)果為: c_customer_sk | c_customer_id | c_first_name
---------------+---------------+--------------
3869 | hello | Grace
3869 | hello | Grace
3869 | | Grace
3869 | hello |
(4 rows)
執(zhí)行如下命令按照字段c_customer_sk進行排序。 SELECT * FROM customer_t1 ORDER BY c_customer_sk;
返回結(jié)果為: c_customer_sk | c_customer_id | c_first_name
---------------+---------------+--------------
3869 | hello |
3869 | hello | Grace
3869 | | Grace
3869 | hello | Grace
4421 | Admin | Local
6985 | maps | Joes
9976 | world | James
(7 rows)
刪除表中數(shù)據(jù)
在使用表的過程中,可能會需要刪除已過期的數(shù)據(jù),刪除數(shù)據(jù)必須從表中整行的刪除。
SQL不能直接訪問獨立的行,只能通過聲明被刪除行匹配的條件進行。如果表中有一個主鍵,用戶可以指定準(zhǔn)確的行。用戶可以刪除匹配條件的一組行或者一次刪除表中的所有行。
示例
在以下示例執(zhí)行前,需按照本文開頭管理表中的步驟對應(yīng)數(shù)據(jù)表與數(shù)據(jù)進行創(chuàng)建與插入。
使用DELETE命令刪除行,如果刪除表customer_t1中所有c_customer_sk為3869的記錄: DELETE FROM customer_t1 WHERE c_customer_sk = 3869;
如果執(zhí)行如下命令之一,會刪除表中所有的行。 DELETE FROM customer_t2;
或者 TRUNCATE TABLE customer_t2;
全表刪除的場景下,建議使用truncate,不建議使用delete。 刪除創(chuàng)建的表: DROP TABLE customer_t1;
查看幫助信息
使用\?查看所有可執(zhí)行的命令,使用此命令輸出結(jié)果較多,會分屏顯示,可以按空格鍵分頁,按q退出當(dāng)前內(nèi)容查看。
\?
查看數(shù)據(jù)庫
\l
列舉表
\dt
查看表結(jié)構(gòu)
\d tablename
列舉schema
\dn
查看索引
\di
切換數(shù)據(jù)庫
\c dbname
總結(jié)
vsql連接
vsql -h
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE 數(shù)據(jù)庫名
創(chuàng)建角色
CREATE ROLE 角色名 WITH LOGIN PASSWORD '密碼';
修改權(quán)限
ALTER USER 角色名 CREATEROLE;
管理員權(quán)限
grant all privileges TO lfx;
創(chuàng)建表
CREATE TABLE 表名(字段 數(shù)據(jù)類型);
插入數(shù)據(jù)
INSERT INTO 表名(字段) VALUES (數(shù)據(jù));
更新數(shù)據(jù)
UPDATE 表名 SET 字段 = 字段 + 100
查看表數(shù)據(jù)
SELECT * FROM 表名;
刪除表字段數(shù)據(jù)
DELETE FROM 表名 字段 = xx;
刪除表
DROP TABLE 表名;
創(chuàng)建索引
CREATE INDEX 索引名 ON 表(字段)
查看索引
\di+ 表名
柚子快報邀請碼778899分享:海量數(shù)據(jù)庫使用操作
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。