Oracle操作表和字段的SQL语句
一、建表/添加主键/表与列添加注释/创建序列 SQL
-- Create table (创建表)
create table 表名 (
字段名1 字段类型 默认值 是否为空 ,
字段名2 字段类型 默认值 是否为空,
字段名3 字段类型 默认值 是否为空
);
-- Create/Recreate primary, unique and foreign key constraints
-- 创建/重新创建主键、唯一键和外键约束
alter table 表名
add constraint 键名 primary key (字段);
-- Add comments to the table (向表中添加注释)
comment on table 表名 is '品种表';
-- Add comments to the columns (向列中添加注释)
comment on column 表名.列名 is '注释内容';
-- Create sequence (创建序列)
-- 创建序列的SQL公式语句建议专门查找讲解~ 暂未开始详细记录
实例:创建一个品种表
-- Create table
create table ITEM(
SID NUMBER(15) not null,
ITEM_ID VARCHAR2(50) not null,
ITEM_TYPE NUMBER(2),
ITEM_NAME VARCHAR2(512),
VERSION NUMBER,
DEL_FLG NUMBER(1) default 0,
CREATED_BY VARCHAR2(50),
CREATED_DT DATE,
UPDATED_BY VARCHAR2(50),
UPDATED_DT DATE
);
-- Create/Recreate primary, unique and foreign key constraints
alter table goods
add constraint pk_goods primary key (id);
-- Add comments to the table
comment on table ITEM is '品种表';
-- Add comments to the columns
comment on column ITEM.ITEM_ID is '物品ID,唯一,生成规则:分类+序列号';
comment on column ITEM.ITEM_TYPE
is '品种类型
1 医耗
2 药品
3 跟台';
-- Create sequence
create sequence SEQ_ITEM
minvalue 1000000000
maxvalue 9999999999
start with 1000000000
increment by 1
cache 20;
二、修改表 SQL
-- 修改表名
rename 旧表名 to 新表名;
rename ITEM to ITEM_NEW;
-- 添加新字段:
alter table 表名 add (字段名 字段类型 默认值 是否为空);
alter table ITEM add (ITEM_MODEL VARCHAR2(2048));
alter table ITEM add (STATUS NUMBER(1) default '0' not null);
-- 修改字段:
alter table 表名 modify (字段名 字段类型 默认值 是否为空);
alter table ITEM modify (ITEM_MODEL VARCHAR2(520));
-- 修改字段名:
alter table 表名 rename column 列名 to 新列名;
alter table ITEM rename column STATUS to STATUS_NEW;
-- 删除字段:
alter table 表名 drop column 字段名;
alter table ITEM drop column STATUS;
修改字段类型时,原字段有数据,且新类型与新类型不同,或长度不符,执行时会弹出:
“ORA-01439:要更改数据类型,则要修改的列必须为空”
解决方法:
-- 修改原字段名
alter table tb rename column 原字段 to 新字段名(随意改);
-- 增加一个和原字段名同名的字段
alter table tb add 同名字段 要改的字段类型;
-- 将原字段数据更新到增加的字段
update tb set 新加的同名字段=trim(原字段(新字段名));
-- 更新完,删除原字段
alter table tb drop column 原字段(新字段名);
三、删除表
-- delete后面添加where条件,可删除单条或多条数据,不删除表结构;不添加where条件则会删除所有数据
delete from 表名 where 条件;
-- truncate是一次性删掉所有数据,不删除表结构
truncate table 表名;
-- drop删除所有数据,会删除表结构
drop table 表名;
以下是本文参考文档链接,感谢!
优快云-丿灬岁月如歌灬:Oracle修改字段数据类型