(5)Oracle基础--约束
2015-11-14 21:24
501 查看
· 约束的作用
<1> 定义规则
<2> 确保数据的完整性
· 约束
[b] <1> 非空约束[/b]
[b] ① 创建表时为字段添加非空约束[/b]
[b] CREATE TABLE table_name [/b][b]([/b]
[b] column_name data_type NOT NULL, [/b][b]... [/b][b]);[/b]
[b] ② 为已存在的表字段添加非空约束[/b]
[b] ALTER TABLE table_name MODIFY column_name data_type NOT NULL;[/b]
[b] [b][b]③ 删除已存在的表字段的非空约束[/b][/b][/b]
[b][b][b] [b][b]ALTER TABLE table_name MODIFY column_name data_type NULL;[/b][/b][/b][/b][/b]
[b] <2> 主键约束[/b]
[b] 作用: 确保表中每条记录的唯一性[/b]
[b] 设置为主键的字段必须非空,唯一,且一张表中只能有一个主键,但是一个主键也可以由多个字段组成,称为联合主键. [/b]
[b] ① 创建表时设置主键约束[/b]
[b] CREATE TABLE table_name[/b][b]([/b]
[b] column_name data_type PRIMARY KEY, ... [/b][b]);[/b]
[b] 或[/b][b] [/b]
[b] CREATE TABLE [b][b]table_name[/b][/b][/b](
column_name data_type , ...
[b] CONSTRAINT constraint_name [b][b]PRIMARY KEY(column_name1,column_name2....) [/b][/b][/b]);
P:第二种方式设置的约束称为表级约束,可以设置联合主键.
可以从数据字典user_constraints中查看某个表的约束信息.
[b] ② 在已存在的表中添加主键约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name1,column_name2 , ...); [/b]
[b][b][b] (注意: 添加主键时,必须确保此字段下的数据都是非空且唯一的)[/b][/b][/b]
[b] ③ 修改主键约束的名称[/b]
[b][b][b] [b][b][b][b]ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_[b][b][b][b][b][b][b][b]constraint_name[/b][/b][/b][/b][/b][/b][/b]; [/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b] ④ 删除主键约束[/b] [/b][/b]
[b] [b][b][b][b][b][b][b][b]ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b]
[b] 或[/b]
[b] [b][b][b][b][b][b][b][b][b][b]ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] PRIMARY KEY [CASCADE] ; [/b][/b]
[b] P: [b][b][b][b]禁用/启用 约束[/b][/b][/b][/b][/b]
[b][b][b][b][b] [b][b][b][b][b][b][b][b][b][b]ALTER TABLE table_name DISABLE/ENABLE CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b][/b][/b][/b][/b]
[b] <3> 外键约束[/b]
[b] [b][b]① 创建表时设置外键约束[/b] [/b][/b]
[b] CREATE TABLE table1 (
[/b]
[b] column_name data_type REFERENCES table2 (column_name), [/b][b]... [/b][b]);[/b]
[b] P: 一般称table1为从表,table2为主表,[/b]
[b] 注意: 1. 设置外键时,引用的主表的字段必须是主键;
[/b]
[b] 2. 主外键必须是同一个数据类型;
[/b]
[b] 3. 外键字段的值必须来自对应的主键的值,或者为NULL; [/b]
[b] 或[/b]
[b] CREATE TABLE table1([/b]
[b] [b][b]column_name data_type , [/b][/b][/b][b][b][b]...[/b][/b][/b]
[b] CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table2 (column_name) [ON DELETE CASCADE][/b][b] ); [/b]
[b] [b][b][b][b]② 在已存在的表中添加外键约束[/b][/b][/b][/b][/b]
[b][b][b][b][b] ALTER TABLE table1 [/b][/b][/b][/b][/b][b]ADD CONSTRAINT constraint_name[/b]
[b] FOREIGN KEY (column_name) REFERENCES table2(column_name) [ON DELETE CASCADE];[/b]
[b] ③ 删除外键约束[/b]
[b][b][b][b][b][b][b][b][b] ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b]
[b] <4> 唯一约束 [/b]
[b] ① 唯一约束与主键约束的区别:[/b]
[b] 1. 主键约束必须唯一且不能为NULL,唯一约束允许有一个NULL;[/b]
[b] 2. 一张表中主键约束只能有一个,而唯一约束可以有多个;[/b]
[b] ② [b][b][b][b]创建表时设置唯一约束[/b] [/b][/b][/b][/b]
[b][b][b] CREATE TABLE table_name([/b][/b][/b]
[b] column_name data_type UNIQUE , ... );[/b]
[b][b][b] 或[/b][/b][/b][b] [/b]
CREATE TABLE [b][b][b][b]table_name[/b][/b][/b]([/b]
[b] [b][b]column_name data_type , [/b][/b][/b][b][b][b]...[/b][/b][/b]
[b] CONSTRAINT constraint_name UNIQUE(column_name)[/b][b]); [/b]
[b] ③ 在已存在的表中添加唯一约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);[/b]
④ 删除唯一约束
[b][b]ALTER TABLE table_name DROP CONSTRAINT constraint_name ;[/b] [/b]
[b] <5> 检查约束[/b]
[b] 作用: 使表中的值更具有实际意义[/b]
[b] ① 创建表时设置检查约束[/b]
[b] CREATE TABLE table_name([/b]
[b] column_name data_type CHECK(expressions), ... );[/b]
[b] 或[/b]
[b] [b][b]CREATE TABLE table_name([/b][/b][/b]
column_name data_type , ...
CONSTRAINT constraint_name CHECK([b][b]expressions[/b]));[/b]
[b] ② 在已存在的表中添加检查约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);
[/b]
③ 删除检查约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
· 小结
[b] <1> 主键约束一张表中只能有一个,但是一个主键可以由多个约束组成;[/b]
[b] <2> 外键约束是唯一一个涉及两个表之间的约束;[/b]
[b] <3> 只有非空约束只能在列级设置,不能再表级设置,且非空约束没有名称;[/b]
[b] <4> 可以通过user_constraints数据字典查看约束的名称.[/b]
作者:caobotao
出处: /article/5260169.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
<1> 定义规则
<2> 确保数据的完整性
· 约束
[b] <1> 非空约束[/b]
[b] ① 创建表时为字段添加非空约束[/b]
[b] CREATE TABLE table_name [/b][b]([/b]
[b] column_name data_type NOT NULL, [/b][b]... [/b][b]);[/b]
[b] ② 为已存在的表字段添加非空约束[/b]
[b] ALTER TABLE table_name MODIFY column_name data_type NOT NULL;[/b]
[b] [b][b]③ 删除已存在的表字段的非空约束[/b][/b][/b]
[b][b][b] [b][b]ALTER TABLE table_name MODIFY column_name data_type NULL;[/b][/b][/b][/b][/b]
[b] <2> 主键约束[/b]
[b] 作用: 确保表中每条记录的唯一性[/b]
[b] 设置为主键的字段必须非空,唯一,且一张表中只能有一个主键,但是一个主键也可以由多个字段组成,称为联合主键. [/b]
[b] ① 创建表时设置主键约束[/b]
[b] CREATE TABLE table_name[/b][b]([/b]
[b] column_name data_type PRIMARY KEY, ... [/b][b]);[/b]
[b] 或[/b][b] [/b]
[b] CREATE TABLE [b][b]table_name[/b][/b][/b](
column_name data_type , ...
[b] CONSTRAINT constraint_name [b][b]PRIMARY KEY(column_name1,column_name2....) [/b][/b][/b]);
P:第二种方式设置的约束称为表级约束,可以设置联合主键.
可以从数据字典user_constraints中查看某个表的约束信息.
[b] ② 在已存在的表中添加主键约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name1,column_name2 , ...); [/b]
[b][b][b] (注意: 添加主键时,必须确保此字段下的数据都是非空且唯一的)[/b][/b][/b]
[b] ③ 修改主键约束的名称[/b]
[b][b][b] [b][b][b][b]ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_[b][b][b][b][b][b][b][b]constraint_name[/b][/b][/b][/b][/b][/b][/b]; [/b][/b][/b][/b][/b][/b][/b][/b]
[b][b][b] ④ 删除主键约束[/b] [/b][/b]
[b] [b][b][b][b][b][b][b][b]ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b]
[b] 或[/b]
[b] [b][b][b][b][b][b][b][b][b][b]ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] PRIMARY KEY [CASCADE] ; [/b][/b]
[b] P: [b][b][b][b]禁用/启用 约束[/b][/b][/b][/b][/b]
[b][b][b][b][b] [b][b][b][b][b][b][b][b][b][b]ALTER TABLE table_name DISABLE/ENABLE CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b][/b][/b][/b][/b]
[b] <3> 外键约束[/b]
[b] [b][b]① 创建表时设置外键约束[/b] [/b][/b]
[b] CREATE TABLE table1 (
[/b]
[b] column_name data_type REFERENCES table2 (column_name), [/b][b]... [/b][b]);[/b]
[b] P: 一般称table1为从表,table2为主表,[/b]
[b] 注意: 1. 设置外键时,引用的主表的字段必须是主键;
[/b]
[b] 2. 主外键必须是同一个数据类型;
[/b]
[b] 3. 外键字段的值必须来自对应的主键的值,或者为NULL; [/b]
[b] 或[/b]
[b] CREATE TABLE table1([/b]
[b] [b][b]column_name data_type , [/b][/b][/b][b][b][b]...[/b][/b][/b]
[b] CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES table2 (column_name) [ON DELETE CASCADE][/b][b] ); [/b]
[b] [b][b][b][b]② 在已存在的表中添加外键约束[/b][/b][/b][/b][/b]
[b][b][b][b][b] ALTER TABLE table1 [/b][/b][/b][/b][/b][b]ADD CONSTRAINT constraint_name[/b]
[b] FOREIGN KEY (column_name) REFERENCES table2(column_name) [ON DELETE CASCADE];[/b]
[b] ③ 删除外键约束[/b]
[b][b][b][b][b][b][b][b][b] ALTER TABLE table_name [b][b][b][b][b][b][b][b][b][b][b][b][b][b][b][b]DROP[/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b][/b] CONSTRAINT constraint_name [/b][/b][/b][/b][/b][/b][/b][/b];[/b][/b]
[b] <4> 唯一约束 [/b]
[b] ① 唯一约束与主键约束的区别:[/b]
[b] 1. 主键约束必须唯一且不能为NULL,唯一约束允许有一个NULL;[/b]
[b] 2. 一张表中主键约束只能有一个,而唯一约束可以有多个;[/b]
[b] ② [b][b][b][b]创建表时设置唯一约束[/b] [/b][/b][/b][/b]
[b][b][b] CREATE TABLE table_name([/b][/b][/b]
[b] column_name data_type UNIQUE , ... );[/b]
[b][b][b] 或[/b][/b][/b][b] [/b]
CREATE TABLE [b][b][b][b]table_name[/b][/b][/b]([/b]
[b] [b][b]column_name data_type , [/b][/b][/b][b][b][b]...[/b][/b][/b]
[b] CONSTRAINT constraint_name UNIQUE(column_name)[/b][b]); [/b]
[b] ③ 在已存在的表中添加唯一约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);[/b]
④ 删除唯一约束
[b][b]ALTER TABLE table_name DROP CONSTRAINT constraint_name ;[/b] [/b]
[b] <5> 检查约束[/b]
[b] 作用: 使表中的值更具有实际意义[/b]
[b] ① 创建表时设置检查约束[/b]
[b] CREATE TABLE table_name([/b]
[b] column_name data_type CHECK(expressions), ... );[/b]
[b] 或[/b]
[b] [b][b]CREATE TABLE table_name([/b][/b][/b]
column_name data_type , ...
CONSTRAINT constraint_name CHECK([b][b]expressions[/b]));[/b]
[b] ② 在已存在的表中添加检查约束[/b]
[b] ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(expressions);
[/b]
③ 删除检查约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name ;
· 小结
[b] <1> 主键约束一张表中只能有一个,但是一个主键可以由多个约束组成;[/b]
[b] <2> 外键约束是唯一一个涉及两个表之间的约束;[/b]
[b] <3> 只有非空约束只能在列级设置,不能再表级设置,且非空约束没有名称;[/b]
[b] <4> 可以通过user_constraints数据字典查看约束的名称.[/b]
作者:caobotao
出处: /article/5260169.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
相关文章推荐
- 20151114 shell脚本控制oracle随系统启动
- oracle学习方略
- oracle数据库中的锁简单的认识
- OracleApps 什么是Back to Back Order?
- oracle一视图性能问题
- oracle中的replace函数应用
- Oracle导入dmp备份文件到不同的表空间中
- Oracle导入dmp备份文件到不同的表空间中
- oracle建表实现序列ID自增
- oracle11g 查看空表及数据库导出报“ EXP-00003: 未找到段 (0,0)
- Linux安装oracle常用命令
- Oracle常见问题
- “ORA12560: TNS:协议适配器错误” 解决方法
- plsql+绿色版oracle连接远程数据库配置及提示缺少msvcr71.dll解决方法
- oracle命令
- oracle 11g RAC 的一些基本概念(一)
- oracle 11g RAC 的一些基本概念(二)
- 1. Oracle概念笔记一序言
- 关于oracle upgrade与migration的文档
- 初学者Oracle 11g安装常见错误