当前位置:网站首页>oracle表的约束详解
oracle表的约束详解
2022-04-23 06:05:00 【旺财2】
Constraint 约束名
如不给约束指定起名,那么oracle会自动给约束起名
表级约束和列级约束
作用范围:
①列级约束只能作用在一个列上
②表级约束可以作用在多个列上(当然表级约束也可以作用在一个列上)
定义方式:列约束必须跟在列的定义后面,表约束不与列一起,而是单独定义。
非空(not null) 约束只能定义在列上
NOT NULL 非空约束
只能定义在列级:
CREATE TABLE test(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
hire_date DATE CONSTRAINT test_last_name NOT NULL
)
UNIQUE 数据唯一约束
注意:唯一约束,允许出现多个空值:NULL。
可以定义在表级或列级:
(注意看清楚逗号的分隔)
CREATE TABLE test(
employee_id NUMBER(6),
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
hire_date DATE NOT NULL,
CONSTRAINT test_email_uk UNIQUE(email)
);
PRIMARY KEY 主键约束
可以定义在表级或列级:
(1)数据不能为空
(2)数据要唯一
CREATE TABLE test(
employee_id NUMBER(6) PRIMARY KEY,
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
CONSTRAINT test_email_uk UNIQUE(email)
);
--又或者CONSTRAINT test_id_pk PRIMARY KEY(department_id)
FOREIGN KEY 外键约束
可以定义在表级或列级:
父表中的主键或者唯一键才可以被其他表引用为外键
CREATE TABLE test(
employee_id NUMBER(6) PRIMARY KEY,
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
department_id NUMBER(4) ,
hire_date DATE NOT NULL,
CONSTRAINT test_fk FOREIGN KEY (department_id) REFERENCES departments(department_id),
CONSTRAINT test_email_uk UNIQUE(email)
);
FOREIGN KEY 约束的关键字
FOREIGN KEY: 在表级指定子表中的列
REFERENCES: 标示在父表中的列
ON DELETE CASCADE(级联删除): 当父表中的列被删除时,子表中相对应的列也被删除
ON DELETE SET NULL(级联置空): 子表中相应的列置空
1.ON DELETE CASCADE
如果删除departments表的主键department_id,那么作为test表外键department_id所在的列的数据一起删除
2.ON DELETE SET NULL
如果删除departments表的主键department_id,那么作为test表外键department_id所在的位置为空
CREATE TABLE test(
employee_id NUMBER(6) PRIMARY KEY,
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
department_id NUMBER(4) ,
hire_date DATE NOT NULL,
CONSTRAINT test_fk FOREIGN KEY (department_id) REFERENCES departments(department_id) ON DELETE CASCADE CONSTRAINT test_email_uk UNIQUE(email)
);
CHECK 检查每行约束
定义每一行必须满足的条件
CREATE TABLE test(
employee_id NUMBER(6) PRIMARY KEY,
last_name VARCHAR2(25) UNIQUE,
email VARCHAR2(25),
salary NUMBER(8,2),
CONSTRAINT test_salary_min CHECK (salary > 0)
);
添加约束的语法
使用 ALTER TABLE 语句:添加或删除约束,但是不能修改约束,有效化或无效化约束;
使用 MODIFY 语句:添加 NOT NULL 约束;
ADD CONSTRAINT 添加约束
ALTER TABLE employees
ADD CONSTRAINT emp_manager_fk FOREIGN KEY(manager_id) REFERENCES employees(employee_id);
DROP CONSTRAINT 删除约束
ALTER TABLE employees DROP CONSTRAINT emp_manager_fk;
DISABLE CONSTRAINT 无效化约束
ALTER TABLE employees DISABLE CONSTRAINT emp_emp_id_pk;
ENABLE CONSTRAINT 激活约束
当定义或激活UNIQUE 或 PRIMARY KEY 约束时系统会自动创建UNIQUE 或 PRIMARY KEY索引
ALTER TABLE employees ENABLE CONSTRAINT emp_emp_id_pk;
USER_CONSTRAINTS 查询约束
SELECT constraint_name, constraint_type,search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES';
USER_CONS_COLUMNS 查询定义约束的列
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES';
如,
————————————————
原文链接:https://blog.csdn.net/weixin_42193004/article/details/89043148
版权声明
本文为[旺财2]所创,转载请带上原文链接,感谢
https://blog.csdn.net/wdyliuxingfeiyang/article/details/121516169
边栏推荐
- 将数组中指定的对象排在数组的前边
- Kubernetes coredns FAQ reference
- Redis practice notes and source code analysis
- Ali vector library Icon tutorial (online, download)
- Static interface method calls are not supported at language level ‘5‘ 异常解决
- 异常记录-6
- oracle库恢复数据
- OVS and OVS + dpdk architecture analysis
- 异常记录-5
- 10g数据库使用大内存主机时不能启动的问题
猜你喜欢
Winter combat camp hands-on combat - MySQL database rapid deployment practice lead mouse cloud Xiaobao
qs.stringify 接口里把入参转为&连接的字符串(配合application/x-www-form-urlencoded请求头)
Prometheus的relabel_configs和metric_relabel_configs解释及用法示例
Introduction to common APIs for EBFP programming
Try catch cannot catch asynchronous errors
mysql和pgsql时间相关操作
Apache Atlas 编译及安装记录
通过源码探究@ModelAndView如何实现数据与页面的转发
Dolphinscheduler配置Datax踩坑记录
Practice of openvswitch VLAN network
随机推荐
通过源码探究@ModelAndView如何实现数据与页面的转发
RAC环境集群组件gpnp未启动成功问题分析
Oracle索引状态查询与索引重建
mysql和pgsql时间相关操作
oracle库恢复数据
"Write multi tenant" implementation of Prometheus and thanos receiver
pycharm Install packages failed
专用窗口函数rank, dense_rank, row_number
RAC环境中openssh版本对SSH互信创建的影响
Exception record-8
Prometheus Thanos快速指南
Information:2021/9/29 10:01 - Build completed with 1 error and 0 warnings in 11s 30ms Error异常处理
When switch case, concatenate the error case and if of the conventional judgment expression and use L
select命令产生redo日志问题的分析
mysql和pg库遇到冲突数据时的两种处理方式
Apache SeaTunnel 2.1.0部署及踩坑
qs. In the stringify interface, the input parameter is converted into a & connected string (with the application / x-www-form-urlencoded request header)
几款电纸书阅读器参数对比
19C环境ORA-01035登陆报错处理
异常记录-12