《02. oracle 对象管理--约束》
来源:互联网 发布:node.js 安装教程 编辑:程序博客网 时间:2024/06/05 14:42
字段约束是为了保证数据的合法性。 oracle 中常见的字段约束有: 非空约束(NK)、唯一约束(UK)、检查约束(CK)、主键约束(PK)、外键约束(FK)。oracle 中表的约束管理大致可以分为两类,一种是非空约束管理,另一种是其它的约束管理。
一 非空约束
oracle 常见的五种字段约束中非空约束比较特殊,特殊之处主要体现在对约束的管理上。
1. 设置非空约束:
1) 创建表时: 直接在字段后面添加 not null 即可,默认为可为空。
create table 表名称 ( 字段 类型 [default 默认值] [not null], 字段 类型 [default 默认值] [not null], ... constraint ... //约束 ...);
2)创建表后: alter table 表名称 字段名 字段类型 not null ;//使用修改表字段类型方式。
示例: alter table T_USER modify ID number not null;
2. 删除约束: alter table 表名称 字段名 字段类型; //使用修改表字段类型方式。
示例: alter table T_USER modify ID number null;
3. 测试: 当存在非空约束时,尝试插入空数据: insert into T_USER(NAME,AGE) values('zhangsan',18);
二 其它约束
对于唯一约束,主键约束,外键约束,检查约束创建和删除的语法基本类型。 在创建表的同时设置时,使用 constraint , 在创建表之后设置时 使用 alter table 表名称 add/modify/drop constraint xxxx; 推荐使用第二种方式,表定义只定义字段类型,默认值,非空约束,其它约束使用alter 语句进行设置。(pl sql 客户端工具亦是如此)
1. 唯一约束(UK):
1.名称: 推荐使用 UK_表名_字段名
2.创建: alter table T_USER add constraint UK_USER_ID unique(NAME);
3. 查询: 需要联合 user_cons_columns(用户字段表) 和 user_constraints(用户约束表) 表查询
select ucc.column_name, ucc.constraint_name, uc.constraint_typefrom user_cons_columns ucc, user_constraints ucwhere ucc.constraint_name = uc.constraint_name and ucc.table_name = 'T_USER';
4.删除: alter table T_USER drop constraint UK_USER_ID;
5.测试: 测试插入名称一样的数据:
2. 检查约束(CK):
1.名称: 推荐使用 CK_表名_字段名
2. 创建: alter table T_USER add constraint CK_USER_AGE check(AGE between 0 and 200);
3. 删除: alter table T_USER drop constraint CK_USER_AGE;
4.测试: insert into T_USER(ID,NAME,AGE) values(20,'zhangsan',500);
3. 主键约束(PK)
1.名称: 推荐使用 PK_表名_字段名
2. 创建: alter table T_USER add constraint PK_USER_ID primary key(ID);
3. 删除: alter table T_USER drop constraint PK_USER_ID;
4. 测试: 主键约束其实等价于 非空约束+唯一约束
4. 外键约束(FK)
1.名称: 推荐使用 FK_表名_字段名
2. 创建: alter table 子表名 add constraint 外键名 foreign key(字表字段) references 主表(主表字段)[on delete cascade]; //删除的时候,级联删除
alter table 子表名 add constraint 外键名 foreign key(字表字段) references 主表(主表字段) [on delete set null];//删除的时候设置为null
-- 清空目前存在的表和相关约束:先删除约束再删除表alter table T_ADDRESS drop constraint FK_ADDRESS_USER_ID;alter table T_USER drop constraint PK_USER_ID;drop table T_USER;drop table T_ADDRESS;create table T_USER(IDnumber,NAMEvarchar2(50),AGEnumber(3));create table T_ADDRESS(IDnumber,NAMEvarchar2(100),USER_IDnumber);-- 主表必须有主键alter table T_USER add constraint PK_USER_ID primary key(ID);-- 设置外键alter table T_ADDRESS add constraint FK_ADDRESS_USER_ID foreign key(USER_ID) references T_USER(ID);
3. 删除: alter table T_ADDRESS drop constraint FK_ADDRESS_USER_ID;
4. 测试: 测试插入数据, 需注意当外键为null 的时候能插入。
外键字段值为null 的时候,能插入成功。如果想为null 不能插入成功,则需添加 非空约束。
表与表直接设置外键关系能更高的保证数据一致性,与此同时,在修改表数据和表结构时也增加了一定的麻烦。 在删除主表数据的时候,字表数据可以级联删除,也可以字表数据外键字段设置为null, 如果设置为null, 就变成了脏数据。 在删除主表的时候,如果存在外键管理此字表,则不能删除,需先删除字表,或者删除外键之后,才能进行删除,或者使用强制删除的方式: drop table member cascade constraint purge; 忽略主外键约束,强制删除
- 《02. oracle 对象管理--约束》
- Oracle中约束的创建与管理之外键约束
- Oracle表管理以及约束笔记
- Oracle之约束的创建与管理
- oracle对象 约束索引 游标 函数
- oracle对象【约束,序列,索引,视图,同义词】
- ORACLE学习之路--管理数据完整性约束
- Oracle数据库表的完整性与约束管理
- oracle创建和管理表_数据处理_约束
- oracle创建和管理表_数据处理_约束
- oracle约束
- ORACLE 约束
- Oracle 约束
- Oracle约束
- Oracle约束
- oracle约束
- Oracle约束
- Oracle 约束
- selenium之 文件上传所有方法整理总结
- 关于一个失败程序生涯的自省。
- 《01. oralce 对象管理--表》
- Android侧边滑动菜单
- 面试技术汇总
- 《02. oracle 对象管理--约束》
- CentOS7+CDH2.7.2安装
- 《03. oracle 对象管理--视图》
- Ansible管理windows服务器-windows配置
- 《04. oracle 对象管理--索引》
- 编译原理4种文法类型
- 服务器端测试主要包含什么?
- 《05. oracle 用户管理》
- 反射获得其他类中的全部构造函数