1、oracle常见约束
primary key: 主键
foreigh key:外键
check:检查
unique:唯一
not null:非空
default:默认
2、概念
主键:表中能够用于唯一标识某行数据的某一列或多列的组合,通过主键在表中能找到唯一的一条记录,主键默认具有唯一非空的特性。
外键:表中某行数据的取值受自身表或者其他表的某列取值的限制,也就是说此列取值只能来自于某列的取值,则此列称为外键列。
3、删除数据库中的数据有几种语法?delete、truncate的区别?
使用范围:
truncate:删除表中所有数据
delete:删除表中所有数据(加条件则删除部分数据)
自动增加的序列:
truncate:从建表时的初始值开始
delete:在原有的值基础上增加
性能:
truncate:效率高,不写日志,不留痕迹
delete:效率略低,写日志,可以回滚,可以撤销
4、复制表
1)复制一张空表,表结构跟t_student完全一致(备份表事先必须存在)
CREATE TABLE 备份表名 AS SELECT * FROM 源表 WHERE 条件;
CREATE TABLE t_student_bk AS SELECT * FROM t_student WHERE 1=1;
2)备份表事先可以不存在
INSERT INTO t_student_bk3 SELECT s_id,'问题小生','男',23,s_hobby FROM t_student;
5、更新约束
语法:(约束的添加和删除)
ALTER TABLE table_name ADD CONSTRAINT constraint_name
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
-- 给选定的列设置为非空(当设定not null后,insert和update时此列必须指定值,除非此列有默认值)
ALTER TABLE t_teacher MODIFY s_sname VARCHAR2(30) NOT NULL;(若已存在s_sname为空的字段,则更改约束失败)
UPDATE t_teacher SET s_sname='未命名' WHERE s_sname IS NULL;(将为空的都改为“未命名”,那就变成非空了)
ALTER TABLE t_teacher MODIFY s_sname VARCHAR2(30) NOT NULL;
-- 给选定的列设置为空
ALTER TABLE t_teacher MODIFY s_sname VARCHAR2(30) NULL;
-- 设置唯一性
ALTER TABLE t_teacher ADD CONSTRAINT uq_teacher_id UNIQUE(s_id);
-- check检查约束
ALTER TABLE t_teacher ADD CONSTRAINT ck_teacher_age CHECK(s_age>=22 AND s_age<=60);
-- 增加外键
级联删除主键数据,当删除主键数据时,同时删除引用数据
ALTER TABLE t_teacher ADD CONSTRAINT fk_teacher_dpid FOREIGN KEY(department_id) REFERENCES t_department(d_id) ON DELETE CASCADE;
当主表数据删除时,从表(子表)外键列的值设置为null
ALTER TABLE t_teacher ADD CONSTRAINT fk_teacher_dpid FOREIGN KEY(department_id) REFERENCES t_department(d_id) ON DELETE SET NULL;