oracle对约束的一些操作
来源:互联网 发布:电子数据交换的意思 编辑:程序博客网 时间:2024/05/22 11:41
维护数据的完整性(主键,外键,唯一等等)
索引,建立索引(速度快)
管理oracle的权限和角色
数据的完整性
确保数据库的数据按照一定的商业和逻辑规则。数据完整性主要是以约束、触发器、应用程序(过程,函数)三个方面实现。约束容易维护并具有性能高,所以在维护数据的完整性上是首选。
约束
约束用于确保数据库数据满足特定的商业规则。约束包括:not null,(不空)unique(唯一);primary key,(主键)foreign key,(外键)和check(检查区间)五种。
Not null(非空)
在定义了一个字段为not null ,那么当插入数据时,必须这个列要提供数据。
Unique(唯一)
定义唯一约束后,该列值是不能重复的。但是可以为空null.
Primary key(主键)联合主键
用于唯一的标示表行的数据,当定义主见约束后,该列不但不能重复而且不能为空。
一张表只能有一个主键,但是可以有很多unique约束。
Foreign key(外键)
设置主表和从表之间的关系,外键约束要定义摘从表上,主表必须具有主键约束或者是 unique约束,当定义外检约束后,要求外检列束据必须在主表的主键列存在或者为null.
Check
强执行数据必须满足的条件,假定在sal 列上定义了check约束,并要求sal列值在1000-2000之间的,如果不在这个范围就提示出错。
通过实例说明下:
超市售货系统数据库表的设计和实现
假如现在又一个超市让你给开发一个售货系统,记录客户信息,购买信息。简单有三个表组成:
商品表goods(商品号 goodid,商品名字goodname,单价unitprice,商品类别category, 供应商provider);
客户表 customer(客户号customerid,姓名name,住址address, 电话call,性别sex,身份证cardid);
购买表 purchase(客户号customerid,商品号goodsid ,购买量nums);
1. 每个表都有主外键
2. 客户的姓名不能为空
3. 单价必须大于0,购买数量必须在1到30之间
4. 电话不能重复
5. 客户的性别必须是男或者女,默认是男
商品表
create table sp(spid char(8) primary key, 商品号为主键
2 spname varchar(30), 商品名字
3 dj number (10,2)check (dj>0), 单价大于0
4 lb varchar2(8), 类别
5 gys varchar2(30)); 供应商
客户表
create table kh(khid char(8) primary key,
khname varchar2(50) not null,
khaddress varchar2(50),
email varchar2(50) unique,
sex char(2)default '男'check (sex in ('男','女')),
cardid char(18));
购买表
Create table gm(khid char(8) references kh(khid),spid char(8) references sp(spid),sl number(10) check (sl between 1and 30));
如果在建立表的时候忘记了加约束条件,则可以在建立后采用alter table的方法添加,但是注意增加not null 权限的时候,需要使用modify选项,别四个的添加用add就可以。
6. 每个表都有主外键
7. 客户的姓名不能为空 (增加客户名字为不为空)alter table sp modify spname not null;
8. 单价必须大于0,购买数量必须在1到30之间
电话不能重复 (增加身份证也不重复)alter table kh add constraint card unique (cardid);
9.
10. 客户的性别必须是男或者女,默认是男
( 增加客户的地址在 海口、琼海、文昌、三亚、陵水等地。)alter table kh add constraint addresscheck check(khaddress in('海口'));
删除约束
当不需要约束条件的时候就可以把约束删除。
Alter table 表名字 drop constraint约束名称。
在删除主键约束的时候,可能有错误:
Alter table 表名 drop primary key
这是因为在这里如果两张表存在主从关系,那么在删除约束的时候,必须带 cascade 选项
Alter table 表明 drop primary key cascade;
显示约束信息
1.显示约束信息
通过查询数据字典试图 user_constraint 可以显示当前所有约束信息。
Select constraint_name,constraint_type,status,validated from user_constraints
Where table_name=’表名字’
2.显示约束列
通过查询数据字典试图user_cons_columns,可以显示约束所对应的表列信息
Select column_name ,position from user_cons_columns where constraint_name=’约束名’
3.采用图形界面直接使用工具查看。
列级定义
列级定义是在定义列的同时就直接定义了约束条件
create table sp(spid char(8) primary key,
注意not null 只能定义在列上。
表级定义
定义好了表之后再进行定义约束条件
Create table sa(sa_id number(8),sa_name varchar2(30),sp_id number(5), constaint aa primary key (sa_id), constaint bb foreign key (sp_id));
- oracle对约束的一些操作
- Oracle 约束的相关操作
- 数据库中的各种约束以及对约束的操作
- Oracle 数据库中关于对表字段约束的操作(设置、删除、查询)
- Oracle对表的基本操作(二)- 约束(Constraints )
- Oracle:SQL语句--对表的操作——添加主键约束
- Oracle:SQL语句--对表的操作——添加外键约束
- 对有主外键约束表数据的操作
- 对oracle表空间的一些常见操作
- 登陆ORACLE数据库和对数据库的一些简单操作
- Oracle中对时间操作的一些总结
- Linux下对oracle操作的一些常用命令
- oracle 一些约束限制
- Oracle表约束的sql操作
- Oracle数据库之操作表的约束
- oracle的一些操作
- oracle的一些操作
- oracle的一些操作
- day20
- Drupal7 安装成功后,管理员登录成功,但是提示拒绝访问
- Quartz教程 第6课 CronTrigger
- bzoj 3533: [Sdoi2014]向量集 线段树+凸包+二分
- 四大组件--ContentProvider
- oracle对约束的一些操作
- C++中将链表转换为数组描述的线性表
- 不说技术,不说潜规则, 说说职场上的小细节
- Linux Shell 基础(二)
- JavaWeb---Servlet的请求和响应
- Android 属性动画和添加图片
- 洛谷P1512 伊甸园日历游戏
- bzoj4027: [HEOI2015]兔子与樱花
- 作为一个运维工程师中的一员,现在开始我的博客之路.