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基础之约束的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE数据库的SQL语句之约束——基础篇

慕课网笔记之oracle开发利器-PL/SQL基础

数据库小技能:Oracle基础之关系

Oracle数据库开发SQL基础之操作表中数据

PL/SQL 之 基础

oracle数据库免费基础知识精讲视频分享!