海量数据库使用操纵

打印 上一主题 下一主题

主题 870|帖子 870|积分 2610

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


  
使用vsql当地连接数据库

步骤1 以操纵体系用户vastbase登录数据库实例地点主机。
步骤2 使用vsql连接当地数据库。
  1. vsql -d vastbase -p 5432
复制代码


  • vastbase:必要连接的数据库名称,安装完成后,默认天生名称为vastbase的数据库,实际登录时请根据详细环境替换。
  • 5432:数据库的端口号,实际登录时请根据详细环境替换。
步骤3 首次登陆时修改密码。


  • (管理员首次登录时)如果用户的数据库版本是2.2(Build 5.75)及以上且角色是体系管理员(vbadmin)、安全管理员(vbsso)或者审计管理员(vbaudit),首次登录时体系会强制要求修改口令,修改语法如下:
    1. ALTER ROLE 用户名 IDENTIFIED BY '新口令' REPLACE '原随机口令';
    复制代码
    其中原随机口令表现:

    • 实例化数据库安装:安装过程中会天生随机口令作为管理员初始口令,表现信息如下:

  1. 数据库三个默认管理员vbaudit、vbsso、vbadmin的默认口令为:
  2. 系统管理员[vbadmin] 初始密码: A4b&b858
  3. 安全管理员[vbsso] 初始密码: U6/f305f
  4. 审计管理员[vbaudit] 初始密码: E5b44f8-
复制代码
​ 首次登录数据库,必要自行修改口令后才可以正常操纵数据库,修改实例:
  1. ALTER ROLE vbadmin IDENTIFIED BY 'Huayu123' REPLACE 'A4b&b858';
复制代码
步骤4 退出数据库。
  1. \q
复制代码
创建数据库

功能描述

数据库安装完成后,默认天生名称为vastbase的数据库。用户必要本身创建一个新的数据库。默认环境下新数据库将通过复制标准体系数据库template0来创建,且仅支持使用template0来创建。


  • 创建一个新的数据库testdb1。
  1. CREATE DATABASE testdb1;
复制代码


  • 创建角色(用户)
    在 VastBase 中,你必要先创建名为 dbuser 的角色(如果还未创建的话)。可以使用以下命令来创建角色:
  1. CREATE ROLE dbuser WITH LOGIN PASSWORD 'Huayu123';
复制代码
  1. # 注释
  2. CREATE ROLE 语句用于创建一个新的角色。
  3. WITH LOGIN 表示这个角色可以用于登录数据库,也就是相当于创建了一个具有登录权限的用户。
  4. PASSWORD 'your_password' 用于设置该角色(用户)的登录密码
复制代码


  • 用模板template0创建数据库testdb2,并指定全部者为dbuser。
  1. CREATE DATABASE testdb2 OWNER dbuser TEMPLATE template0;
复制代码


  • 检察数据库(vsql客户端可用)。
  1. \l
复制代码
  1. vastbase=# \l
  2.                                    数据库库列表   名称    |  拥有者  | 字元编码 |  校对规则  |   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。
  1. ALTER DATABASE testdb1 RENAME TO testdb3;
复制代码


  • 删除数据库testdb3。
  1. DROP DATABASE testdb3;
复制代码
创建表

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


  • 创建简单的表。
  1. CREATE TABLE public.warehouse_t1(
  2. W_WAREHOUSE_SK INTEGER NOT NULL,
  3. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  4. W_WAREHOUSE_NAME VARCHAR(20) ,
  5. W_WAREHOUSE_SQ_FT INTEGER ,
  6. W_COUNTRY VARCHAR(20) ,
  7. W_GMT_OFFSET DECIMAL(5,2)
  8. );
复制代码


  • 创建表,并指定W_STATE字段的缺省值为GA。
  1. CREATE TABLE public.warehouse_t2
  2. (
  3. W_WAREHOUSE_SK INTEGER NOT NULL,
  4. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  5. W_COUNTY VARCHAR(30) ,
  6. W_STATE CHAR(2) DEFAULT 'GA',
  7. W_ZIP CHAR(10) ,
  8. W_COUNTRY VARCHAR(20) ,
  9. W_GMT_OFFSET DECIMAL(5,2)
  10. );
复制代码


  • 创建一个带有70%填充因子的表。
  1. CREATE TABLE public.warehouse_t3
  2. (
  3. W_WAREHOUSE_SK INTEGER NOT NULL,
  4. W_COUNTRY VARCHAR(20) ,
  5. W_GMT_OFFSET DECIMAL(5,2)
  6. ) WITH(fillfactor=70);
复制代码


  • 创建表,并指定该表数据不写入预写日志。
  1. CREATE UNLOGGED TABLE public.warehouse_t4
  2. (
  3. W_WAREHOUSE_SK INTEGER NOT NULL,
  4. W_COUNTRY VARCHAR(20) ,
  5. W_GMT_OFFSET DECIMAL(5,2)
  6. );
复制代码


  • 创建表暂时表。
  1. CREATE TEMPORARY TABLE warehouse_t5
  2. (
  3. W_WAREHOUSE_SK INTEGER NOT NULL,
  4. W_COUNTRY VARCHAR(20) ,
  5. W_GMT_OFFSET DECIMAL(5,2)
  6. );
复制代码


  • 创建表时,指定表空间PG_DEFAULT。
  1. CREATE TABLE public.warehouse_t6
  2. (
  3. W_ID INTEGER NOT NULL,
  4. W_NAME VARCHAR(20) ,
  5. W_MAIL VARCHAR(40)
  6. ) TABLESPACE PG_DEFAULT;
复制代码


  • 创建一个有主键约束的表。
  1. CREATE TABLE public.warehouse_t7
  2. (
  3. W_WAREHOUSE_SK INTEGER PRIMARY KEY,
  4. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  5. W_COUNTRY VARCHAR(20) ,
  6. W_GMT_OFFSET DECIMAL(5,2)
  7. );
复制代码


  • 创建一个有复合主键约束的表。
  1. CREATE TABLE public.warehouse_t8
  2. (
  3. W_WAREHOUSE_SK INTEGER NOT NULL,
  4. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  5. W_WAREHOUSE_NAME VARCHAR(20),
  6. W_COUNTRY VARCHAR(20),
  7. W_GMT_OFFSET DECIMAL(5,2),
  8. CONSTRAINT W_CSTR_KEY2 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID)
  9. );
复制代码


  • 界说一个检查列约束。
  1. CREATE TABLE public.warehouse_t9
  2. (
  3. W_WAREHOUSE_SK INTEGER CHECK (W_WAREHOUSE_SK > 0),
  4. W_WAREHOUSE_ID CHAR(16) NOT NULL,
  5. W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL),
  6. W_WAREHOUSE_SQ_FT INTEGER ,
  7. W_GMT_OFFSET DECIMAL(5,2)
  8. );
复制代码


  • 向表中增加一个varchar列。
  1. 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;
  2. DROP TABLE public.warehouse_t2;
  3. DROP TABLE public.warehouse_t3;
复制代码
管理表

向表中插入数据

在创建一个表后,表中并没有数据,在使用这个表之前,必要向表中插入数据。本小节介绍怎样使用INSERT命令插入一行或多行数据,及从指定表插入数据。
示例
执行如下命令创建示例中必要使用的表customer_t1。
  1. CREATE TABLE customer_t1
  2. (
  3. c_customer_sk integer,
  4. c_customer_id char(5),
  5. c_first_name char(6));
复制代码
向表中插入数据前,意味着表已创建成功。创建表的步骤请参见创建表。


  • 向表customer_t1中插入一行数据:
    数据值是按照这些字段在表中出现的次序列出的,而且用逗号分隔。通常数据值是文本(常量),但也答应使用标量表达式。
    1. INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name)
    2. VALUES (3769, 'hello', 'Grace');
    复制代码
    如果用户已经知道表中字段的次序,也可无需列出表中的字段。例如以下命令与上面的命令结果相同。
    1. INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace');
    复制代码
    如果用户不知道全部字段的数值,可以忽略其中的一些。没有数值的字段将被填充为字段的缺省值。例如:
    1. INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace');
    2. INSERT INTO customer_t1 VALUES (3769, 'hello');
    复制代码
  • 如果必要在表中插入多行,请使用以下命令:
    1. 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中,则可以执行如下命令。
    1. CREATE TABLE customer_t2
    2. (
    3. c_customer_sk integer,
    4. c_customer_id char(5),
    5. c_first_name char(6),
    6. c_last_name char(8)
    7. );
    8. INSERT INTO customer_t2 SELECT * FROM customer_t1;
    复制代码
更新表中数据

修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行,全部行或者指定的部门行。还可以独立更新每个字段,而其他字段则不受影响。
使用UPDATE命令更新现有行,必要提供以下三种信息:


  • 表的名称和要更新的字段名。
  • 字段的新值。
  • 要更新哪些行。
