本文主要向大家介绍了MySQL数据库之Vertica数据库的用法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

基于列存储的数据库,相对于传统的基于行的数据库,它更适合在数据仓库存储方面发挥特长。基于列存储的数据库的优点:

a)、对于聚集操作,比如求sum,明显基于列存储的要比基于行存储的快;

b)、对于update操作,不须接触其他列值;

c)、基于行存储的数据库在查询每行记录的多个列值更高效的条件是,row-size比较小,这样一次磁盘读取就可以获取整行;

d)、基于行存储的数据库在insert一行的时候相对更高效,毕竟可一次写入一个连续空间,即一次single disk seek。

从实际情况上来看,基于行存储的数据库更适合OLTP(联机事务处理系统),基于列存储的数据库更适合OLAP(联机分析处理系统),比如数据仓库。除此之外,同一列必定是同一类型大小,基于列存储的数据库更容易使用高效的存储方式,与之相对,基于行存储的数据库则只能采用随机方式处理列值了。

Vertica数据库的设计特点是:

a)、它是基于列的存储结构,提高了连续的record处理的性能,但是在一般事务中增加了对单独record进行update和delete的开销;

b)、“单独”更新(out-of-place updates)和混合存储结构,提高了查询、插入的性能,但增加了update和delete的开销;

c)、压缩,减少存储开销和IO带宽开销;

d)、完全无共享架构,降低对共享资源的系统竞争。

Vertica数据库运行在基于Linux的网格服务器上,目前应用于Amazon Elastic Compute Cloud的数据库管理系统。

常用命令如下:

一、进入vertica的sql环境:vsql -d dbname -w passwd

在vertica的sql环境下获取帮助 dbname=>\h

二、(1)查询用户:select * from v_catalog.users;

(2)查询schema:select * from schemata;

注:vertica中,某个schema必须附属于某个用户(user),查询用户和schema信息:

SELECT u.user_name, s.schema_name

FROM users u LEFT OUTER JOIN schemata s ON u.user_name = s.schema_owner

三、创建用户和schema:

(1)创建一个用户:create user dev_test identified by 'test';

(2)基于某个用户创建schema:create schema if not exists test authorization dev_test;

(3)重命名(备份用)dataname数据库为 dataname_bak:alter schema dataname rename to dataname_bak;

(4)删除dataname库:drop schema dataname cascade;

三、赋权:

(1)一个schema上的权限赋给另一个用户:GRANT USAGE ON SCHEMA dbname_dw TO dev_test;

(2)把对某个表的操作的权限赋给另一个用户:GRANT ALL ON TABLE tw_re_pm_cell_all_cell_h to dev_test;

(3)从某个用户收回对某个schema的使用权限:revoke all on SCHEMA dbname_dw from dev_test;

(4)从某个用户收回对某个表的使用权限:revoke all on table fct_flux_se_flux_flow_whole_ana_d from dev_test;

三、序列:

(1)查询系统中的序列:select * from sequences;

(2)创建序列:

简单语法:CREATE SEQUENCE sq1 MAXVALUE 5000 START 1;

标准语法:CREATE SEQUENCE [[db-name.]schema.]sequence_name

... [ INCREMENT [ BY ] positive_or_negative ]

... [ MINVALUE minvalue | NO MINVALUE ]

... [ MAXVALUE maxvalue | NO MAXVALUE ]

... [ START [ WITH ] start ]

... [ CACHE cache ]

... [ CYCLE | NO CYCLE ]

(3)1、使用序列:SELECT NEXTVAL('my_seq');

SELECT CURRVAL('my_seq');

注:一个新创建还没有使用过的序列,必须首先执行NEXTVAL,然后才能执行CURRVAL。

2、在INSERT语句里使用序列:INSERT INTO customer VALUES ('Hawkins' ,'John', 072753, NEXTVAL('my_seq'));

3、在INSERT语句里把序列作为默认值:

CREATE TABLE customer2(ID INTEGER DEFAULT NEXTVAL('my_seq'),

lname VARCHAR(25),

fname VARCHAR(25),

membership_card INTEGER

);

=> INSERT INTO customer2 VALUES (default,'Carr', 'Mary', 87432);

(4)删除序列:DROP SEQUENCE seq_name;

四、Vertica创建外部表:

CREATE EXTERNAL TABLE ext1 (x integer) AS COPY FROM '/tmp/ext1.dat' DELIMITER ',';

