定义约束
CREATE TABLE [schema.]table_name(
column_name datatype [default expr] [column_constraint],
...
[table_constraint] [,...]
);
- 列级约束:
column [CONSTRAINT constraint_name] constraint_type - 表级约束:column,...,[CONSTRAINT constrian_name] constraint_type(column,...) column 表示列名。
注意:如果不指定约束名,那么oracle会自动生成格式为SYS_Cnnn的约束名;如果指定约束名,那么必须指定CONSTRAINT选项。
定义Not Null 约束:列级约束
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/sJkBa3p3CPWT8V028r82pg==/3323656524999581664.jpg)
定义UNIQUE约束:列级或表级,可以为null
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/mFl_xKZlKd9CVPlN5bR8bw==/3328160124626952096.jpg)
定义PRIMARY KEY约束:列、表级
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/ViT8vdj_ObdzHL5w_WTASQ==/3228799457849131110.jpg)
定义 FOREIGN KEY 约束:要求外部键列的数据必须在主表的主键列(或惟一列)中存在
- FOREIGN KEY:用于指定在表级定义外部键约束。在列级定义外部键约束时不需要指定。
- REFERENCES:用于指定主表名及其主键列。
- ON DELETE CASCADE:如果定义了该选项,当删除主表数据时会级联删除从表的相关数据。
- ON DELETE SET NULL:如果定义了该选项,当删除主表数据时会将从表外部数据设置为NULL.
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/JUwNt7Ox_lEu30y7sEnRSQ==/3262294980077615291.jpg)
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/G-6QkEkDrQbg5xP5pLZWjA==/3301138526863727959.jpg)
定义CHECK约束:列表级,充许列为NULL
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/bl6tCa3oaG9fQyxO5LvjOw==/3289598052818610770.jpg)
定义复合主键
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img.ph.126.net/z6wuULPhwhLXm0LSidOwqg==/3283687078307694242.jpg)
维护约束
语法如下:
- 其它情况:
ALTER TABLE table ADD [CONSTRAINT constraint_name] constratint_type (column,..);
- 增加not null约束:
ALTER TABLE table MODIFY column [CONSTRAINT constraint_name] NOT NULL;
![ORACLE 约束 - 小猪 - 小猪_zjy ORACLE 约束 - 小猪 - 小猪_zjy](http://img313.ph.126.net/KlV5TuVC-i520eMv8E3M5w==/3682537120305636862.jpg)
修改维束名:ALTER TALBE table RENAME CONSTRAINT old_constraint_name to new _constraint_name;