Oracle PL / SQL约束

约束是表及其列的规则,用于约束可以插入,更新或删除的数据的方式和数据。

约束对列和表都可用。

列约束

列可以具有定义可以将什么值列表输入到其中的规则。

NOT NULL约束意味着列必须具有值。

它不能为未知,或为空。

下表使用DDL创建具有NOT NULL列约束的作者表。

复制代码
CREATE TABLE authors ( 
    id number(38) not null, 
    name varchar2(100) not null, 
    birth_date date, 
    gender varchar2(30) 
); 

表约束

表可以具有强制列值的唯一性和与其他表中的其他行的关系的有效性的规则。

下面仅讨论三个:唯一键,主键和外键。

唯一键约束

唯一键约束是一个或多个列上的规则,它们要求值的组合是唯一的。

唯一索引或唯一约束中的列可以为NULL。

以下代码显示了根据作者表创建唯一约束的DDL。

复制代码
ALTER TABLE authors 
                 ADD CONSTRAINT authors_uk1 
                 UNIQUE ( name, birth_date, gender ); 

主键约束

主键约束是一个或多个列上的规则,它们要求值的组合是唯一的。

您应该为数据库中的每个表定义主键约束。

以下代码显示了DDL以针对作者表创建主键约束。

复制代码
ALTER TABLE authors ADD 
 CONSTRAINT authors_pk 
 primary key ( id ); 

创建主键约束的语法如下:

复制代码
ALTER TABLE <table_name> ADD 
CONSTRAINT <constraint_name> 
PRIMARY KEY ( 
<column_name_1>, 
<column_name_2>,... 
<column_name_N> ); 

其中<table_name>是表的名称,<constraint_name>是主键约束的名称,<column_name>是要在约束中使用的列。

外键约束

外键是来自另一个表的一个或多个列,指向或连接到第一个表的主键。

外键是用外键约束定义的。

外键约束是针对从属表或子表定义的。

以下代码显示了根据作者出版品表创建外键约束的DDL。

复制代码
ALTER TABLE author_books ADD 
 CONSTRAINT author_books_fk1 
 FOREIGN KEY (author_id) 
 REFERENCES authors (id); 

创建外键约束的语法如下:

复制代码
ALTER TABLE <table_name> ADD 
CONSTRAINT <constraint_name> 
FOREIGN KEY ( 
<column_name_1>, 
<column_name_2>,... 
<column_name_N> ) 
REFERENCES <referenced_table_name> ( 
<column_name_1>, 
<column_name_2>,... 
<column_name_N> ); 

<table_name>是要约束的表的名称,<constraint_name>是外键约束的名称,<referenced_table_name>是要引用的表的名称,<column_name>是同时属于引用表的键,并且对应于从属表中具有相同值的列。

以下代码显示了根据作者出版物表创建主键约束的DDL。

复制代码
ALTER TABLE author_books ADD 
CONSTRAINT author_books_pk 
PRIMARY KEY ( id); 

CSDN:程序猿 寄语:

1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。

2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。

3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。

4、程序不是年轻的专利,但是,他属于年轻。

5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。

6、一个好汉三个帮,程序员同样如此。

7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。

8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。

9、程序是我的生命,但我相信爱她甚过爱我的生命。

10、信念和目标,必须永远洋溢在程序员内心。

11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用JAVA进行底层开发更可笑的东西。

相关推荐
这个DBA有点耶4 小时前
NULL不是空——数据库里最反直觉的设计,90%新人踩过的坑
数据库·mysql·代码规范
这个DBA有点耶6 小时前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技6 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend7 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence10 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend1 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构
smallyoung1 天前
数据库乐观锁深度解析:MySQL、PostgreSQL 实战 + Spring Boot 集成指南
数据库·mysql·postgresql