CREATE EXTERNAL TABLE ext1 (x integer) AS COPY FROM '/tmp/ext1.dat.bz2' BZIP DELIMITER ',';

CREATE EXTERNAL TABLE ext1 (x integer, y integer) AS COPY (x as '5', y) FROM '/tmp/ext1.dat.bz2' BZIP DELIMITER ',';

五、copy执行错误后的Vertica的错误日志:

/database/dbname/dbname/v_dbname_node0002_catalog/CopyErrorLogs

六、从vertica数据的表中导出数据到数据文件,shell命令:

echo `vsql -d dbname -U dbadmin -Atq -w Zongfen_12 -c "select * from test.dim_flow_direction order by flow_type_code"> /database/datastage/export/dim_all/test`

七、通过数据文件向vertica数据库里加载数据:

copy test.fct_flux_se_bus_res_ana_d from '/database/imp_file/fct_flux_se_bus_res_ana_d' on v_dbname_node0002 delimiter '|';

八、(1)修改字段为非空

alter table test.fct_fournet_wlanap_equp_ana_d alter column day_id set not null;

(2)更改字段数据类型

alter table test.dim_micro_area_gsm alter column cell_id set data type numeric(15,0);

对于数值类型:types–INTEGER, INT, BIGINT, TINYINT, INT8, SMALLINT, and all NUMERIC values of scale <=18 and precision 0 之间是可以互相转化的。此外,numeric类型的精度(precision)是无法更改的,但是长度(scale)是可以修改的,(0-18)之间可以互修改,(19-37)之间可以互修改。

(3)给表增加字段

alter table test.DIM_DETAIL_SVCTYPE add column if_app numeric(10,0);

(4)删除表字段

alter table test.DIM_DETAIL_SVCTYPE drop column if_app;

九、数据库表之间导数据

CONNECT TO VERTICA dbname USER dbadmin PASSWORD 'dbname' ON '192.168.1.1',5433;

export TO VERTICA dbname.test.FCT_TNES_GN_NET_M FROM test.FCT_TNES_GN_NET_M;

九、修改普通表为分区表

alter table test.fct_fournet_wlanap_equp_ana_d partition by day_id;

十、修改表名

alter table test.fct_fournet_wlanap_equp_ana_d_x rename to fct_fournet_wlanap_equp_ana_d;

十一、修改表所属的用户

alter table test.fct_fournet_wlanap_equp_ana_d owner to dev_test

十二、查询表

tables

十三、projections

projections

十四、查询列

columns

十五、查询注释

comments

十六、

--查询表对应的projection

SELECT owner_name, anchor_table_name, projection_name

FROM projections

WHERE projection_basename = 'DIM_CFG_LEVEL';

--查询表的列对应的注释

SELECT t3.anchor_table_name AS Table_name,

SUBSTR (t1.object_name, INSTR (t1.object_name, '.', 1) + 1) AS Column_name,

t1.comment AS comment

FROM comments t1, projections t3

WHERE SUBSTR (t1.object_name, 1, INSTR (t1.object_name, '.', 1) - 1) =

t3.projection_name

AND t1.object_type = 'COLUMN'

ORDER BY t3.anchor_table_name;

-- 四舍五入、并且保留两位小数

SELECT TRIM (TO_CHAR (ROUND (3.456, 2.0), '999999999999999999.00')),

TRIM (TO_CHAR (ROUND (3, 2.0), '999999999999999999.00')),

TRIM (TO_CHAR (ROUND (3.00, 2.0), '999999999999999999.00')),

TRIM (TO_CHAR (ROUND (323542.101, 2.0), '999999999999999999.00')),

TRIM (TO_CHAR (ROUND (3.1067, 2.0), '999999999999999999.00'))

-- 产生随机数

1、RANDOM()

RANDOM has no arguments. Its result is a FLOAT8 data type

SELECT RANDOM();

random

-------------------

0.211625560652465

(1 row)

2、RANDOMINT

Returns a uniformly-distributed integer I, where 0 <= I

RANDOMINT ( N )

Example:

In the following example, the result is an INT8, which is >= 0 and

SELECT RANDOMINT(5);

randomint

----------

3

(1 row)

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

