海量数据库使用操作

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

文章目录

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

使用vsql本地连接数据库

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

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

vsql -d vastbase -p 5432
  • 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 退出数据库。

\q

创建数据库

功能描述

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

  • 创建一个新的数据库testdb1。
CREATE DATABASE testdb1;
  • 创建角色(用户)
    在 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;
  • 查看数据库(vsql客户端可用)。
\l
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/vastbasetemplate1 | vastbase | UTF8     | en_US.utf8 | en_US.utf8 | =c/vastba
se          +|          |          |            |            | vastbase=
CTc/vastbasetestdb1   | 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;
  • 删除数据库testdb3。
DROP DATABASE 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)
);
  • 创建表,并指定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)
);
  • 创建一个带有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);
  • 创建表,并指定该表数据不写入预写日志。
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)
);
  • 创建表时,指定表空间PG_DEFAULT。
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)
);
  • 向表中增加一个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;

管理表

向表中插入数据

在创建一个表后,表中并没有数据,在使用这个表之前,需要向表中插入数据。本小节介绍如何使用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;
    

    返回结果为:

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

    SELECT * FROM customer_t1;
    

    返回结果为:

    c_customer_sk | c_customer_id | c_first_name
    ---------------+---------------+--------------3869 | hello         | Grace3869 | hello         | Grace3869 |               | Grace3869 | hello         |6985 | maps          | Joes9976 | world         | James4421 | Admin         | Local
    (7 rows)
    
  • 执行如下命令只查询字段c_customer_sk的数据。

    SELECT c_customer_sk FROM customer_t1;
    

    返回结果为:

    c_customer_sk
    ---------------3869386938693869698599764421
    (7 rows)
    
  • 执行如下命令过滤字段c_customer_sk的重复数据。

    SELECT DISTINCT( c_customer_sk ) FROM customer_t1;
    

    返回结果为:

    c_customer_sk
    ---------------9976698538694421
    (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         | Grace3869 | hello         | Grace3869 |               | Grace3869 | 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         | Grace3869 |               | Grace3869 | hello         | Grace4421 | Admin         | Local6985 | maps          | Joes9976 | world         | James
    (7 rows)
    

删除表中数据

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

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

示例

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

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

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

    DELETE FROM customer_t2;
    

    或者

    TRUNCATE TABLE customer_t2;
    

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

  • 删除创建的表:

    DROP TABLE customer_t1;
    

查看帮助信息

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

\?

查看数据库

\l

列举表

\dt

查看表结构

\d tablename

列举schema

\dn

查看索引

\di

切换数据库

\c dbname

总结

vsql连接

vsql -h <IP地址> -p <端口号> -d <数据库名> -U <用户名>

创建数据库

CREATE DATABASE 数据库名

创建角色

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

修改权限

ALTER USER 角色名 CREATEROLE;

管理员权限

grant all privileges TO lfx;

创建表

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

插入数据

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

更新数据

UPDATE 表名 SET 字段 = 字段 + 100

查看表数据

SELECT * FROM 表名;

删除表字段数据

DELETE FROM 表名 字段 = xx;

删除表

DROP TABLE 表名;

创建索引

CREATE INDEX 索引名 ON 表(字段)

查看索引

\di+ 表名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/64412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是运算符重载?如何在 C++ 中进行运算符重载?运算符重载在面向对象编程中的好处是什么?

1) 什么是运算符重载&#xff1f;如何在 C 中进行运算符重载&#xff1f; 运算符重载是指为类&#xff08;或结构体&#xff09;中的运算符赋予新的意义&#xff0c;使其能够用于自定义类型&#xff08;如类对象&#xff09;的操作。C 允许用户通过定义特定的成员函数或友元函…

机器学习之 K-Means

1. 什么是 K-Means&#xff1f; K-Means 是一种常用的无监督学习算法&#xff0c;主要用于聚类分析任务。其目标是将数据集划分为 K 个不同的簇&#xff0c;使得同一簇内的数据点之间的相似性更高&#xff0c;而不同簇的数据点差异更大。K-Means 算法使用了一个简单而有效的迭…

上传文件时获取音视频文件时长和文本文件字数

获取音视频文件时长和文本文件字数 一、获取音视频文件时长二、计算文本文件字数 最近有个需求&#xff0c;要求上传文件时获取音视频文件时长和文本文件字数&#x1f436;。 发现这样的冷门资料不多&#xff0c;特做个记录。本文忽略文件上传功能&#xff0c;只封装核心的工具…

【AIGC】与模型对话:理解与预防ChatGPT中的常见误解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | ChatGPT 文章目录 &#x1f4af;前言&#x1f4af;模型的工作原理和用户期望差异人工智能模型的基本工作原理认知上的局限与误解用户期望与模型实际能力的差距精确理解用户意图的重要性实际应用中的建议 &…

AI视频配音技术创新应用与商业机遇

