[Oracle]面试官:你简单说说常用的4种约束

简介: 本文介绍了数据库表中的几种常见约束,包括主键、唯一键、外键、检查和非空约束。详细说明了每种约束的创建、删除及启用/禁用方法,特别强调了外键约束的级联操作和检查约束的正则表达式应用。建议多练习手写SQL命令以加深理解。

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://developer.aliyun.com/article/1634559
出自【进步*于辰的博客

参考笔记一,P22.18~22。

介绍

“约束”是一种对数据表字段存储数据的限制,分为主键(primary key)、唯一键(unique)、外键(foreign key)、check约束、not null约束。

操作命令:

--添加约束--
alter table 表名 add constraint 约束名 约束类型(字段);

--删除约束--
alter table 表名 drop constraint 约束名;

--启用/禁用约束--
alter table 表名 enable/disable constraint 约束名;

数据字典:

--当前用户旗下所有数据表的所有约束--
user_constraints
--当前用户旗下所有数据表的所有约束所属的字段名--
user_cons_columns

外键约束

外键会将两个数据表进行关联(子表字段数据来源主表,:子表相应字段可为 null),进而对子表相应字段的数据进行限制。

创建命令:

alter table 子表 add constraint 外键名 foreign key(字段1) references 主表(字段2);

这里就有个问题:若主表记录被删除,那么子表中相应数据该何去何从?

可在上述命令后增加一条子句,可以决定这些数据的去向,4种定义:

  1. on delete cascade:表示子表中相应数据将连同删除;
  2. on delete set null:表示子表中相应数据将被置空(null);
  3. Restrict:表示若子表中存在相应数据,则提示主表记录不能删除;
  4. on delete no action:表示子表不受影响。

这种机制也称为“级联删除”。必然的,另一种是“级联更新”,即on update,其取值也是以上4种。

check 约束

此约束用于限制数据范围,其内不允许使用伪列,如:rownum

创建命令:

alter table 表名 add constraint 约束名 check(条件);

示例:(注:创建命令是固定的,故示例中仅展示“条件”部分)

# 限制取值
sex in (0, 1)

# 限制范围
1、age > 0 and age < 120
2、age between 0 and 120
# 这样仅能用于限制整数,如“工资”此类的小数无法如此添加限制

# 限制模式
regexp_like(phone, '192\d{8}');        // 中国广电手机号
regexp_like(email, '\w+@[\w&&[^_]]+\.com');        // 邮箱
regexp_like(id_card, '^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$');    //  十八位身份证号
# 条件中可以使用函数,如sysdate、uid()、user()、userenv()

regexp_like()可查阅博文《[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配》中的【正则表达式相关函数】一栏。

not null 约束

添加约束命令:

alter table 表名 modify(字段 constraint 约束名 not null)

因为not null约束仅能定义于字段,即列约束,故不能使用...add constraint...命令添加。

最后

掌握约束,我建议:少用可视化工具(如:plsql、navicat)操作,手打命令。

本文完结。

目录
相关文章
|
2月前
|
SQL 存储 Oracle
[Oracle]知识点
本文主要介绍了Oracle数据库的相关知识点,包括数据类型、视图的使用及注意事项,并提供了详细的示例和扩展阅读链接。内容涵盖char族数据类型、number(a, b)数据类型、视图的创建与管理等,适合初学者和进阶用户参考学习。
59 4
[Oracle]知识点
Oracle-约束小结
Oracle-约束小结
46 0
|
存储 SQL Oracle
oracle知识点总结
oracle数据可系统是美国oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器或B/S体系结构的数据库之一,oracle数据库时目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完善的数据库管理功能,是关系型数据库,比mysql更为庞大,在现行的关系型数据库中排名第一(oracle、mysql、SqlServer),时间是最为精确的。
115 0
|
Oracle 关系型数据库
oracle学习59-oracle之高级子查询之课后练习
oracle学习59-oracle之高级子查询之课后练习
68 0
oracle学习59-oracle之高级子查询之课后练习
|
Oracle 关系型数据库
oracle学习84-oracle之单行函数之课后练习
oracle学习84-oracle之单行函数之课后练习
129 0
|
Oracle 关系型数据库
oracle学习80-oracle之单行函数之多表查询值之课后练习
oracle学习80-oracle之单行函数之多表查询值之课后练习
98 0
|
Oracle 关系型数据库
oracle学习78-oracle之单行函数之分组函数之课后练习
oracle学习78-oracle之单行函数之分组函数之课后练习
103 0
|
Oracle 关系型数据库
oracle添加唯一约束
oracle添加唯一约束
|
SQL Oracle 关系型数据库

推荐镜像

更多