前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL用户入门Greenplum

MySQL用户入门Greenplum

原创
作者头像
lambgong
发布2019-01-29 16:44:42
2.6K0
发布2019-01-29 16:44:42
举报

说明

本文描述问题及解决方法同样适用于 腾讯云Snova云数仓

背景

Greenplum(以下简称GP)是基于PostgreSQL的MPP数据库。在使用方式和语法上和PostgreSQL基本一致,而PostgreSQL与MySQL在使用上还是有一些差异。本文在操作层面列举了一些最基本的差异,让MySQL用户能够快速上手GP。

基本概念

数据库(Database)和模式(Schema)

MySQL : MySQL中模式是数据库的别名,这二者没什么区别,创建一个模式就是创建一个数据库。

GP : 在GP中模式属于数据库内的一个概念,用于在数据库中组织对象,起到类似于命名空间的作用,这样用户可以在一个数据库下创建多个模式,这些不同的模式可以有不同的访问权限,并且不同模式下的表名是可以重复。

说明:如果要进行类比的话,GP中的模式更像MySQL中的数据库,在MySQL中用户可以访问同一个实例中的不同数据库,但是在GP中一个连接只能访问一个数据库,但是可以同时访问多个模式,比如join多个模式中的表。

基本操作

操作

MySQL

GP

切换数据库

USE {dbname}

\c {dbname}

查看所有数据库

SHOW DATABASE

\l

切换Schema

SET search_path={schemaname}

查看所有表

SHOW TABLES

\d

查看表结构

DESC {tablename}

\d+ {tablename}

按列展示结果

\G(跟在SQL语句后)

\x(单独运行,再次运行切回按行)

查看运行时间

默认展示

\timing

查看客户端连接

SHOW PROCESSLIST

SELECT * FROM pg_stat_activity

客户端工具

mysql -h{hostname} -P{port} -u{user} -p{pwd} {dbname}

PGPASSWORD={pwd} psql -h{hostname} -p{port} -U{user} -d {dbname}

基本语法

自增长字段

自增长字段是数据库比较常见的特性,也是MySQL与GP使用习惯差距较大的地方。

MySQL

CREATE TABLE `mysql_test` (
  `id` bigint  NOT NULL AUTO_INCREMENT, 
  `name` varchar(32) NOT NULL,
  PRIMARY KEY(`id`)
  ) ENGINE=InnoDB  DEFAULT CHARSET=utf8

GP

GP中的自增长需要使用到序列Sequence

有2种创建方式

CREATE TABLE gp_test (
  id SERIAL NOT NULL, 
  name varchar(32) NOT NULL ,
  PRIMARY KEY(id)
  ) 
 CREATE SEQUENCE users_id_seq INCREMENT BY 2 MINVALUE  10000 MAXVALUE 99999;
 CREATE TABLE gp_test (
  id bigint NOT NULL DEFAULT NEXTVAL ('users_id_seq'),
  name varchar(32) NOT NULL ,
  PRIMARY KEY(id)
  )    

以上2种方式本质上都一样,只不过第一种方式自动创建了一个Sequence,并且与表中字段id绑定到一起。

注释

MySQL中表和字段的注释通常都写在建表语句中,GP则需要单独的语句。

MySQL

CREATE TABLE `mysql_test` (
  `id` bigint  NOT NULL AUTO_INCREMENT COMMENT '自增长主键', 
  `name` varchar(32) NOT NULL COMMENT '姓名',
  PRIMARY KEY(`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='员工信息表'

GP

CREATE TABLE gp_test (
  id SERIAL, 
  name varchar(32) ,
  PRIMARY KEY(id)
)

COMMENT ON COLUMN gp_test.id is '自增长主键'; 
COMMENT ON COLUMN gp_test.name is '姓名'; 
COMMENT ON table  gp_test is '员工信息表'; 

字段类型

字段类型在各个数据库间都会有不同的差异,以下列举MySQL与GP字段类型的一些主要差异

MySQL

GP

TINYINT

SMALLINT

MEDIUMINT

INTEGER

TINYINT UNSIGNED

SMALLINT check({columnname} >= 0)

FLOAT

REAL

DATETIME

TIMESTAMP

LONGTEXT

TEXT

MEDIUMTEXT

TEXT

BLOB

BYTEA

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 背景
  • 基本概念
    • 数据库(Database)和模式(Schema)
    • 基本操作
    • 基本语法
      • 自增长字段
        • 注释
          • 字段类型
          相关产品与服务
          数据库
          云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档