Oracle(四)约束

65 篇文章 0 订阅
64 篇文章 0 订阅
完整性约束

数据库中的数据正确性和相容性,用来防止想数据库中添加不合语义的数据.
表级别约束 : 定义在一个表中,可用于表中多列
列级别约束 : 对表中的一列进行约束,只能应用一列

约束的用途分类:
  1. primary key (主键约束)
    主键是由一列或多列组成,唯一标识
    在一个表中,只能定义一个主键约束
    不能重复,并且不能包含null.
    2.foreign key (外检约束)
    外键引用另一个表中的一列,取值范围只能是引用中以存在的值
    在使用外键约束的时候,被引用的列应该具有主键约束,或者具有唯一性约束.
    3.unique (唯一约束)
    只能存储唯一的值,可以存储null
    oralce将会自动为unique的列创建一个唯一索引
    可以在同一个列上建立not null和unique约束(主键约束)
    4.not null (非空约束)
    指定一列不允许存储空值,这就是一种强制的检查约束
    5.check (检查约束)
    指定一列的值必须满足某种条件
    在check约束的表达式中,必须引用表中的一个或多个列,并且表达式的运算结构是一个布尔值.
    一个列中可以定义多个检查约束
    检查约束可以定义在表和列上.
SQL> alter table book4 modify bookname not null;
	
	表已更改。
	
	SQL> desc book4;
	 名称                                      是否为空? 类型
	 ----------------------------------------- -------- ----------------------------
	 BOOKID                                    NOT NULL NUMBER(10)
	 BOOKNAME                                  NOT NULL VARCHAR2(40)
	 AUTHOR                                             VARCHAR2(40)
	 PRESS                                              VARCHAR2(40)
	 BOOKPRICE                                          NUMBER(4,2)
	 PRESSTIME                                          DATE
	
	SQL> alter table book4 modify bookname null;
	
	表已更改。
	
	SQL> desc book4;
	 名称                                      是否为空? 类型
	 ----------------------------------------- -------- ----------------------------
	 BOOKID                                    NOT NULL NUMBER(10)
	 BOOKNAME                                           VARCHAR2(40)
	 AUTHOR                                             VARCHAR2(40)
	 PRESS                                              VARCHAR2(40)
	 BOOKPRICE                                          NUMBER(4,2)
	 PRESSTIME                                          DATE

添加主键:

create table table_name(
		id number(10) primary key,
		
			...	
		
	)

为已经创建的表添加主键约束
alter table table_name add constraint pk_… primary key(列名)
alter table table_name add primary key(列名)

删除约束
alter table table_name drop constraint 约束的名称;

检查约束

create table book(
		age number(3) constraint ck_age check (age>0)
	)

	SQL> alter table book4 add constraint ck_book4_price check(bookprice>10);

	表已更改。

创建外键:

-- Create the table in the specified schema
	CREATE TABLE classes
	(
	    classid number(10) NOT NULL PRIMARY KEY, -- primary key column
	    cname NVARCHAR2(50) NOT NULL,
	    stunum NVARCHAR2(50) NOT NULL
	    -- specify more columns here
	);
	CREATE TABLE student(
	    sid number(4),
	    sname varchar2(30),
	    classid number(10) references classes(classid)
	);

为已有表添加外键:
alter table student add constraint fk_student_cid foreign key(classid) references classes(classid)
引用类型:
cascade
~ 如果定义外键约束时使用cascade关键字,那么当父表中被引用列删除时,子表中对应的数据将同时被删除.
set null
~ 当删除父表中引用列数据的时候,子表中的数据列将被设置成null
no action
~ 当删除父表中数据会被提示违反外键约束.
禁用和激活约束

SQL> insert into book4(bookid,bookname,bookprice) values(2,'aa',-5);
		insert into book4(bookid,bookname,bookprice) values(2,'aa',-5)
		*
		第 1 行出现错误:
		ORA-02290: 违反检查约束条件 (SYSTEM.CK_BOOK4_PRICE)
		
		
		SQL> alter table book4 disable constraint ck_book4_price;
		
		表已更改。
		
		SQL> insert into book4(bookid,bookname,bookprice) values(2,'aa',-5);
		
		已创建 1 行。

启用

SQL> alter table book4 enable constraint ck_book4_price;

		表已更改。

查询当前用户下所有约束

select * from user_constraints;

	hnkj
	
	create table user()tablespace hnkj

** 创建用户,创建表空间只有管理员可以创建

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值