Oracle二维表的创建与约束以及修改
创建表
create table 表名(
属性名 数据类型 行约束条件,
属性名 数据类型 行约束条件,
……
表级约束条件
)
字符串 char 使用指定长度的固定长度表示的字符串,位数不足的字符串在其后补空字符;
字符串 varchar 存放固定长度的字符串
字符串 varchar2 长度可变的字符串,动态分配内存空间(Oracle所特有的数据类型)
数字 number number(6,3)数据长度为6,其中3位为小数
日期 date
约束语句:
主键约束:非空唯一
列级约束 在所声明的字段名后添加primary key,
表级约束 constraint pk_表名_列名 primary key(字段名);pk_表名_字段名为约束名,可以省略
表已经创建:alter table 表名add constraint pk_表名_字段名 primary key(字段名);
删除约束 alter table 表名 drop constraint pk_表名_字段名;
非空约束:
列级约束 在所声明的字段名后添加not null,
表级约束 constraint ck_表名_字段名 check(字段名 is not null)
表已经创建 alter table 表名add constraint ck_表名_字段名 check(字段名 is not null)
删除约束 alter table 表名 drop constraint ck_表名_字段名;
检查约束
列级约束 在所声明的字段名后添加check(检查条件) 如:check(age>0&&age<100)
表级约束 constraint ck_表名_字段名 check(检查条件)
表已经创建 alter table 表名add constraint ck_表名_字段名 check(检查条件)
删除约束 alter table 表名 drop constraint ck_表名_字段名;
唯一约束
列级约束 在所声明的字段名后面直接添加unique
表级约束 constraint un_表名_字段名 unique(字段名)
表已经创建 alter table 表名add constraint un_表名_字段名 unique(字段名)
删除约束 alter table 表名 drop constraint un_表名_字段名
外键约束
列级约束 在所声明的字段名后添加references 父表名(列名)
表级约束 constraint fk_表名_字段名 foreign key(字段名) references 父表名(字段名)
表已经创建 alter table 表名add constraint fk_表名_字段名 foreign key(字段名) references 父表名(字段名)
删除约束 alter table 表名 drop constraint fk_表名_字段名;
外键的缺点:被引用的表不能直接删除内部数据(被引用的)
解决方法一、先解除关联,再删除
解决方法二、加关键字 on delete
on delete cascade 级联父表数据被删除时,与对应字表中数据与删除
on delete set null 级联父表数据被删除时,与对应字表中数据中的外键值置为null(外键不能添加非空约束)
二维表表的修改
添加新的字段:alter table 表名 add 字段名 数据类型类型 ;
修改字段类型:alter table 表名 modify 字段名 新数据类型;
修改字段名 :alter table 表名 rename column 字段名 to 新字段名;
删除字段 :alter table 表名 drop column 字段名;
删除表 :drop table 表名;
修改表名 :rename 表名 to 新表名;
查看表结构 :desc 表名;