首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

海量数据库使用操作

  • 25-04-24 09:01
  • 4646
  • 5200
blog.csdn.net

海量数据库-vastbase G100使用操作

文章目录

    • 海量数据库-vastbase G100使用操作
      • 使用vsql本地连接数据库
      • 创建数据库
        • 功能描述
      • 创建表
      • 管理表
        • 向表中插入数据
        • 更新表中数据
      • 查看数据
      • 删除表中数据
      • 示例
      • 查看帮助信息
      • 查看数据库
      • 列举表
      • 查看表结构
      • 列举schema
      • 查看索引
      • 切换数据库
    • 总结

使用vsql本地连接数据库

步骤1 以操作系统用户vastbase登录数据库实例所在主机。

步骤2 使用vsql连接本地数据库。

vsql -d vastbase -p 5432
  • 1
  • vastbase:需要连接的数据库名称,安装完成后,默认生成名称为vastbase的数据库,实际登录时请根据具体情况替换。
  • 5432:数据库的端口号,实际登录时请根据具体情况替换。

步骤3 首次登陆时修改密码。

  • (管理员首次登录时)如果用户的数据库版本是2.2(Build 5.75)及以上且角色是系统管理员(vbadmin)、安全管理员(vbsso)或者审计管理员(vbaudit),首次登录时系统会强制要求修改口令,修改语法如下:

    ALTER ROLE 用户名 IDENTIFIED BY '新口令' REPLACE '原随机口令';
    
    • 1

    其中原随机口令表示:

    • 实例化数据库安装:安装过程中会生成随机口令作为管理员初始口令,显示信息如下:
数据库三个默认管理员vbaudit、vbsso、vbadmin的默认口令为:
系统管理员[vbadmin] 初始密码: A4b&b858
安全管理员[vbsso] 初始密码: U6/f305f
审计管理员[vbaudit] 初始密码: E5b44f8-
  • 1
  • 2
  • 3
  • 4

​ 首次登录数据库,需要自行修改口令后才可以正常操作数据库,修改实例:

ALTER ROLE vbadmin IDENTIFIED BY 'Huayu123' REPLACE 'A4b&b858';
  • 1

步骤4 退出数据库。

\q
  • 1

创建数据库

功能描述

数据库安装完成后,默认生成名称为vastbase的数据库。用户需要自己创建一个新的数据库。默认情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。

  • 创建一个新的数据库testdb1。
CREATE DATABASE testdb1;
  • 1
  • 创建角色(用户)
    在 VastBase 中,你需要先创建名为 dbuser 的角色(如果还未创建的话)。可以使用以下命令来创建角色:
CREATE ROLE dbuser WITH LOGIN PASSWORD 'Huayu123';
  • 1
# 注释
CREATE ROLE 语句用于创建一个新的角色。
WITH LOGIN 表示这个角色可以用于登录数据库,也就是相当于创建了一个具有登录权限的用户。
PASSWORD 'your_password' 用于设置该角色(用户)的登录密码
  • 1
  • 2
  • 3
  • 4
  • 用模板template0创建数据库testdb2,并指定所有者为dbuser。
CREATE DATABASE testdb2 OWNER dbuser TEMPLATE template0;
  • 1
  • 查看数据库(vsql客户端可用)。
\l
  • 1
vastbase=# \l
                                   数据库库列表
   名称    |  拥有者  | 字元编码 |  校对规则  |   Ctype    |       存
权限        
-----------+----------+----------+------------+------------+----------
-------------
 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 行记录)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 修改将testdb1数据库名称修改为testdb3。
ALTER DATABASE testdb1 RENAME TO testdb3;
  • 1
  • 删除数据库testdb3。
DROP DATABASE testdb3;
  • 1

创建表