随着人工智能技术的飞速发展&#xff0c;AI视频配音技术已经成为内容创作者和营销人员的新宠。这项技术不仅能够提升视频内容的吸引力&#xff0c;还能为特定行业带来创新的解决方案。本文将探讨AI视频配音技术的应用场景&#xff0c;并讨论如何合法合规地利用这一技术。 AI视频…

信创改造-Spring Boot 项目部署至 TongWeb

打 war 包参考&#xff1a;https://blog.csdn.net/z1353095373/article/details/144330999

Htpp中web通讯发送post(上传文件)、get请求

一、正常发送post请求 1、引入pom文件 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency>2、这个是发送至正常的post、get请求 import org…

JAVA:代理模式(Proxy Pattern)的技术指南

1、简述 代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理,以控制对这个对象的访问。通过代理模式,我们可以在不修改目标对象代码的情况下扩展功能,满足特定的需求。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什…

【C++】set和map的使用

set和map的使用 1.序列式容器和关联式容器1.1序列式容器:1.2关联式式容器: 2.set的使用2.1set和multiset参考文档2.2set类的介绍2.3set的构造和迭代器2.4set的增删查2.5multiset和set的差异 3map系列的使用3.1 map和multimap参考文档3.2map类的介绍3.3pair类型介绍3.4map的构造…

[LeetCode-Python版]206. 反转链表(迭代+递归两种解法)

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例 3&#xff1…

快速上手Neo4j图关系数据库

参考视频&#xff1a; 【IT老齐589】快速上手Neo4j网状关系图库 1 Neo4j简介 Neo4j是一个图数据库&#xff0c;是知识图谱的基础 在Neo4j中&#xff0c;数据的基本构建块包括&#xff1a; 节点(Nodes)关系(Relationships)属性(Properties)标签(Labels) 1.1 节点(Nodes) 节点…

window.getSelection() 获取划线内容并实现 dom 追随功能

功能&#xff1a;鼠标对一段文本中某些文字进行划线之后&#xff0c;需要在当前划线文本处出现一个功能按钮显示对划线内容进行操作&#xff0c;比如收藏、添加样本库等功能。 一、需要了解的鼠标事件对象属性 给 dom 元素注册鼠标事件之后&#xff0c;会有 event 属性&#…

2024安装hexo和next并部署到github和服务器最新教程

碎碎念 本来打算写点算法题上文所说的题目&#xff0c;结果被其他事情吸引了注意力。其实我之前也有过其他博客网站&#xff0c;但因为长期不维护&#xff0c;导致数据丢失其实是我懒得备份。这个博客现在部署在GitHub Pages上&#xff0c;github不倒&#xff0c;网站不灭&…

Chinese-Clip实现以文搜图和以图搜图

本文不生产技术&#xff0c;只做技术的搬运工&#xff01; 前言 目前网上能够找到的资料有限&#xff0c;要么收费&#xff0c;要么配置复杂&#xff0c;作者主打一个一毛不拔&#xff0c;决定自己动手实现一个&#xff0c;功能清单受启发于Nidia AI lab实验室的nanodb项目&am…

Android14 AOSP支持短按关机

修改frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java diff --git a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java in…

Abaqus混凝土梁三点弯曲开裂模拟基于随机多边形骨料及界面过渡区模型

在细观混凝土开裂研究中&#xff0c;仿真可直观揭示混凝土中多相材料的破坏特征及微观裂缝的发展规律。本案例建立包含随机多边形粗骨料、界面过渡区&#xff08;ITZ&#xff09;及水泥砂浆在内的细观混凝土梁二维模型&#xff0c;对混凝土梁在三点弯曲工况下进行有限元模拟&am…

111.【C语言】数据结构之二叉树的销毁函数

目录 1.知识回顾 2.分析 3.代码 后序遍历销毁(最简洁) 前序遍历销毁(不推荐) 中序遍历销毁(不推荐) 4.将函数嵌入main函数中执行 1.知识回顾 106.【C语言】数据结构之二叉树的三种递归遍历方式 2.分析 销毁二叉树需要按照一定的顺序去销毁,例如:先销毁根还是先销毁根…

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars&#xff08;九&#xff09; 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时&#xff0c;经常需要修改窗口标题、更改软…

渗透测试之js利用

引言 在渗透测试中&#xff0c;js利用是一个非常重要的部分&#xff0c;作为一个网络安全人员&#xff0c;我也是经常利用到这一模块&#xff0c;首先&#xff0c;js是什么呢 什么是js JavaScript(简称js)&#xff0c;javascript和java虽然名字相似&#xff0c;但两个东西却…

请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配

vs版本升级时&#xff0c;编译时会出现上述问题&#xff0c;如原来在2017下编译的程序&#xff0c;后来改用2019&#xff0c;出现上述问题。需要在解决方案-通用属性-调试源文件下变更相应设置。