Oracle数据库开发SQL基础之约束
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle数据库开发SQL基础之约束相关的知识,希望对你有一定的参考价值。
约束的作用:定义规则、确保完整性
一、非空约束
1.在创建表时设置非空约束
CREATE TABLE userinfo_1
(id number(6,0),
username varchar2(20) not null,
userpwd varchar2(20) not null
)
2.在修改表时设置非空约束
DELETE FROM userinfo
ALTER TABLE userinfo
MODIFY username varchar2(20)not null
3.去除非空约束
ALTER TABLE userinfo
MODIFY username varchar2(20) null
二、主键约束:确保表当中每一行数据的唯一性(一张表只能有一个主键约束)
1.在创建表时设置主键约束
CREATE TABLE userinfo_2
(id number(6,0) PRIMARY KEY,
username varchar2(20),
userpwd varchar2(20)
)
CREATE TABLE userinfo_2s
(
id number(6,0),
username varchar2(20),
userpwd varchar2(20),
CONSTRAINT pk_id_username PRIMARY KEY(id,username))
2.在修改表时添加主键
ALTER TABLE userinfo
ADD CONSTRAINT pk_id PRIMARY KEY(id)
更改约束的名字
ALTER TABLE userinfo
RENAME CONSTRAINT pk_id to new_pk_id
3.删除主键约束
禁用约束
ALTER TABLE userinfo
DISABLE constraint new_pk_id
删除约束(DROP PRIMARY KEY)
ALTER TABLE userinfo
DROP CONSTRAINT new_pk_id
ALTER TABLE userinfo_2
DROP PRIMARY KEY
三、外键约束
1.在创建表的时候设置外键约束
创建主表
CREATE TABLE typeinfo
(
type varchar2(10) primary key,
typename varchar2(20)
)
创建从表并添加外键约束(列级)
CREATE TABLE userinfo_f
(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10) references typeinfo(type)
)
向主表中输入一个值
insert into typeinfo values(1,1)
向从表中输入一个值(向外键约束输入的值要么是主表中的值,要么是空值)
insert into userinfo_f(id,typeid_new) values(1,1)
insert into userinfo_f(id,typeid_new) values(1,null)
表级
CREATE TABLE userinfo_f2
(
id varchar2(10) primary key,
username varchar2(20),
typeid_new varchar2(10),
CONSTRAINT fk_typeid_new foreign key (typeid_new) references typeinfo(type) on delete cascade 并设置级联
)
2.在修改表的时候添加外键约束
CREATE TABLE userinfo_f4
(id varchar2(10)primary key,
username varchar2(20),
typeid_new varchar2(10)
)
ALTER TABLE userinfo_f4
ADD CONSTRAINT fk_typeid_alter foreign key (typeid_new) references typeinfo (type)
3.删除外键约束
禁用
ALTER TABLE userinfo_f4
DISABLE CONSTRAINT fk_typeid_alter
删除
ALTER TABLE userinfo_f4
DROP CONSTRAINT fk_typeid_alter
四、唯一约束:保证字段值的唯一性
与主键约束的却别 主键字段必须是非空的(一个表只能有一个) 唯一约束允许有一个空集(一个表可以有多个)
1.在创建表时设置唯一约束
列级添加 unique
CREATE TABLE userinfo_u
(
id varchar2(10),
username varchar2(20) unique,
userpwd varchar2(20)
)
表级设置唯一约束 CONSTRAINT约束的名字 unique
CREATE TABLE userinfo_u1
(
id varchar2(20) primary key,
username varchar2(20),
CONSTRAINT un_username unique (username)
)
2.修改表时添加唯一约束
CREATE TABLE userinfo_u2
(
id varchar2(20) primary key,
username varchar2(20)
)
ALTER TABLE userinfo_u2
ADD CONSTRAINT un_username_new unique(username)
3.删除约束
禁用唯一约束
ALTER TABLE userinfo_u2
DISABLE CONSTRAINT un_username_new
删除
ALTER TABLE userinfo_u2
DROP CONSTRAINT un_username_new
五、检查约束
1.在创建表时设置检查约束
列级CHECK(约束条件)
CREATE TABLE userinfo_c
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0) check(salary>0)
)
在表级设置检查约束
CREATE TABLE userinfo_d
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0),
CONSTRAINT ck_salary check (salary>0)
)
2.在修改表时添加检查约束
CREATE TABLE userinfo_d1
(
id varchar2(10)primary key,
username varchar2(20),
salary number(5,0)
)
ALTER TABLE userinfo_d1
ADD CONSTRAINT ck_salary_new check (salary>0)
3.删除检查约束
禁用 disable
alter table userinfo_d1
disable constraint ck_salary_new
删除drop
alter table userinfo_d1
drop constraint ck_salary_new
以上是关于Oracle数据库开发SQL基础之约束的主要内容,如果未能解决你的问题,请参考以下文章