表是建立在数据库中的,在不同的数据库中可以存放相同的表。甚至可以通过 使用模式在同一个数据库中创建相同名称的表。

  • 创建简单的表。
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)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 创建表,并指定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)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 创建一个带有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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 创建表,并指定该表数据不写入预写日志。
CREATE UNLOGGED TABLE public.warehouse_t4
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 创建表临时表。
CREATE TEMPORARY TABLE warehouse_t5
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_COUNTRY VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 创建表时,指定表空间PG_DEFAULT。
CREATE TABLE public.warehouse_t6
(
W_ID INTEGER NOT NULL,
W_NAME VARCHAR(20) ,
W_MAIL VARCHAR(40)
) TABLESPACE PG_DEFAULT;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 创建一个有主键约束的表。
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)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 创建一个有复合主键约束的表。
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)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 定义一个检查列约束。
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)
);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 向表中增加一个varchar列。
ALTER TABLE public.warehouse_t1 ADD W_GOODS_CATEGORY varchar(30);
  • 1
  • 给表增加一个检查约束。
ALTER TABLE public.warehouse_t2 ADD CONSTRAINT W_CONSTR_KEY4 CHECK (W_WAREHOUSE_SK >10);
  • 1
  • 给一个已存在字段添加非空约束。
ALTER TABLE public.warehouse_t3 ALTER COLUMN W_COUNTRY SET NOT NULL;
  • 1
  • 重命名已存在的表。
ALTER TABLE public.warehouse_t4 RENAME TO newtab;
  • 1
  • 删除表。
DROP TABLE public.warehouse_t1;
DROP TABLE public.warehouse_t2;
DROP TABLE public.warehouse_t3;
  • 1
  • 2
  • 3

管理表

向表中插入数据

在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本小节介绍如何使用INSERT命令插入一行或多行数据,及从指定表插入数据。

示例

执行如下命令建立示例中需要使用的表customer_t1。

CREATE TABLE customer_t1
(
c_customer_sk integer,
c_customer_id char(5),
c_first_name char(6));
  • 1
  • 2
  • 3
  • 4
  • 5

向表中插入数据前,意味着表已创建成功。创建表的步骤请参见创建表。

  • 向表customer_t1中插入一行数据:

    数据值是按照这些字段在表中出现的顺序列出的,并且用逗号分隔。通常数据值是文本(常量),但也允许使用标量表达式。

    INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name)
    VALUES (3769, 'hello', 'Grace');
    
    • 1
    • 2

    如果用户已经知道表中字段的顺序,也可无需列出表中的字段。例如以下命令与上面的命令效果相同。

    INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');
    
    • 1

    如果用户不知道所有字段的数值,可以忽略其中的一些。没有数值的字段将被填充为字段的缺省值。例如:

    INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace');
    INSERT INTO customer_t1 VALUES (3769, 'hello');
    
    • 1
    • 2
  • 如果需要在表中插入多行,请使用以下命令:

    INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES(6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James');
    
    • 1

    如果需要向表中插入多条数据,除此命令外,也可以多次执行插入一行数据命令实现。但是建议使用此命令可以提升效率。

  • 如果从指定表插入数据到当前表,例如在数据库中创建了一个表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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
更新表中数据

修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,所有行或者指定的部分行。还可以独立更新每个字段,而其他字段则不受影响。

使用UPDATE命令更新现有行,需要提供以下三种信息:

  • 表的名称和要更新的字段名。
  • 字段的新值。
  • 要更新哪些行。

SQL通常不会为数据行提供唯一标识,因此无法直接声明需要更新哪一行。但是可以通过声明一个被更新的行必须满足的条件。只有在表里存在主键的时候,才可以通过主键指定一个独立的行。

建立表和插入数据的步骤请参考创建表与管理表。

示例

  • 需要将表customer_t1中c_customer_sk为9527的地域重新定义为9876:

    UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527;
    
    • 1

    这里的表名称也可以使用模式名修饰,否则会从默认的模式路径找到这个表。SET后面紧跟字段和新的字段值。新的字段值不仅可以是常量,也可以是变量表达式。

  • 把所有c_customer_sk的值增加100:

    UPDATE customer_t1 SET c_customer_sk = c_customer_sk + 100;
    
    • 1

    在这里省略了WHERE子句,表示表中的所有行都要被更新。如果出现了WHERE子句,那么只有匹配其条件的行才会被更新。在SET子句中的等号是一个赋值,而在WHERE子句中的等号是比较。WHERE条件不一定是相等测试,许多其他的操作符也可以使用。

  • 用户可以在一个UPDATE命令中更新更多的字段,方法是在SET子句中列出更多赋值,比如:

    UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;
    
    • 1

查看数据

在以下示例执行前,需按照管理表将示例对应数据表与数据进行创建与插入。

  • 执行如下命令查询表customer_t1的数据行数。

    SELECT count(*) FROM customer_t1;
    
    • 1

    返回结果为:

    count
    -------
        7
    (1 row)
    
    • 1
    • 2
    • 3
    • 4
  • 执行如下命令查询表customer_t1的所有数据。

    SELECT * FROM customer_t1;
    
    • 1

    返回结果为:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 执行如下命令只查询字段c_customer_sk的数据。

    SELECT c_customer_sk FROM customer_t1;
    
    • 1

    返回结果为:

    c_customer_sk
    ---------------
            3869
            3869
            3869
            3869
            6985
            9976
            4421
    (7 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 执行如下命令过滤字段c_customer_sk的重复数据。

    SELECT DISTINCT( c_customer_sk ) FROM customer_t1;
    
    • 1

    返回结果为:

    c_customer_sk
    ---------------
            9976
            6985
            3869
            4421
    (4 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 执行如下命令查询字段c_customer_sk为3869的所有数据。

    SELECT * FROM customer_t1 WHERE c_customer_sk = 3869;
    
    • 1

    返回结果为:

    c_customer_sk | c_customer_id | c_first_name
    ---------------+---------------+--------------
            3869 | hello         | Grace
            3869 | hello         | Grace
            3869 |               | Grace
            3869 | hello         |
    (4 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 执行如下命令按照字段c_customer_sk进行排序。

    SELECT * FROM customer_t1 ORDER BY c_customer_sk;
    
    • 1

    返回结果为:

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

删除表中数据

在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。

SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。

示例

在以下示例执行前,需按照本文开头管理表中的步骤对应数据表与数据进行创建与插入。

  • 使用DELETE命令删除行,如果删除表customer_t1中所有c_customer_sk为3869的记录:

    DELETE FROM customer_t1 WHERE c_customer_sk = 3869;
    
    • 1
  • 如果执行如下命令之一,会删除表中所有的行。

    DELETE FROM customer_t2;
    
    • 1

    或者

    TRUNCATE TABLE customer_t2;
    
    • 1

    全表删除的场景下,建议使用truncate,不建议使用delete。

  • 删除创建的表:

    DROP TABLE customer_t1;
    
    • 1

查看帮助信息

使用\?查看所有可执行的命令,使用此命令输出结果较多,会分屏显示,可以按空格键分页,按q退出当前内容查看。

\?
  • 1

查看数据库

\l
  • 1

列举表

\dt
  • 1

查看表结构

\d tablename
  • 1

列举schema

\dn
  • 1

查看索引

\di
  • 1

切换数据库

\c dbname
  • 1

总结

vsql连接

vsql -h  -p <端口号> -d <数据库名> -U <用户名>
  • 1

创建数据库

CREATE DATABASE 数据库名
  • 1

创建角色

CREATE  ROLE 角色名 WITH LOGIN PASSWORD '密码';
  • 1

修改权限

ALTER USER 角色名 CREATEROLE;
  • 1

管理员权限

grant all privileges TO lfx;
  • 1

创建表

CREATE  TABLE 表名(字段 数据类型);
  • 1

插入数据

INSERT INTO 表名(字段) VALUES (数据);
  • 1

更新数据

UPDATE 表名 SET 字段 = 字段 + 100
  • 1

查看表数据

SELECT * FROM 表名;
  • 1

删除表字段数据

DELETE FROM 表名 字段 = xx;
  • 1

删除表

DROP TABLE 表名;
  • 1

创建索引

CREATE INDEX 索引名 ON 表(字段)
  • 1

查看索引

\di+ 表名
  • 1
注:本文转载自blog.csdn.net的蜡笔小鑫️的文章"https://blog.csdn.net/weixin_55270891/article/details/144542048"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

112
数据库
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top