人大金仓数据库modify column功能介绍

modify column功能介绍

关键字:

Alter table、modify、人大金仓、KingbaseES

概述

该系列语法用于修改列中的定义,其语法可以总结为下述所示:

--修改单列的语法

ALTER TABLE table_name

MODIFIY column_name action;

--修改多列的语法

ALTER TABLE table_name

MODIFIY (

    column_name1 action,

    column_name2 action,

    ...

);

具体说明如下:

table_name:指要进行更改的表的名称。

column_name: 指要更改其定义的列名。

action:修改列的具体执行动作,其中支持的修改包括。

  1. 支持列设置NULL/NOT NULL。
  2. 设置列的默认值。
  3. 修改列的约束条件。
  4. 修改列的排序规则。
  5. 支持同时对多列的修改。

2.Modify column使用介绍

Alter table table_name modify(ColId [datatype] [collate_clause] [default_clause] [constraint_clause]);

具体用法用例如下

2.1修改列类型

Modify子句中列名后加类型名可以实现列的类型修改。

CREATE TABLE users_table(

    user_id INT generated by default as identity,

    first_name VARCHAR(30),

    last_name  VARCHAR(30),

    email VARCHAR(50),

    primary key (user_id)

);

insert into users_table(first_name, last_name, email) VALUES('Tom', 'King', '134-564-7894');

insert into users_table(first_name, last_name, email) VALUES('Melia', 'Peter', '131-584-7894');

insert into users_table(first_name, last_name, email) VALUES('Kik', 'Bob', '134-564-7894');

-- 修改数据类型

ALTER TABLE users_table modify(first_name text, email text);

ALTER TABLE users_table modify(first_name VARCHAR(30));

\d+ users_table

2.2修改列排序规则

在列中指定collate子句可以用于指定字符串数据的排序规则,排序规则决定字符串的比较方式,包括字符对大小写的敏感性及特殊字符的顺序。

--修改列排序规则

ALTER TABLE users_table modify(first_name COLLATE "C");

ALTER TABLE users_table modify(last_name COLLATE "POSIX");

\d+ users_table

2.3修改列默认值

在modify子句中列名支持指定DEFAULT子句,用于指定列的默认值。当出入新的数据时,如果没有显式指定值的情况下,将使用默认值填充该列。具体的用法如下:

ALTER TABLE users_table modify(first_name DEFAULT 'Default_first_name',last_name DEFAULT  'Default_last_name');

insert into users_table(first_name, last_name, email) VALUES('Tip', 'Tylie', '129-564-9547');

--查看表结构

\d+ users_table

--插入数据验证有默认值的列是否生效

insert into users_table(email) VALUES('123-564-3541');

select * from users_table;

2.4修改列级约束

当前modify子句支持修改NOT NULL/NULL、CHECK约束、外键约束、主键约束、唯一约束。

CREATE TABLE test_modify_table(

    modify_id number(5) primary key,

    first_name varchar(20),

    last_name  varchar(30)

);

ALTER TABLE test_modify_table modify(first_name varchar(50) default 'Tom' constraint name_check unique, last_name varchar(20) default 'Ji' unique);

\d test_modify_table

drop table test_modify_table;

约束修改后的表结构信息:

注:modify语句支持级联修改,也可指定约束名。单列上支持多个Check约束。

  • 修改check约束和not null约束

ALTER TABLE test_modify_table modify(modify_id default 0 check(modify_id > 5));

ALTER TABLE test_modify_table modify(modify_id default 0 check(modify_id > 5)), modify(first_name default 'Tat' constraint first_name_check not null);

ALTER TABLE test_modify_table modify(modify_id default 5 constraint modifyid_check check(modify_id > 5));

\d test_modify_table

--外键索引约束修改

CREATE TABLE reft1(f1 int PRIMARY KEY, f2 varchar(30));

CREATE TABLE reft2(f1 int PRIMARY KEY, f2 INTEGER); 

CREATE TABLE reft3(f1 int PRIMARY KEY, f2 INTEGER); 

ALTER TABLE reft2 modify(f2 default 1  REFERENCES reft1);

\d+ reft2

ALTER TABLE reft3 modify(f2 default 1  REFERENCES reft3);

\d+ reft3

--主键约束

ALTER TABLE reft2 modify(f2 default 2 primary key);-- 错误: 对表 "reft2" 指定多个主键是不允许的

CREATE TABLE test_modify_table_ttt1(a int, b varchar(30));

--在表中原不存在主键约束的情况下可以修改成功

ALTER TABLE test_modify_table_ttt1 modify(a default 2 primary key);

2.5modify语句组合

支持多条modify语句组合,并进行表中列的定义修改。

-- modify table cascade

CREATE TABLE modify_table_cascade(a INT, b VARCHAR(50), name TEXT, test_id INT);

ALTER TABLE modify_table_cascade modify(b COLLATE "C" default 'DefaultName'), modify (name COLLATE "C" default 'Bob');

\d+ modify_table_cascade

ALTER TABLE modify_table_cascade modify(b default 'DefaultName' unique), modify(name default 'Tom');

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值