Oracle表对象和约束

提示:以下是本篇文章正文内容,下面案例可供参考

一、SQL语言数据类型

在这里插入图片描述

在这里插入图片描述

二、表对象

1.创建表

//模板
create table 表名(字段属性)
create table stud(sid char(4),sname varchar2(20),score number(4,1));

2.修改表

(1)添加列
Alter table 表名 add 列名 列类型 default 值,……
alter table stud add csrq date;
(2)修改列名
Alter table 表名 rename column 旧列名 to 新列名
alter table stud rename column csrq to birthday;
(3)删除列
Alter table 表名 drop column 列名
alter table stu drop column score;
(4)修改表名
Rename 旧表名 to 新表名
rename stu to stu1;
(5)删除表
Drop table 表名
drop table stu;

三、约束

约束就是保证数据库完整性的方法,数据库的完整性就是为了保证数据的正确性。
概念:在数据表上强制执行的一些数据校验规则。当执行增、删、改操作时,数据必须符合在相关字段上设置的校验规则
作用:保证数据的准确性
内容:
非空、唯一、主键、外键和检查
分类:列级约束\表级约束

1.创建约束

约束条件是依附于表的,可以在建表时创建,也可以在建表后创建。
它是一种规则,和表一样存放在数据字典中。也需要命名,或者由系统自动命名。如果是用户命名,一般遵循以下格式:表名_列名_约束条件类型;而Oracle命名,则按照SYS_Cn的格式,其中n为一串数字。

建表时:直接加在列名后面
建表后:使用alter table 表名
+add constraint 约束名 约束类型(字段名)

使用修改方式添加约束
Alter table 表名 modify 字段名 约束类型

2.非空约束

含义:(not null)确保该字段值不为空。默认情况下,任何字段值都可以为空

1.在建表时创建非空约束
create table book(bid number(4) NOT NULL,title varchar2(20));
insert into book(title) values(‘tmie’);
2.建表后创建约束
alter table book modify(title NOT null);
alter table book modify(title varchar(2) NOT null);
3.添加列时,也可以直接添加约束
alter table book add author varchar2(10) NOT NULL;
4.在数据字典中查询约束
desc user_constraints;
select owner,constraint_name,constraint_type,table_name from user_constraints
where table_name=‘BOOK’;

注意:如果建表后为某列添加非空约束,并且表中该列数据已经存在null值,则向该列添加约束的行为将失败。这是因为列应用非空约束时,Oracle会检查表中所有的行,以验证所有行在对应列上是否存在空值。允许重复,不允许是空值

3.唯一约束

含义:(unique)保证字段或字段的组合不出现重复值。当给表的某个列定义了唯一约束条件时,该列的值不允许重复,但允许值是空值

1.建表时:创建唯一约束
create table student(sid number(4) constraint student_sid_nn not null,user_name varchar2(10),
email varchar2(20),constraint student_email_uk unique(email));
2.建表后:创建唯一约束
alter table student add constraint student_user_name_uk unique(user_name);
3.定义唯一约束后,字段值不允许重复
insert into student values(1001,‘jone’,‘3245@qq.com’);
insert into student values(1001,‘nice’,‘3245@qq.com’);
非空允许重复,所以第一个值没错。第三个值错了。
4.添加列时指定约束
alter table student add salary number(5,2) unique;
5.可以在多列上建立约束,必须是表级约束。
alter table student add(ri varchar2(4),qq varchar2(3));
alter table student add constraint ss unique(ri,qq);
6.在数据字典中查看约束信息
select owner,constraint_name,constraint_type from user_constraints
where table_name=‘STUDENT’;

4.主键约束

含义:从功能上看相当于非空且唯一。主键字段可以是单字段或多字段组合,意味着在主键约束下的单字段或多字段组合上不允许有空值,也不允许有重复值。
主键可以用来在表中唯一确定一行数据
在一个表上只允许建立一个主键,而其他约束条件则没有明确的个数限制。

1.建表同时创建列级主键约束,由系统自动赋予约束条件名称
create table student(sid number(4) primary key,user_name varchar2(10));
2.建表同时创建表级主键约束,自定义约束条件名称
drop table student;
create table student(sid number(4),user_name varchar2(10),constraint student_sid_pk primary key(sid));
3.建表后创建表级主键约束,自定义约束条件名称
create table student1(sid number(4),user_name varchar2(10));
alter table student1 add constraint student1_sid_pk primary key(sid);

5.约束------默认值

创建表时创建:
Create table table_name(columnu data_type default value)
修改表时创建:
Alter table table_name modify 字段名defaule value;

6.约束------外键

含义:该条件定义在两个表的两个字段或一个表的两个字段上,用于保证相关两个字段的关系。简单来说,就是外键用于与另一张表的关联。
条件
外键约束条件包括两个方面的数据约束:
1. 子表上定义的外键的列值,必须从主表被参照的列值中选取,或者为null
2. 当主表参照列的值被子表参照时,主表的该行记录不允许被删除。
操作

1.创建外键约束:
(1)主表要有主键:
(2)子表上对应主表主键的列建立外键约束
(3)验证:
不能删除主表上的值(如果子表使用了这个值)
子表中也不能插入主表主键没有的值
子表中可以插入空值(主表主键上对应的列)
(1) alter table dept2 add constraint dept2_deptno_pk primary key(deptno);
(2) alter table employee add constraint employee_deptno_fk foreign key(deptno)
references dept2(deptno);
2.在数据字典中查询
select constraint_name,constraint_type from user_constraints
where table_name=‘EMPLOYEE’;
3.删除操作中关键字on的使用
在创建约束时指定
(1)禁止删除,这是oracle默认的。
(2)on delete cascade:用于指定级联删除选项。
(3)on delete set null:用于删除主表时,将从表的外键列的值设置为null

7.约束------检查

含义:强制在字段上的每个值都要满足check中定义的条件。当定义了check约束的列新增或修改数据时,数据必须符合check约束中定义的条件。

  1. 建表时创建:
    create table usertable1(userid number(3),username varchar2(10),salary number(7,2)
    check (salary>800));
    2 .建表后创建 :
    alter table usertable add constraint usertable_salary check (salary>800);
    3.验证:
    insert into usertable values(101,‘rowd’,897);//执行成功
    insert into usertable values(102,‘rtyu’,798);//执行失败

四、约束的激活和禁用(了解就行)

表的完整性约束可以处于如下两种状态:
启用状态(ENABLE):启用状态下,约束将对表的插入或更新操作进行检查,与约束规则发生冲突的操作将被禁止。
禁用状态(DISABLE):禁止状态下,约束不再起作用,与约束规则发生冲突的表的插入或更新操作也能够成功执行。
(一)作用及意义
禁用约束是指让约束暂时失效,比如需要批量导入数据时,为了避免约束检查影响导入速度,可以先将约束禁用,导入完成后再将约束启用。
(二)语法
Alter table 表名 disable|enable constraint constraint_name [cascade]
(三)操作
(1)先查看约束:select table_name,constraint_name from user_constraints;
(2)禁用:alter table student disable constraint 约束名
(3)验证:
(4)重新启用:
alter table student enable constraint student_sid_pk;

小tips:修改约束名称
alter table 表名 rename constraint旧名 to 新名
删除约束
alter table 表名 drop constraint 约束名
Alter table 表名 drop primary key
Alter table表名 drop unique(字段名)
Alter table 表名 modify 字段名 数据类型 null;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值