【Oracle学习】之 约束
一、非空约束
//在创建表时设置非空约束
create table userinfo_1 (id number(6,0),username varchar2(20) not null,userpwd varchar2(20) not null);
desc userinfo_1
//在修改表时添加非空约束
alter table userinfo modify username varchar(20) not null;
desc userinfo
//在修改表时去除非空约束
alter table userinfo modify username varchar(20) null;
desc userinfo
二、主键约束作用:确保表当中每一行数据的唯一性(1)创建主键约束
//1.在创建表时设置主键约束(列级)
语法:CREATE TABLE table_name(
column_name datatype PRIMARY KEY,...);
//2.在创建表时设置主键约束(表级)
语法:CREATE TABLE table_name(
column_name datatype,...,CONSTRAINT pk_name PRIMARY KEY(column_name1,...)); //pk_name 通常用pk_column1_column2表示
//3.数据字典:user_constraints 可以查看某个表中的主键约束信息。desc user_constraints
查看约束的名字:select constraint_name from user_constraints where table_name='tbl_name';表名要大写
//1.在创建表时设置主键约束(列级)
create table userinfo_p (id number(6,0) primary key,username varchar2(20),userpwd varchar2(20));
desc userinfo_p
//2.在创建表时设置主键约束(表级)
create table userinfo_p1 (id number(6,userpwd varchar2(20),constraint pk_id_username primary key(id,username));
desc userinfo_p1
//3.查看某个表中的主键约束信息
desc user_constraints
select constraint_name from user_constraints where table_name='USERINFO_P1';
x` (2)修改约束
//修改表时添加主键约束
ADD CONSTRAINT constraint_name PRIMARY KEY(column_name1,...);
alter table userinfo add constraint pk_id primary key(id);
desc userinfo
select constraint_name from user_constraints where table_name='USERINFO';
//更改约束的名字
alter table userinfo rename constraint pk_id to new_pk_id;
//禁用/启用约束
alter table userinfo disable constraint new_pk_id;
select constraint_name,status from user_constraints where table_name='USERINFO';
//删除约束
alter table userinfo drop constraint new_pk_id;
select constraint_name,status from user_constraints where table_name='USERINFO';
alter table userinfo_p drop primary key;
三、外键约束(1)创建外键约束
//创建表时设置外键约束
create table userinfo_f (id varchar2(10) primary key,typeid_new varchar2(10) references typeinfo(typeid));
insert into typeinfo values(1,1);
insert into userinfo_f(id,typeid_new)values(1,1);
//在创建表时设置外键约束
create table userinfo_f2 (id varchar2(10) primary key,typeid_new varchar2(10),constraint fk_typeid_new foreign key(typeid_new)references typeinfo(typeid));
create table userinfo_f3 (id varchar2(10) primary key,constraint fk_typeid_new1 foreign key(typeid_new)references typeinfo(typeid) on delete cascade);
//在修改表时添加外键约束
alter table userinfo_f4 add constraint fk_typeid_alter foregin key(typeid_new)references typeinfo(typeid);
(2)删除外键约束
//禁用外键(开启外键 enable)
select constraint_name,status from user_constraints where table_name='USERINFO_F4';
alter table userinfo_f4 disable constraints FK_TYPEID_ALTER;
//删除外键约束
alter table userinfo_f4 drop constraint FK_TYPEID_ALTER;
四、唯一约束(1)创建唯一约束
//列级唯一约束
create table userinfo_u (id varchar(10) primary key,username varchar2(20) unique,userpwd varchar2(20));
//表级唯一约束
create table userinfo_u1 (id varchar2(10) primary key,constraints un_username unique(username));
(2)添加表唯一约束
create table userinfo_u2 (id varchar2(10) primary key,username varchar2(20));
alter table userinfo_u2 add constraint un_username_new unique(username);
(3)删除唯一约束//查看约束状态
select constraint_name,status from user_constraints where table_name='USERINFO_U2';
//禁用/启用唯一约束:
disable/enable constraint constraint_name;
//删除唯一约束:
drop constraint constraint_name
五、检查约束(1)在创建表时设置检查约束
//在创建表时设置检查约束(列级)
create table userinfo_c (id varchar2(10) primary key,salary number(5,0) check(salary>0));
insert into userinfo_c values(1,'aa',-50);
//在创建表时设置检查约束(表级)
create table userinfo_c1 (id varchar2(10) primary key,0) constraint ck_salary check(salary>0));
(2)在修改表时添加检查约束
create table userinfo_c3 (id varchar2(10) primary key,0) );
alter table userinfo_c3 add constraint ck_salary_new check(salary > 0);
(3)删除检查约束
//查看
select constraint_name,status from user_constraints where table_name='USERINFO_C3';
//禁用检查约束
alter table userinfo_c3 disable constraint CK_SALARY_NEW;
//删除约束
alter table userinfo_c3 drop constraint CK_SALARY_NEW;
简单作业关于student 和teacher两表外键 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |