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表
名字 | 类型 |
---|---|
ID | numbser(6) |
sno | number(6) |
sname | varchar2(10) |
sage | number(6,2) |
resume | varchar2(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 |