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进行底层开发更可笑的东西。

相关推荐
李广坤19 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest3 天前
数据库SQL学习
数据库·sql
jnrjian3 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark