oracle教程04 oracle中的约束和举例

SQL表约束详解
本文详细介绍了SQL中表的各种约束类型及其应用方法,包括主键、非空、唯一性、检查和外键约束,并提供了创建及修改表结构的具体语法示例。

例子:主键约束

--创建学生信息表
create table student(
	sid number(8,0),
	name varchar2(20),
	sex char(2),
	birthday date,
	address varchar2(50)
);

--修改表结构,为学生信息表添加主键约束
alter table student
add constraint sid_pk primary key(sid);

以上的操作也可以直接在创建表的时候一步到位:

--创建表时添加主键约束的两种方式
1.
create table student(
	sid number(8,0) primary key,
	name varchar2(20),
	sex char(2),
	birthday date,
	address varchar2(50)	
);

2.
create table student(
	sid number(8,0),
	name varchar2(20),
	sex char(2),
	birthday date,
	address varchar2(50),
        constraint sid_pk primary key(sid)
);
 

例子:非空约束

--修改表结构,添加非空约束
ALTER TABLE student MODIFY (name varchar2(20) NOT NULL);
--创建表时添加非空约束
create table student(
	sid number(8,0),
	name varchar2(20) not null,
	sex char(2) constraint nn_sex not null,
	birthday date,
	address varchar2(50),
	constraint sid_pk primary key(sid)
);

--删除非空约束的方式
ALTER TABLE student MODIFY sex char(2) NULL;

--禁用主键约束(无效化约束)
ALTER TABLE student DISABLE CONSTRAINT sid_pk;

--激活主键约束
ALTER TABLE student ENABLE CONSTRAINT sid_pk;

--删除主键约束
ALTER TABLE student DROP CONSTRAINT sid_pk;
ALTER TABLE student DROP PRIMARY KEY;


例子:唯一性约束

--创建表时添加唯一性约束
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    email varchar2(50) unique,
--    cardid varchar2(18),
--    constraint uk_cardid unique(cardid)
--);

--创建学生信息表
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    email varchar2(50) unique,
--    cardid varchar2(18)    
--);

--更改表结构,添加唯一性约束
--alter table student add constraint uk_student_cardid unique(cardid);

--禁用约束
alter table student disable constraint uk_student_cardid;

--彻底删除
alter table student drop constraint uk_student_cardid;


例子:检查约束

--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50)    
--);

--修改表添加检查约束的方式
--alter table student add constraint ck_sex check(sex='男' or sex='女');

--创建表时设置检查约束的方式:列级约束
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2) check(sex='男' or sex='女'),
--    birthday date,
--    address varchar2(50)    
--);

--创建表时设置检查约束的方式:表级约束
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    constraint ck_sex check(sex='男' or sex='女')    
--);

--禁用约束
--alter table student disable constraint ck_sex;

--彻底删除
alter table student drop constraint ck_sex;


例子:外检约束(注意:级联删除  : on delete cascade)

--主表
--create table department(
--    depid varchar2(10) primary key,
--    depname varchar2(30)
--);

--从表
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    depid varchar2(10)    
--);

--修改表时添加约束
--alter table student add constraint fk_depid foreign key(depid) references department(depid) on delete cascade;

--创建列级约束
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    depid varchar2(10) references department(depid) 
--);

--创建表级约束
--create table student (
--    sid number(8,0),
--    name varchar2(20),
--    sex char(2),
--    birthday date,
--    address varchar2(50),
--    depid varchar2(10),
--    constraint fk_depid foreign key(depid) references department(depid) on delete cascade
--);

--禁用约束
--alter table student disable constraint fk_depid;

--彻底删除
alter table student drop constraint fk_depid;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值