海量数据库-vastbase G100使用操纵
使用vsql当地连接数据库
步骤1 以操纵体系用户vastbase登录数据库实例地点主机。
步骤2 使用vsql连接当地数据库。
- vastbase:必要连接的数据库名称,安装完成后,默认天生名称为vastbase的数据库,实际登录时请根据详细环境替换。
- 5432:数据库的端口号,实际登录时请根据详细环境替换。
步骤3 首次登陆时修改密码。
- (管理员首次登录时)如果用户的数据库版本是2.2(Build 5.75)及以上且角色是体系管理员(vbadmin)、安全管理员(vbsso)或者审计管理员(vbaudit),首次登录时体系会强制要求修改口令,修改语法如下:
- ALTER ROLE 用户名 IDENTIFIED BY '新口令' REPLACE '原随机口令';
复制代码 其中原随机口令表现:
- 实例化数据库安装:安装过程中会天生随机口令作为管理员初始口令,表现信息如下:
- 数据库三个默认管理员vbaudit、vbsso、vbadmin的默认口令为:
- 系统管理员[vbadmin] 初始密码: A4b&b858
- 安全管理员[vbsso] 初始密码: U6/f305f
- 审计管理员[vbaudit] 初始密码: E5b44f8-
复制代码 首次登录数据库,必要自行修改口令后才可以正常操纵数据库,修改实例:
- ALTER ROLE vbadmin IDENTIFIED BY 'Huayu123' REPLACE 'A4b&b858';
复制代码 步骤4 退出数据库。
创建数据库
功能描述
数据库安装完成后,默认天生名称为vastbase的数据库。用户必要本身创建一个新的数据库。默认环境下新数据库将通过复制标准体系数据库template0来创建,且仅支持使用template0来创建。
- 创建角色(用户)
在 VastBase 中,你必要先创建名为 dbuser 的角色(如果还未创建的话)。可以使用以下命令来创建角色:
- CREATE ROLE dbuser WITH LOGIN PASSWORD 'Huayu123';
复制代码- # 注释
- CREATE ROLE 语句用于创建一个新的角色。
- WITH LOGIN 表示这个角色可以用于登录数据库,也就是相当于创建了一个具有登录权限的用户。
- PASSWORD 'your_password' 用于设置该角色(用户)的登录密码
复制代码
- 用模板template0创建数据库testdb2,并指定全部者为dbuser。
- CREATE DATABASE testdb2 OWNER dbuser TEMPLATE template0;
复制代码
- vastbase=# \l
- 数据库库列表 名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存权限 -----------+----------+----------+------------+------------+----------------------- postgres | vastbase | UTF8 | en_US.utf8 | en_US.utf8 | template0 | vastbase | UTF8 | en_US.utf8 | en_US.utf8 | =c/vastbase + | | | | | vastbase=CTc/vastbase template1 | vastbase | UTF8 | en_US.utf8 | en_US.utf8 | =c/vastbase + | | | | | 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数据库名称修改为testdb3。
- ALTER DATABASE testdb1 RENAME TO testdb3;
复制代码
创建表
表是创建在数据库中的,在差别的数据库中可以存放相同的表。甚至可以通过 使用模式在同一个数据库中创建相同名称的表。
- 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)
- );
复制代码
- 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)
- );
复制代码
- CREATE TABLE public.warehouse_t3
- (
- W_WAREHOUSE_SK INTEGER NOT NULL,
- W_COUNTRY VARCHAR(20) ,
- W_GMT_OFFSET DECIMAL(5,2)
- ) WITH(fillfactor=70);
复制代码
- CREATE UNLOGGED TABLE public.warehouse_t4
- (
- W_WAREHOUSE_SK INTEGER NOT NULL,
- W_COUNTRY VARCHAR(20) ,
- W_GMT_OFFSET DECIMAL(5,2)
- );
复制代码
- CREATE TEMPORARY TABLE warehouse_t5
- (
- W_WAREHOUSE_SK INTEGER NOT NULL,
- W_COUNTRY VARCHAR(20) ,
- W_GMT_OFFSET DECIMAL(5,2)
- );
复制代码
- CREATE TABLE public.warehouse_t6
- (
- W_ID INTEGER NOT NULL,
- W_NAME VARCHAR(20) ,
- W_MAIL VARCHAR(40)
- ) TABLESPACE PG_DEFAULT;
复制代码
- 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)
- );
复制代码
- 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)
- );
复制代码
- 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;
复制代码 管理表
向表中插入数据
在创建一个表后,表中并没有数据,在使用这个表之前,必要向表中插入数据。本小节介绍怎样使用INSERT命令插入一行或多行数据,及从指定表插入数据。
示例
执行如下命令创建示例中必要使用的表customer_t1。
- CREATE TABLE customer_t1
- (
- c_customer_sk integer,
- c_customer_id char(5),
- c_first_name char(6));
复制代码 向表中插入数据前,意味着表已创建成功。创建表的步骤请参见创建表。
- 向表customer_t1中插入一行数据:
数据值是按照这些字段在表中出现的次序列出的,而且用逗号分隔。通常数据值是文本(常量),但也答应使用标量表达式。
- INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name)
- VALUES (3769, 'hello', 'Grace');
复制代码 如果用户已经知道表中字段的次序,也可无需列出表中的字段。例如以下命令与上面的命令结果相同。
- INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');
复制代码 如果用户不知道全部字段的数值,可以忽略其中的一些。没有数值的字段将被填充为字段的缺省值。例如:
- 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');
复制代码 如果必要向表中插入多条数据,除此命令外,也可以多次执行插入一行数据命令实现。但是发起使用此命令可以提拔服从。
- 如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1的备份表customer_t2,现在必要将表customer_t1中的数据插入到表customer_t2中,则可以执行如下命令。
- 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;
复制代码 更新表中数据
修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,全部行或者指定的部门行。还可以独立更新每个字段,而其他字段则不受影响。
使用UPDATE命令更新现有行,必要提供以下三种信息:
- 表的名称和要更新的字段名。
- 字段的新值。
- 要更新哪些行。
SQL通常不会为数据行提供唯一标识,因此无法直接声明必要更新哪一行。但是可以通过声明一个被更新的行必须满足的条件。只有在表里存在主键的时候,才可以通过主键指定一个独立的行。
创建表和插入数据的步骤请参考创建表与管理表。
示例
- 必要将表customer_t1中c_customer_sk为9527的地区重新界说为9876:
- UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527;
复制代码 这里的表名称也可以使用模式名修饰,否则会从默认的模式路径找到这个表。SET背面紧跟字段和新的字段值。新的字段值不但可以是常量,也可以是变量表达式。
- 把全部c_customer_sk的值增加100:
- UPDATE customer_t1 SET c_customer_sk = c_customer_sk + 100;
复制代码 在这里省略了WHERE子句,表现表中的全部行都要被更新。如果出现了WHERE子句,那么只有匹配其条件的行才会被更新。在SET子句中的等号是一个赋值,而在WHERE子句中的等号是比力。WHERE条件不一定是相称测试,许多其他的操纵符也可以使用。
- 用户可以在一个UPDATE命令中更新更多的字段,方法是在SET子句中列出更多赋值,好比:
- UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;
复制代码 检察数据
在以下示例执行前,需按照管理表将示例对应数据表与数据举行创建与插入。
- 执行如下命令查询表customer_t1的数据行数。
- SELECT count(*) FROM customer_t1;
复制代码 返回结果为:
- 执行如下命令查询表customer_t1的全部数据。
- SELECT * FROM customer_t1;
复制代码 返回结果为:
- 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)
复制代码 - 执行如下命令只查询字段c_customer_sk的数据。
- SELECT c_customer_sk FROM customer_t1;
复制代码 返回结果为:
- c_customer_sk
- ---------------
- 3869
- 3869
- 3869
- 3869
- 6985
- 9976
- 4421
- (7 rows)
复制代码 - 执行如下命令过滤字段c_customer_sk的重复数据。
- SELECT DISTINCT( c_customer_sk ) FROM customer_t1;
复制代码 返回结果为:
- c_customer_sk
- ---------------
- 9976
- 6985
- 3869
- 4421
- (4 rows)
复制代码 - 执行如下命令查询字段c_customer_sk为3869的全部数据。
- SELECT * FROM customer_t1 WHERE c_customer_sk = 3869;
复制代码 返回结果为:
- c_customer_sk | c_customer_id | c_first_name
- ---------------+---------------+--------------
- 3869 | hello | Grace
- 3869 | hello | Grace
- 3869 | | Grace
- 3869 | hello |
- (4 rows)
复制代码 - 执行如下命令按照字段c_customer_sk举行排序。
- SELECT * FROM customer_t1 ORDER BY c_customer_sk;
复制代码 返回结果为:
- 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)
复制代码 删除表中数据
在使用表的过程中,可能会必要删除已过期的数据,删除数据必须从表中整行的删除。
SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件举行。如果表中有一个主键,用户可以指定精确的行。用户可以删除匹配条件的一组行或者一次删除表中的全部行。
示例
在以下示例执行前,需按照本文开头管理表中的步骤对应数据表与数据举行创建与插入。
- 使用DELETE命令删除行,如果删除表customer_t1中全部c_customer_sk为3869的记载:
- DELETE FROM customer_t1 WHERE c_customer_sk = 3869;
复制代码 - 如果执行如下命令之一,会删除表中全部的行。
或者
- TRUNCATE TABLE customer_t2;
复制代码 全表删除的场景下,发起使用truncate,不发起使用delete。
- 删除创建的表:
检察资助信息
使用\?检察全部可执行的命令,使用此命令输出结果较多,会分屏表现,可以按空格键分页,按q退出当前内容检察。
检察数据库
枚举表
检察表结构
枚举schema
检察索引
切换数据库
总结
vsql连接
- vsql -h <IP地址> -p <端口号> -d <数据库名> -U <用户名>
复制代码 创建数据库
创建角色
- CREATE ROLE 角色名 WITH LOGIN PASSWORD '密码';
复制代码 修改权限
- ALTER USER 角色名 CREATEROLE;
复制代码 管理员权限
- grant all privileges TO lfx;
复制代码 创建表
- CREATE TABLE 表名(字段 数据类型);
复制代码 插入数据
- INSERT INTO 表名(字段) VALUES (数据);
复制代码 更新数据
- UPDATE 表名 SET 字段 = 字段 + 100
复制代码 检察表数据
删除表字段数据
删除表
创建索引
- CREATE INDEX 索引名 ON 表(字段)
复制代码 检察索引
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |