[GBase 8s 教程]GBase 8s ALTER TABLE 命令

在 GBase 8s 中,ALTER TABLE 命令用于添加,修改,删除一张已经存在表的列。
另外你也可以用 ALTER TABLE 命令添加和删除约束。

语法
用 ALTER TABLE 在一张已存在的表上添加列的语法如下:

ALTER TABLE table_name ADD column_name datatype;

在一张已存在的表上 DROP(删除列),语法如下:

ALTER TABLE table_name DROP column_name;

修改表中某列的 DATATYPE(数据类型),语法如下:

ALTER TABLE table_name MODIFY column_name datatype;

给表中某列添加 NOT NULL 约束,语法如下:

ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

给表中某列 ADD UNIQUE CONSTRAINT( 添加 UNIQUE 约束),语法如下:

ALTER TABLE table_name
ADD CONSTRAINT UNIQUE(column1, column2...) [CONSTRAINT constraint_name] ;

给表中 ADD CHECK CONSTRAINT(添加 CHECK 约束),语法如下:

ALTER TABLE table_name
ADD CONSTRAINT  CHECK(condition) [CONSTRAINT constraint_name];

给表 ADD PRIMARY KEY(添加主键),语法如下:

ALTER TABLE table_name
ADD CONSTRAINT PRIMARY KEY(column1, column2...) [CONSTRAINT constraint_name] ;

DROP CONSTRAINT (删除约束),语法如下:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

实例
创建 COMPANY 表,数据内容如下:

DROP TABLE IF EXISTS COMPANY;
CREATE TABLE COMPANY(
  ID         SERIAL         PRIMARY KEY,
  NAME       VARCHAR(40)    NOT NULL,
  AGE        INT            NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     DECIMAL(10,2),
  JOIN_DATE  DATE           DEFAULT TODAY
);
INSERT INTO COMPANY VALUES (0, '李雷', 37, '北京', 20000.00,'2005-05-13');
INSERT INTO COMPANY VALUES (0, '韩梅梅', 35, '天津', 16000.00, '2007-12-18');
INSERT INTO COMPANY VALUES (0, '林涛', 36, '上海', 25000.00, '2006-01-04');
INSERT INTO COMPANY VALUES (0, '魏华', 36, '西安', 15000.00, '2007-08-30');
INSERT INTO COMPANY VALUES (0, '露茜', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '莉莉', 34, '伦敦', 22000.00, '2008-08-08');
INSERT INTO COMPANY VALUES (0, '吉姆', 35, '华盛顿', 16000.00, '2010-12-13');
INSERT INTO COMPANY VALUES (0, '汤姆', 36, '渥太华', 21000.00, '2010-04-30');

此时,COMPANY的表记录为:

idnameageaddresssalaryjoin_date
1李雷37北京20000.002005-05-13
2韩梅梅35天津16000.002007-12-18
3林涛36上海25000.002006-01-04
4魏华36西安15000.002007-08-30
5露茜34伦敦22000.002008-08-08
6莉莉34伦敦22000.002008-08-08
7吉姆35华盛顿16000.002010-12-13
8汤姆36渥太华21000.002010-04-30

下面实例在这张表中添加新的列sex,位于age 字段之前:

alter table company add sex smallint default 1 before age;

现在表长这样,增加了sex字段,并有默认值:

idnamesexageaddresssalaryjoin_date
1李雷137北京20000.002005-05-13
2韩梅梅135天津16000.002007-12-18
3林涛136上海25000.002006-01-04
4魏华136西安15000.002007-08-30
5露茜134伦敦22000.002008-08-08
6莉莉134伦敦22000.002008-08-08
7吉姆135华盛顿16000.002010-12-13
8汤姆136渥太华21000.002010-04-30

下面实例删除 sex 列:

alter table company drop sex;

得到结果如下:

idnameageaddresssalaryjoin_date
1李雷37北京20000.002005-05-13
2韩梅梅35天津16000.002007-12-18
3林涛36上海25000.002006-01-04
4魏华36西安15000.002007-08-30
5露茜34伦敦22000.002008-08-08
6莉莉34伦敦22000.002008-08-08
7吉姆35华盛顿16000.002010-12-13
8汤姆36渥太华21000.002010-04-30

下面实例在这张表中修改字段address的数据类型,并限制not null :

alter table company modify address varchar(60) not null;

下面实例在这张表中为字段salary增加check约束:

alter table company add constraint check(salary > 2000) constraint con_chk_company;

下面实例在这张表中删除约束:

alter table company drop constraint con_chk_company;
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值