SQL通常不会为数据行提供唯一标识,因此无法直接声明必要更新哪一行。但是可以通过声明一个被更新的行必须满足的条件。只有在表里存在主键的时候,才可以通过主键指定一个独立的行。
创建表和插入数据的步骤请参考创建表与管理表。
示例


  • 必要将表customer_t1中c_customer_sk为9527的地区重新界说为9876:
    1. UPDATE customer_t1 SET c_customer_sk = 9876 WHERE c_customer_sk = 9527;
    复制代码
    这里的表名称也可以使用模式名修饰,否则会从默认的模式路径找到这个表。SET背面紧跟字段和新的字段值。新的字段值不但可以是常量,也可以是变量表达式。
  • 把全部c_customer_sk的值增加100:
    1. UPDATE customer_t1 SET c_customer_sk = c_customer_sk + 100;
    复制代码
    在这里省略了WHERE子句,表现表中的全部行都要被更新。如果出现了WHERE子句,那么只有匹配其条件的行才会被更新。在SET子句中的等号是一个赋值,而在WHERE子句中的等号是比力。WHERE条件不一定是相称测试,许多其他的操纵符也可以使用。
  • 用户可以在一个UPDATE命令中更新更多的字段,方法是在SET子句中列出更多赋值,好比:
    1. UPDATE customer_t1 SET c_customer_id = 'Admin', c_first_name = 'Local' WHERE c_customer_sk = 4421;
    复制代码
检察数据

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


  • 执行如下命令查询表customer_t1的数据行数。
    1. SELECT count(*) FROM customer_t1;
    复制代码
    返回结果为:
    1. count
    2. -------
    3.     7
    4. (1 row)
    复制代码
  • 执行如下命令查询表customer_t1的全部数据。
    1. SELECT * FROM customer_t1;
    复制代码
    返回结果为:
    1. c_customer_sk | c_customer_id | c_first_name
    2. ---------------+---------------+--------------
    3.         3869 | hello         | Grace
    4.         3869 | hello         | Grace
    5.         3869 |               | Grace
    6.         3869 | hello         |
    7.         6985 | maps          | Joes
    8.         9976 | world         | James
    9.         4421 | Admin         | Local
    10. (7 rows)
    复制代码
  • 执行如下命令只查询字段c_customer_sk的数据。
    1. SELECT c_customer_sk FROM customer_t1;
    复制代码
    返回结果为:
    1. c_customer_sk
    2. ---------------
    3.         3869
    4.         3869
    5.         3869
    6.         3869
    7.         6985
    8.         9976
    9.         4421
    10. (7 rows)
    复制代码
  • 执行如下命令过滤字段c_customer_sk的重复数据。
    1. SELECT DISTINCT( c_customer_sk ) FROM customer_t1;
    复制代码
    返回结果为:
    1. c_customer_sk
    2. ---------------
    3.         9976
    4.         6985
    5.         3869
    6.         4421
    7. (4 rows)
    复制代码
  • 执行如下命令查询字段c_customer_sk为3869的全部数据。
    1. SELECT * FROM customer_t1 WHERE c_customer_sk = 3869;
    复制代码
    返回结果为:
    1. c_customer_sk | c_customer_id | c_first_name
    2. ---------------+---------------+--------------
    3.         3869 | hello         | Grace
    4.         3869 | hello         | Grace
    5.         3869 |               | Grace
    6.         3869 | hello         |
    7. (4 rows)
    复制代码
  • 执行如下命令按照字段c_customer_sk举行排序。
    1. SELECT * FROM customer_t1 ORDER BY c_customer_sk;
    复制代码
    返回结果为:
    1. c_customer_sk | c_customer_id | c_first_name
    2. ---------------+---------------+--------------
    3.         3869 | hello         |
    4.         3869 | hello         | Grace
    5.         3869 |               | Grace
    6.         3869 | hello         | Grace
    7.         4421 | Admin         | Local
    8.         6985 | maps          | Joes
    9.         9976 | world         | James
    10. (7 rows)
    复制代码
删除表中数据

在使用表的过程中,可能会必要删除已过期的数据,删除数据必须从表中整行的删除。
SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件举行。如果表中有一个主键,用户可以指定精确的行。用户可以删除匹配条件的一组行或者一次删除表中的全部行。
示例

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


  • 使用DELETE命令删除行,如果删除表customer_t1中全部c_customer_sk为3869的记载:
    1. DELETE FROM customer_t1 WHERE c_customer_sk = 3869;
    复制代码
  • 如果执行如下命令之一,会删除表中全部的行。
    1. DELETE FROM customer_t2;
    复制代码
    或者
    1. TRUNCATE TABLE customer_t2;
    复制代码
    全表删除的场景下,发起使用truncate,不发起使用delete。
  • 删除创建的表:
    1. DROP TABLE customer_t1;
    复制代码
检察资助信息

使用\?检察全部可执行的命令,使用此命令输出结果较多,会分屏表现,可以按空格键分页,按q退出当前内容检察。
  1. \?
复制代码
检察数据库

  1. \l
复制代码
枚举表

  1. \dt
复制代码
检察表结构

  1. \d tablename
复制代码
枚举schema

  1. \dn
复制代码
检察索引

  1. \di
复制代码
切换数据库

  1. \c dbname
复制代码
总结

vsql连接
  1. vsql -h <IP地址> -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
  2. + 表名
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表