GP 基本语法
参考:PostgreSQL_8.2.3_中文文档.chm
创建新表
CREATE TABLE weather (
city
temp_lo
temp_hi
prcp
date
varchar(80),
int,
int,
real,
date
-- 最低气温
-- 最高气温
-- 降水量
)
DISTRIBUTED BY (主键名);
向表中添加行
INSERT 语句用于向表中添加行:
INSERT INTO weather ()VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');
查询数据:
SELECT city, temp_lo, temp_hi, prcp, date FROM weather;
weather.temp_lo,
weather.city,
SELECT
cities.location
FROM weather, cities
WHERE cities.name = weather.city;
weather.temp_hi,weather.prcp,
weather.date,
select * from "000".tbnode limit 50
更新数据:
你可以用 UPDATE 命令更新现有的行。假设你发现所有 11 月 28 日的温度计数都低了两
度,那么你就可以用下面的方式更新数据:
UPDATE weather
SET temp_hi = temp_hi - 2,
WHERE date > '1994-11-28';
temp_lo = temp_lo - 2
UPDATE TempGoodsPSSM_Goods temp
SET PurchWholeAmount = res.PurchWholeAmount,
OutCostTax = res.OutCostTax,
GiftProportionCostTax = res.GiftProportionCostTax,
SaleGrossProfitTax = res.SaleGrossProfitTax
FROM TempGoodsPSSM_Goods_Happend res
WHERE temp.GoodsCode = res.GoodsCode;
删除数据:
数据行可以用 DELETE 命令从表中删除。假设你对 Hayward 的天气不再感兴趣,那么你可
以用下面的命令把那些行从表中删除:
DELETE FROM weather WHERE city = 'Hayward';
增加字段:
ALTER TABLE distributors ADD COLUMN address varchar(30);
删除字段:
ALTER TABLE distributors DROP COLUMN address RESTRICT;
修改现有字段的类型:
ALTER TABLE distributors ALTER COLUMN address TYPE varchar(80),ALTER COLUMN name TYPE
varchar(100);
对现存字段改名:
ALTER TABLE distributors RENAME COLUMN address TO city;
更改现存表的名字:
ALTER TABLE distributors RENAME TO suppliers;
给一个字段增加一个非空约束:
ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
从一个字段里删除一个非空约束:
ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
给一个表增加一个检查约束:
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);
删除一个表及其所有子表的监查约束:
ALTER TABLE distributors DROP CONSTRAINT zipchk;
向表中增加一个外键约束:
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses
(address) MATCH FULL;
给表增加一个(多字段)唯一约束:
ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
给一个表增加一个自动命名的主键约束,要注意的是一个表只能有一个主键:
ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
把表移动到另外一个表空间:
ALTER TABLE distributors SET TABLESPACE fasttablespace;
把表移动到另外一个模式:
ALTER TABLE myschema.distributors SET SCHEMA yourschema;
事务
BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = 'Alice';
SAVEPOINT my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Bob';
-- 呀!加错钱了,应该用 Wally 的账号
ROLLBACK TO my_savepoint;
UPDATE accounts SET balance = balance + 100.00
WHERE name = 'Wally';
COMMIT;
GP SQL 案例
进销存(带部门)_GP10s_cyx.sql
进销存(不部门)_GP176s_cyx.sql
进销存(单品)_GP129s.sql
进销存(分类)_GP43s_cyx.sql
经销存(部门分类)_GP20s_cyx.sql
GP 问题
GP 测试问题汇总.doc
GP 安装配置
需要安装的软件有:
第三方工具:pgadmin3-1.12.3.zip
驱动程序:pgnp.zip
导数据程序:GPClient.rar
密码是:sgtest
ORACLE 迁移到 GP 需要转换的数据类型:
Greenplum 数据类型
Varchar(100)
Varchar(100)
FLOAT(53)
INTEGER
VARCHAR
numeric
timestamp
Oracle 数据类型
Clob
Blob
FLOAT(126)
INTEGER
VARCHAR2
NUMBER
date
例如:
Oracle:
CREATE TABLE "000".TBGOODS
(
GOODSCODE
GOODSNO
GOODSNAME
PRODAREA
GOODSSPEC
BASEMEASUREUNIT
WHOLEPACKRATE
WHOLEMEASUREUNIT
BASEBARCODE
GOODSBRAND
SUPPLIERCODE
PURCHTAXRATE
SALETAXRATE
PURCHPRICE
SALEPRICE
POINTS
MAXSALEPRICE
MINSALEPRICE
DURABILITY
DAYSBEFCHECKIN
ISDECIMALCONTROL
BUILDDATE
LASTMODIFYDATE
SEASONALCODE
ISCATEGORYCODE
MESUREPROPERTY
VARCHAR2(15 BYTE)
VARCHAR2(30 BYTE)
VARCHAR2(120 BYTE)
VARCHAR2(20 BYTE)
VARCHAR2(255 BYTE)
VARCHAR2(20 BYTE)
FLOAT(126)
VARCHAR2(20 BYTE)
VARCHAR2(20 BYTE)
VARCHAR2(20 BYTE)
VARCHAR2(12 BYTE)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(38)
NUMBER(38)
NUMBER(38)
VARCHAR2(8 BYTE)
VARCHAR2(8 BYTE)
VARCHAR2(4 BYTE)
NUMBER(38)
NUMBER(38)
备注
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
VARCHAR2(255 BYTE)
VARCHAR2(4 BYTE)
VARCHAR2(12 BYTE)
NUMBER(38)
NUMBER(38)
NUMBER(25,10)
VARCHAR2(2 BYTE)
VARCHAR2(2 BYTE)
BLOB,
NUMBER(38)
VARCHAR2(8 BYTE)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(25,10)
NUMBER(38)
REMARK
CATEGORYITEMCODE
CATEGORYCODE
GOODSTYPE
MANAGERMODE
GROSSMARGIN
SUBGROUPCODE1
SUBGROUPCODE2
GOODSPIC
ISINCATALOG
INCATALOGDATE
DMSNORMAL
DMSPROM
WHOLESALEPRICE
APPSALEPRICE
ISLOCAL
WORKSTATECODE
VARCHAR2(4 BYTE)
CIRCULATIONMODECODE VARCHAR2(4 BYTE)
VARCHAR2(20 BYTE)
DURCONDITION
TEMPBEGINDATE
VARCHAR2(8 BYTE)
VARCHAR2(8 BYTE)
TEMPENDDATE
TEMPWORKSTATECODE
VARCHAR2(4 BYTE)
STOPCATALOGDATE
OUTCATALOGDATE
GOODSLEVEL
FLIMITPRICE
SLIMITPRICE
TLIMITPRICE
REPORTTEMPLATE
REPORTTEMPLATET
GOODSLENGTH
GOODSWIDTH
GOODSHEIGHT
SPECIMENMONEY
SPECIMENDAYS
DMSNORMAL_YEAR
DMSPROM_YEAR
MRPROTYPECODE
PRICEREMARK
MRBILLNUMBER
VARCHAR2(8 BYTE)
VARCHAR2(8 BYTE)
VARCHAR2(30 BYTE)
FLOAT(126)
FLOAT(126)
FLOAT(126)
CLOB,
VARCHAR2(20 BYTE),
FLOAT(126)
FLOAT(126)
FLOAT(126)
FLOAT(126)
INTEGER
FLOAT(126)
FLOAT(126)
VARCHAR2(20 BYTE)
VARCHAR2(255 BYTE)
VARCHAR2(20 BYTE)
);
Greenplum:
CREATE TABLE "000".TBGOODS
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT ' ',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT ''
(
GOODSCODE
GOODSNO
GOODSNAME
PRODAREA
GOODSSPEC
BASEMEASUREUNIT
WHOLEPACKRATE
WHOLEMEASUREUNIT
BASEBARCODE
GOODSBRAND
SUPPLIERCODE
PURCHTAXRATE
SALETAXRATE
PURCHPRICE
SALEPRICE
POINTS
MAXSALEPRICE
MINSALEPRICE
DURABILITY
DAYSBEFCHECKIN
ISDECIMALCONTROL
BUILDDATE
LASTMODIFYDATE
SEASONALCODE
ISCATEGORYCODE
MESUREPROPERTY
REMARK
CATEGORYITEMCODE
CATEGORYCODE
GOODSTYPE
MANAGERMODE
GROSSMARGIN
SUBGROUPCODE1
SUBGROUPCODE2
GOODSPIC
ISINCATALOG
INCATALOGDATE
DMSNORMAL
DMSPROM
WHOLESALEPRICE
APPSALEPRICE
ISLOCAL
WORKSTATECODE
VARCHAR(15)
VARCHAR(30)
VARCHAR(120)
VARCHAR(20)
VARCHAR(255)
VARCHAR(20)
FLOAT(53)
VARCHAR(20)
VARCHAR(20)
VARCHAR(20)
VARCHAR(12)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(38)
numeric(38)
numeric(38)
VARCHAR(8)
VARCHAR(8)
VARCHAR(4)
numeric(38)
numeric(38)
VARCHAR(255)
VARCHAR(4)
VARCHAR(12)
numeric(38)
numeric(38)
numeric(25,10)
VARCHAR(2)
VARCHAR(2)
VARCHAR(100),
numeric(38)
VARCHAR(8)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(25,10)
numeric(38)
VARCHAR(4)
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
VARCHAR(8)
VARCHAR(8)
VARCHAR(30)
FLOAT(53)
FLOAT(53)
FLOAT(53)
CIRCULATIONMODECODE VARCHAR(4)
VARCHAR(20)
DURCONDITION
VARCHAR(8)
TEMPBEGINDATE
TEMPENDDATE
VARCHAR(8)
TEMPWORKSTATECODE
VARCHAR(4)
STOPCATALOGDATE
OUTCATALOGDATE
GOODSLEVEL
FLIMITPRICE
SLIMITPRICE
TLIMITPRICE
REPORTTEMPLATE
REPORTTEMPLATET
GOODSLENGTH
GOODSWIDTH
GOODSHEIGHT
SPECIMENMONEY
SPECIMENDAYS
DMSNORMAL_YEAR
DMSPROM_YEAR
MRPROTYPECODE
PRICEREMARK
MRBILLnumeric
varchar(100),
VARCHAR(20),
FLOAT(53)
FLOAT(53)
FLOAT(53)
FLOAT(53)
INTEGER
FLOAT(53)
FLOAT(53)
VARCHAR(20)
VARCHAR(255)
VARCHAR(20)
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT '',
DEFAULT ' ',
DEFAULT '',
DEFAULT '',
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT 0,
DEFAULT '',
DEFAULT '',
DEFAULT ''
)
DISTRIBUTED BY (goodscode);
SQL 迁移到 GP 需要转换的数据类型:
备注
Greenplum 数据类型
Varchar(100)
FLOAT
INTEGER
VARCHAR
numeric
timestamp
date
SQL 数据类型
image
FLOAT
INT
VARCHAR
numeric
datetime
date
刷表注意:
在 GP 中不需要建触发器、外键、自增列换成不需要自增的数据类型(int)。
例如:
SQL:
CREATE TABLE [000].[tb201212_AcceptBillDetail](
[DeptCode] [varchar](12) NOT NULL,