signed

QiShunwang

“诚信为本、客户至上”

Oracle数据库教程(第四章DDL语句2)笔记

2021/4/26 21:18:55   来源:

Oracle数据库教程

  • 四、DDL语句_表的操作2
    • 数据的完整性和约束性
    • 4.1 非空约束
    • 4.2 主键约束
    • 4.3 唯一约束
    • 4.4 外键约束
    • 4.5 检查约束
    • 4.6 默认约束

四、DDL语句_表的操作2

数据的完整性和约束性

为了维护数据库中数据的完整性,在创建表的时候常常需要定义一些约束。
约束类型:
• 非空约束 not null
• 主键约束 primary key
• 唯一约束 unique
• 外键约束 foreign key
• 检查约束 check
• 默认约束 default

什么时候定义?
• 创建表时
• 修改表时

4.1 非空约束

• 非空约束是限制必须为某个列提供值。

空值(null)不存在的值,它既不是数字,也不是空字符串,而是不存在,未知的情
况。

例:

  1. 创建表时添加非空约束
--创建Books表,要求BookNo(图书编号),BookName不为null
create table Books
(
BookNo number(10) not null,
BookName varchar2(10) not null,
author varchar2(5),
price number
);
  1. 创建完成后修改非空约束
    alter table modify

例:
为Books表中price字段设置非空约束

alter table Books modify price not null
  1. 删除非空约束(改某个列为空)
alter table Books modify price null;

4.2 主键约束

• 主键约束用于唯一的标识表中每一行记录
• 在一个表中,最多有一个主键约束,
• 可以由两个或者两个以上列来组成(联合主键)。
• 主键约束默认具有非空约束的特性。

  1. 创建表的同时添加主键约束

例:创建表book,包括name,no,price,author,其中no为主键约束。(同Mysql)

create table book1
(
No number(10) ,         --后面直接加primary key也正确,但无法像sql server借助工具看到约束名
Name varchar2(10),
author varchar2(5),
price number,
constraint PK_NO primary key(no)  --最后写约束,区别sql server创建表的同时添加约束
);
  1. 创建表时未定义主键约束,可使用以下格式来添加主键约束
    alter table 表名 add constraint 约束名字 primary key(列名)

例:

alter table Books add constraint PK_B primary key(BookNo);
  1. 删除主键约束
    alter table 表名 drop constraint 约束的名字

例:
删除Books表的主键约束

alter table Books 
drop constraint PK_B;

4.3 唯一约束

• 唯一性约束(unique)
• 强调所在的列不能有相同的值,可以有空值。
• 格式:constraint 约束名 unique

  1. 创建表的同时添加唯一约束

例:
创建一个会员Members,并要求为该表的QQ列定义一个唯一性约束

--创建一个会员Members,并要求为该表的QQ列定义一个唯一性约束
create table Members
(
MemNo number(4) primary key,
MemName varchar2(20) not null,
Phone varchar2(20),
Email varchar2(30),
QQ varchar2(20) constraint QQ_UK unique
);
  1. 给现有的列添加唯一约束
    alter table 表名 add constraint 约束的名字 unique(列名)

例:
给Member表Email列添加唯一约束

alter table Members add constraint UK_E unique(Email);
  1. 删除email列的唯一约束
    alter table 表名 drop constraint 约束名
    例:
alter table Members drop constraint UK_E;

4.4 外键约束

• 外键约束使用两个表进行关联
• 外键是指==“当前表”引用“另外一个表”==(即被引用表)的某个列
被引用的列必须具有主键约束或者唯一约束

  1. 添加外键约束
    例:
    利用Members表创建新表m1
create table m1
as select * from Members;

设置m1的QQ列引用Members表的QQ列。

alter table m1
add constraint FK_QQ foreign key(QQ) references members(QQ);
  1. 创建表的时候创建约束
create table Mem
(
no number not null,
QQ varchar2(20) ,
constraint FK_Q foreign key(QQ) references MEMBERS(QQ)
);

查看某一个表中约束的名字
select * from user_constraints where table_name=‘表名’

例:
查看m1中约束的名字

select * from user_constraints where table_name='m1'

4.5 检查约束

4.6 默认约束