金仓kingbase数据库普通表管理命令示例(持续更新ing)

以下命令均已在金仓kingbase数据库oracle兼容模式下验证,都是比较常用的命令示例

创建表

--创建表
create table managers(id int unique,name varchar);
CREATE TABLE my_secure_table (
    id          bigint GENERATED BY DEFAULT AS IDENTITY, -- 自动递增主键
    name        VARCHAR2(100) NOT NULL,                  -- 字符串类型,不允许为空
    description CLOB,                                    -- 大文本类型
    price       NUMBER(10, 2),                           -- 数值类型,两位小数
    active      CHAR(1) CHECK (active IN ('Y', 'N')),    -- 单字符类型,带有检查约束
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     -- 时间戳类型,默认当前时间
    updated_at  TIMESTAMP,                               -- 时间戳类型
    binary_data BLOB,                                    -- 二进制大对象类型
    email       VARCHAR2(255) UNIQUE,                    -- 唯一字符串类型
    manager_id  int,                                  -- 将作为外键

    CONSTRAINT pk_my_secure_table PRIMARY KEY (id) USING INDEX TABLESPACE index_tablespace, -- 主键约束,并指定索引表空间
    CONSTRAINT uk_email UNIQUE (email) USING INDEX TABLESPACE index_tablespace,             -- 唯一键约束,并指定索引表空间
    CONSTRAINT fk_manager FOREIGN KEY (manager_id) REFERENCES managers(id)                  -- 外键约束
)
TABLESPACE data_tablespace; -- 指定数据表空间

注意:外键列和被引用列的数据类型需要一致,标识列id类型必须为 tinyintsmallintintegerbigint

-- 添加注释到表和列
COMMENT ON TABLE my_secure_table IS '这是一个安全存储业务实体的表';
COMMENT ON COLUMN my_secure_table.id IS '主键标识';
COMMENT ON COLUMN my_secure_table.name IS '实体名称,必须提供';
COMMENT ON COLUMN my_secure_table.description IS '关于实体的描述信息';
COMMENT ON COLUMN my_secure_table.price IS '实体的价格,精确到两位小数';
COMMENT ON COLUMN my_secure_table.active IS '是否激活,只能是 Y 或 N';
COMMENT ON COLUMN my_secure_table.created_at IS '记录创建的时间戳';
COMMENT ON COLUMN my_secure_table.updated_at IS '记录最后更新的时间戳';
COMMENT ON COLUMN my_secure_table.binary_data IS '二进制数据字段';
COMMENT ON COLUMN my_secure_table.email IS '唯一的电子邮件地址';
COMMENT ON COLUMN my_secure_table.manager_id IS '管理者的ID,关联到managers表';

给表增加列

alter table managers add column depno int;

修改表列类型

alter table managers alter COLUMN depno type bigint;

删除表列

alter table managers drop column depno ;

设置列非空约束

alter table managers alter COLUMN name set not null;

删除列非空约束

alter table managers alter COLUMN name drop not null ;

设置列检查约束

create table products(id varchar,name varchar,price numeric,created_at date,email varchar);

-- 确保 price 列的值大于等于 0
ALTER TABLE products 
ADD CONSTRAINT chk_price_positive CHECK (price >= 0);

-- 确保 created_at 列的时间戳不早于 '2000-01-01'
ALTER TABLE products 
ADD CONSTRAINT chk_created_at_min_date CHECK (created_at >= '2000-01-01');

-- 确保 name 列的长度不超过 50 个字符
ALTER TABLE products 
ADD CONSTRAINT chk_name_length CHECK (LENGTH(name) <= 50);

-- 确保 email 列包含 '@' 符号(简单的电子邮件格式检查)
ALTER TABLE products 
ADD CONSTRAINT chk_email_format CHECK (email ~* '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$');

删除列检查约束

alter table products drop constraint chk_created_at_min_date;

设置列唯一约束

alter table products add constraint products_id_uniq unique(id);
--添加唯一约束会自动添加唯一索引

删除唯一约束

alter table products drop constraint products_id_uniq;
--删除唯一约束会连着删除唯一索引

设置列主键约束

alter table products add constraint products_id_pri primary key (id);
--添加主键约束会自动创建主键索引和在列上添加非空约束

删除列主键约束

alter table products drop constraint products_id_pri;
--删除主键约束会连着删除主键索引,但不会自动去掉非空约束
alter table products alter COLUMN id drop not null ;

设置列外键约束

alter table products add constraint products_id_fk foreign key (id) references managers(id);
alter table products add constraint products_id_fk foreign key (id) references managers(id) on delete cascade on update no action;

注意:
ON DELETE CASCADE 指示当父表中的行被删除时,所有子表中相关的行也会自动被删除。
ON UPDATE NO ACTION 是默认行为,表示如果尝试更新父表中的键值,而该键值正在被子表中的行引用,则会阻止更新操作。
可以根据需要选择不同的选项,如 CASCADE, SET NULL, RESTRICTNO ACTION

删除外键约束

alter table products drop constraint products_id_fk;

添加表和列注释

-- 添加注释到表和列
COMMENT ON TABLE my_secure_table IS '这是一个安全存储业务实体的表';
COMMENT ON COLUMN my_secure_table.id IS '主键标识';

删除表和列注释

COMMENT ON TABLE my_secure_table IS '';
COMMENT ON COLUMN my_secure_table.id IS '';

设置表列排序规则

alter table products alter COLUMN id type varchar collate c;

去除表列排序规则设置

alter table products alter COLUMN id type varchar;

表列重命名

 alter table products rename id to proid;

表约束重命名

alter table products rename CONSTRAINT chk_email_format TO chk_email_format_2;

表重命名

 alter table products rename TO products_his;

修改表所属模式

alter table products_his set schema his ;

修改表所在表空间

alter table his.products_his set tablespace data_tablespace ;

修改表的属主

alter table his.products_his owner to zy;

禁用表约束

alter table his.products_his disable constraint products_id_fk;

启用表约束

alter table his.products_his enable constraint products_id_fk;

设置表填充因子

alter table his.products_his set (fillfactor =50);
--默认是100

设置表vacuum参数

alter table his.products_his set (autovacuum_vacuum_threshold=500);

设置表列默认值

alter table his.products_his alter COLUMN created_at set default now();

删除表列默认值

alter table his.products_his alter COLUMN created_at drop default ;

清空表

truncate table his.products_his ;
truncate his.products_his ;

删除表

drop table his.products_his ;

新建表CREATE TABLE AS

create table tuser as select * from sys_user where 1=2;
--复制表结构,不复制数据和注释和索引

新建表CREATE TABLE LIKE

create table tuser (like sys_user including all);
--复制表结构,注释和索引,不复制数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值