Oracle数据库表操作的五种约束条件(主键、外键、非空、唯一、检查)

使用版本Oracle 12c

试验表:学生信息表 student(学号、姓名、性别、出生日期、家庭住址)

一、建立表

create table table_name(

column_name datatype,column datatype......);

datatype(数据类型)

  • 字符类型:char类型(固定长度,1-2000个字节),varchar2类型(可变长度,最大4000个字节)
  • 数值类型:number [(p[,s])],p表示精度(最高为38位),s表示小数点的位数                                                             例如 number (5,0) 最大为99999;number(5,2),最大为999.99
  • 日期类型:date
  • lob类型:数据类型专门用于存储大对象的数据,不超过4G字节,包括大文本、图像图像、视频剪切等(后续用到再更)

信息表student实现

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar(50)

);

约束(通过限制字段中的数据、记录中的数据、表之间的数据,保持数据完整性)

constraint  constraint_name

二、主键约束(primary key):唯一确定每一条记录的完整性,其值不能重复,不能空值。可以由一列或者多列构成

  • 表中直接添加约束

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar2(50),

constraint  pk_sid  primary key(sid)     --注释constraint  约束名  primary key ( 约束列)

);

  • 建表后再添加

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar2(50),

);

alter table student  add constraint pk_sid primary key(sid);

三、非空约束(not null):设置后不能定义为空值,此约束为列级约束(在建表说明约束时,只能跟在列级定义后)

--表中添加约束

create table student(

sid number(8,0),

name varchar2(20)  not null,

sex char(2)  constraint nn_sex not null,  --注释 constraint  约束名  not null

birthday date,

address varchar2(50),

constraint  pk_sid  primary key(sid)     

);

--建表后添加非空约束,需要用modify

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar2(50),

constraint  pk_sid  primary key(sid)     

);

alter table student modify (sex char(2) not null);

--删除非空约束条件 【特殊】

alter table student modify (sex char(2) null);

四、唯一约束(unique):防止输入重复信息

--表中

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),

cardid varchar2(18)

);

alter table student add constraint uk_cardid unique(cardid)

五、检查约束(check):对输入的值进行检查,限制输入的值

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 add constraint ck_sex check (sex='男' or sex='女')


六、外键约束(foreign key):建立和加强两个表

--主表

create table deparment(

depid varchar2(10),primary key,

dename carchar2(30),

);

--从表

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar2(50),

depid varchar2(10) reference department(depid)

);

--or

create table student(

sid number(8,0),

name varchar2(20) ,

sex char(2) ,

birthday date,

address varchar2(50),

deptid varchar2(10),

constraint fk_depid foreign key(depid) reference department (depid) on delete cascade

);  --注释 constraint 约束名  foreign key(列名) reference 主表名(列名) [是否联级删除] 


PS.

1、禁用和激活约束

alter table student disable/enable constraint 约束名;

2、删除约束

alter table student drop 约束名;

alter table student primary key;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值