vertica MySQL_MySQL数据库之Vertica数据库的用法相关推荐

  1. mysql id in set_mysql数据库中find_in_set()和in()用法区别

    mysql数据库中find_in_set()和in()用法区别 (2015-07-19 08:30:21) 标签: mysql数据库 find_in_set 在mysql中in可以包括指定的数字,而f ...

  2. [数据库] Navicat for Oracle基本用法图文介绍

    引自百度百科:Navicat for Oracle是一套超强的Oracle数据库系统管理工具.它有极具巧思的图形化用户界面(GUI),让你可以快速且容易的以安全且简单的方法建立.组织.存取及共享资讯. ...

  3. thinkphp mysql cache_thinkPHP5框架数据库连贯操作之cache()用法分析

    本文实例讲述了thinkPHP5框架数据库连贯操作之cache()用法.分享给大家供大家参考,具体如下: 介绍 TP5中自带的缓存系统,是File型缓存.也就是文件型缓存.存储地址是:根目录..unt ...

  4. 数据库和python的结合_redis数据库及与python交互用法简单示例

    本文实例讲述了redis数据库及与python交互用法.分享给大家供大家参考,具体如下: redis数据操作 1.string类型:主要存储字符串 操作 命令 设置键值 set key value 设 ...

  5. java metadata 使用_java 查询oracle数据库所有表DatabaseMetaData的用法(详解)

    一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMet ...

  6. 数据库查询语句 -- HAVING的用法

    数据库查询语句 HAVING的用法 HAVING语句通常与GROUP BY子句及聚集函数COUNT,AVG,SUM,MAX,MIN语句联合使用,用来过滤由GROUP BY语句返回的记录集,通常跟在GR ...

  7. oracle数据库中 instr函数的用法

    oracle数据库中 instr函数的用法 一.instr函数的概念 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符.在一个字符串中查找指定的字符,返回被查找到的 ...

  8. SQL数据库语句中escape的用法及含义

    SQL数据库语句中escape的用法及含义 escape是用来转译的 例如: 数据库中有个表 A字段abc 中存du了字符'%',那么我查询的时候如果只想查询第二位是 '%'的记录就需要进行模糊查询, ...

  9. infomix数据库版本sql_数据库周刊31丨华为openGauss 正式开源;7月数据库排行榜发布...

    墨天轮数据库周刊第31期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. ✨本文所有标题皆有跳转,请查看原版文章(https://www.modb.pro/db/27216)进行跳转~ ...

最新文章

  1. How to recover from 'programmers burnout(转)
  2. HDU 3632 A Captivating Match
  3. Java Socket 学习
  4. CDN百科第七期 | 关于CDN的原理、术语和应用场景那些事
  5. SQL点滴19—T-SQL中的透视和逆透视
  6. Arthas 思维导图笔记
  7. JAVA入门级教学之(内存引用的例子)
  8. 万万没想到,JVM内存结构的面试题可以问的这么难?
  9. java midlet 是什么_编译JAVA游戏,MIDlet出错,急求大家帮助
  10. ibtais中把clob数据类型转换成string并插入到数据库中
  11. java里函数式表达式_java8入门(lambda表达式、函数式接口相关)
  12. python正则表达式应用
  13. ROS学习记录:Ubuntu18下ROS摄像头标定
  14. Ubuntu20安装gcc6.3.0
  15. 专技继续教育-使用tampermonkey刷课时(可自动跳转下一节)
  16. 0x0000006B蓝屏问题解决方法
  17. 怎样才能成为挑战年薪30W的运维工程师?
  18. Ubuntu无法调节屏幕亮度问题
  19. Java中继承thread类与实现Runnable接口的区别(转)
  20. 干货 | Trip.com APP QUIC应用和优化实践

热门文章

  1. 【冰糖R语言】实现程序进度条:txtProgressBar() winProgressBar() tkProgressBar()
  2. 用html和css画太极图,利用css画一个太极图(阴阳八卦)实例
  3. [踩坑解决]npm ERR! gyp info it worked if it ends with oknpm ERR! gyp verb cli [
  4. python列表换行输出_Python从列表转换为字符串时处理换行符
  5. vue开发规范(单文件组件)
  6. 20P83 pr预设模板5000种视频转场过渡视觉特效豪华预设包 v2
  7. ImportError: attempted relative import with no known parent package
  8. 中国首届DFMA降本设计峰会
  9. 代理自动配置PAC学习
  10. SOC上的总线真的是总线?