(六)Oracle学习笔记—— 约束
1. 约束介绍
表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性。
按照约束的分类,一共有五种约束:非空约束、唯一约束、主键约束、检查约束、外键约束。
1.1 使用如下命令检索某个表上的所有约束(WHERE条件中的表名和用户名要大写)
select * from all_constraints
where
table_name='EMP' and owner='SCOTT';
对于表中的CONSTRAINT_TYPE
C:校验约束,表
O:只读约束
P:主键约束
R:外键约束
U:唯一约束
V:校验约束,视图
1.2 定义约束的方法有两种:列级约束定义和表级约束定义
以定义主键约束的方法来表现两种方法的区别
列级:
CREATE TABLE t_user( id INT PRIMARY KEY );
表级:
CREATE TABLE t_user( id INT , CONSTRAINT PK_USER_ID PRIMARY KEY (id) );
这里可以看出两者最显著的差别是定义时间上的不同,而且列级约束定义不能定义约束的名称。
1.3 约束命名规范
约束名称建议自己定义一套命名规则,否则使用系统生成的约束名,很难能把它和对应的表、字段联系起来。
- 非空约束 NN_表名_列名
- 唯一约束 UK_表名_列名
- 主键约束 PK_表名
- 外键约束 FK_表名_列名
- 条件约束 CK_表名_列名
- 默认约束 DF_表名_列名
如果约束名称超过32位长度,建议应该缩写表名,而不应用NN_表名_数字。不过具体视情况而定,很多时候 DF_表名_列名 这样命名,往往超出了32字符。所以有时候需要缩写表面或是采用其它规则。
2. 几种约束的介绍
http://www.cnblogs.com/mchina/archive/2012/09/10/2653423.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现