Oracle创建和修改表、约束

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

创建表

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 numberregion_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是studentsno的外键,

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;
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: oracle