约束;约束;约束

约束
约束的分类:行级约束和表级约束

行级约束:建表时跟在字段定义后面,约束当前行定义的列的约束叫做行级约束
表级约束:建表时写在所有字段定义之后的约束,它可以约束某个列或者多个列

1.not null 非空约束
列名 数据类型 not null       --行级约束语法

not null:表示这个列的值不能为空

注意:not null是唯一个行级约束,不能写成表级约束

2.unique 唯一约束
列名 数据类型 unique       --行级约束语法
unique:表示这个列的值在整个表的数据中,是唯一的不可重复

constraint 约束名 unique(列名)  --表级约束,在所有列定义之后
约束名:自定义  
3.primary key 主键约束
列名 数据类型  primary key         --行级约束语法
primary key:是not null和unique的结合,表示这个列的值不能为空且不能重复

constraint 约束名 primary key(列名[,列名])   --表级约束
在表级约束中,如果有多个列时,表示这几个列为联合主键()

4. foreign key 外键约束
列名 数据类型 references 主表名(主表主键列)    --行级约束语法

foreign key:表示这个列的取值,只能在主表的主键列的值中去取

create table emp_t(
   empno number(7) primary key, --主键约束
   ename varchar2(30) not null,  --非空约束
   job varchar2(30),
   sal number(7,2),
   hiredate date,
   deptno number(7) references dept(deptno) --外键约束
);

constraint 约束名 foreign key(外键列) references 主表名(主表主键列)  --表级约束

5.check 检查约束
列名 数据类型 check(约束条件)   --行级约束

check:表示这个列的取值要满足check后面的约束条件

drop table user_info;
create table user_info(
    id number(11) primary key,
    name varchar2(30) not null,
    age number(3) check(age>0 and age<150),
    sex number(1) default 0,
    pwd varchar2(20),
    constraint ck_pwd check(length(pwd)>8)
);

constraint约束名 check(约束条件)  --表级约束


6.修改表和约束
1.给表添加一个列
alter table 表名 add 列名 数据类型 [约束] [default 默认值];
2.删除表中的一个列
alter table 表名 drop column 列名;
3.修改一个列的类型
alter table 表名 modify 要修改的列名 数据类型 [约束] [default 默认值];

修改列时,如果列有数据,不能直接修改列的数据类型,只能把它长度增加,但不能减少。

如果要将有数据的列的长度减小,可以在表中增加一个新列和原来的列数据类型和长度完全相同,将要修改的列的数据放入新增加的列里
然后,1把要修改的这个列里的数据清空,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里
      2.把要修改的列删除,再增加一个同名列,修改列的数据长度,之后将数据从新增的临时列中更新到修改后的列里

alter table 表名 modify 列名 数据类型 not null;  --给一个列添加not null 约束
alter table 表名 modify 列名 数据类型 null   --给一个列去掉非空约束
--修改表的列名字
--alter table 表名 rename colnum 旧的名字 to 新的名字
4.增加一个约束
alter table 表名 add 表级约束语法;

alter table 表名 add constraint 约束名 unique(列名)

alter table 表名 add constraint 约束名 primary key(列名[,列名])

alter table 表名 add constraint 约束名 foreign key(外键列) references 主表名(主表主键列)

alter table 表名 add constant 约束名 check(约束条件)

5.删除一个约束
alter table 表名 drop constraint 约束名;

表级约束有名字,行级约束系统会给分配一个名字sys_


注释 comment

给表加注释
comment on table 表名 is '注释';

comment on table user_info is '用户基础信息表';

comment on column 表名.列名 is '注释';

comment on column user_info.id is '主键';
comment on column user_info.name is '用户姓名';
comment on column user_info.age is '用户年龄';
comment on column user_info.sex is '性别';
comment on column user_info.pwd is '用户密码'; 

select * from user_col_comments where table_name='USER_INFO';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值