Oracle创建和修改表、约束

创建表

create table 表名(
列名 数据类型 [[constraint 约束名字]约束]...,
[constraint设定级联约束,
语法
constraint 约束名 约束类型 绑定属性.
例题
check约束constraint j_date_interval check (end_date > start_date)
主键约束constraint date_pk primary key (employee_id,start_date)
外键约束 CONSTRAINT fk_name foregin key(name1) references tb(name2),
]
....
)
表参数;

约束

名字作用
主键(primary key)唯一标识,只能一个主键
唯一性(unique)取值唯一
检查(check)限制列
外键(foreign key)该字段在其他表存在主键
非空(not null)不能为空

数据类型

数据类型名称说明
char(n)固定长度的字符串
varchar2(n)存储可变字符串
number(p,s)数值,p为总位,s为小鼠位数
date日期类型
timestamp(n)时间戳
clob大型字符串,支持变长或定长字符串
blob大型的未被结构化边长的二进制(如二进制视频、音频等非文本)
bfile二进制个数文本,该二进制文件保存在数据库外部操作系统
raw(n)边长二进制
rowid行标识符,物理地址伪劣类型
long raw变长二进制最大2GB建议用blob

表参数

名字说明
tablespace表空间
storage存储参数
longging、nologging是否写入日志,默认logging
cache、nochache是否缓存,默认cache
noparallel、parallel是否允许并行创建表以及随后对表中数据进行并行操作,默认noparallel

1.创建一个regions表,字段:主键region_id number,region_name 变长25

create table regions(
	region_id number primary key,
	region_name varchar2)25)
)
tablespace users;

2.创建一个countries表,字段:主键country_id 定长2,不为空且唯一country_name 变长40,外键region_id

create table countries(
	country_id char(2) primary key,
	country_name varchar2(40) unique not null,
	region_id number references regions(region_id)
);

3.创建history表,字段:employee_id 数字6 不为空 外键employees表employee_id,start_date、end_date 不为空的日期,
约束:start_date<end_date,主键为employee_id和start_date

create table histroy(
	employee_id number(6) not null references employees(employee_id),
	start_date date not null,
	end_date date not null,
	constraint j_date_interval check (end_date > start_date)
	constraint date_pk primary key (employee_id,start_date)
);

修改表

修改表使用alter table语句添加列、修改列的数据类型与名字、将列设置为不可用、删除列、修改表名称等

alter table的语法有

alter table tablename
[add 列名 数据类型[约束]]	-- 添加
[modify 列名 修改后的数据类型]	--修改
[set unused column]	--设置单列为不可用状态
[set unused columns (列,列)] --多列设置
[drop column]	--删除单列
[如果需要删除约束则需要加上cascade constaints]
[drop (列,列)]	--删除多行
[drop unused 列]	--仅更新表的数据字典,先将字段置为不可用状态
[rename column 旧名|新名]	--修改列名
[rename to 新表名]	--修改表名

例题
emp添加2列

alter table emp add(name1 varchar(20),name2 date not null)

emp修改name数据类型

alter table emp modify name date;

emp修改名字

alter table emp rename column name1 to name2;

emp删除

alter table emp drop  column name1,name2 cascade constraints;--删除约束
alter table emp drop (name1,name2);--删除多行

emp改名

alter table emp rename to name;

设置unused

alter table emp unused column name;

修改约束

alter table name
[add [constraint] 类型(列,..[condition]]|
[modify column [not null]|[null]]|
[drop [constraint]|[primary key]|[unique()]][cascade 删除该约束的其他约束如外键]

例题

player表

名字类型
IDnumbser(6)
snonumber(6)
snamevarchar2(10)
sagenumber(6,2)
resumevarchar2(1000)

添加ID主键约束

alter table player add constraint P_PK primary key(ID);

添加sname唯一约束

alter table player add constraint P_UK unique(sname);

添加检查约束,检查年龄在20到30

alter table player add constraint P_CK check(sage between 20 and 30);

添加外键约束,sno是student(sno)的外键,

alter table player add constraint P_PK foreign key(sno) references student(sno) on delete cascade;

添加resume空/非空约束

alter table player modify resume not null;
alter table player modify resume null;
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只小余

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值