创建表的时候在列级增加检查约束
在表级设置检查约束
检查约束可以有多个
create table userinfo_c
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0) check(salary > 0));
insert into userinfo_c values(1,'aaaa',-20);
表集的检查约束多数check开头
create table userinfo_c1
(id varchar2(10) primary key,
salary number(5,0),
constraint ck_salary check(salary>0));
CHECK
由于学到这里各种约束的表级创建格式相似,直接来一个综合运用!!!!
SQL> create table userinfo_c(id varchar2(10) primary key,username varchar2(20),salary number(5,0) check(salary>0));
表已创建。
先创建一个userinfo_c表等会儿作为外键主表,设定id为主键约束,salary为检查约束
SQL> create table userinfo_c1(id varchar2(10),username varchar2(20),salary number(5,0),constraint fk_username_c foreign key(username) references userinfo_c(username),constraint ck_salary check(salary>0),constraint pk_id_c primary key(id));
尝试创建一个userinfo_c1表,并一次性设定主键约束、外键约束(从表userinfo_c1的username字段引自主表userinfo_c表中的username)、检查约束
报错信息:
第 1 行出现错误:
ORA-02270: 此列列表的唯一关键字或主键不匹配
发生报错
SQL> alter table userinfo_c add constraint un_username_new unique(username);
表已更改。
经过检查发现被引用的主表userinfo_c的字段username并没有唯一键或主键,需要将userinfo_c的username增加唯一键
SQL> create table userinfo_c1(id varchar2(10) primary key,username varchar2(20),salary number(5,0),constraint fk_username_c foreign key(username) references userinfo_c(id),constraint ck_salary check(salary>0));
表已创建。
重新创建一个userinfo_c1表,并一次性设定主键约束、外键约束(从表userinfo_c1的username字段引自主表userinfo_c表中的username,约束名为fk_username_c)、检查约束
创建成功
--------------------------------------------------------------------------------------------------------
假定并不知道userinfo_c的唯一键 un_username_new被userinfo_c的外键fk_username_c所引用
SQL> alter table userinfo_c drop constraint UN_USERNAME_NEW;
第 1 行出现错误:
ORA-02273: 此唯一/主键已被某些外键引用
对userinfo_c的唯一键 un_username_new进行删除操作
报错提示已经被某些外键所引用,需要反查这个唯一键被哪些外键引用了
SQL> select constraint_name from user_constraints where r_constraint_name='UN_USERNAME_NEW';
CONSTRAINT_NAME
------------------------------
FK_USERNAME_CC
FK_USERNAME_C
在user_constraints表中的r_constraint_name就是外键的引用来源的键名称
--检查约束
--对输入的值,进行判断,能够满足一定的条件
--在创建表时创建检查约束
--1.在列级创建
CREATE TABLE 表名 (字段名 数据类型 CHECK(expressions表达式)); --语法
--示例
CREATE TABLE xcx_test_a (
id varchar2(10) primary key ,
username varchar2(20),
salary number(5) CHECK(salary>0)
);
INSERT INTO xcx_test_a VALUES(1,'aaa',1);
--2.在表级创建
-- CONSTRAINT 约束名字 CHECK(expressions表达式) --语法
--示例
CREATE TABLE xcx_test_b (
id varchar2(10) primary key ,
username varchar2(20),
salary number(5),
CONSTRAINT ck_salary CHECK(salary>0)
);
create table ( datatype check()) ;
建表时设置检查约束,表级设置
constraint constraint_name check(expressions)语法 create table userinfo_c1 (id varchar2(10) primary key, username varchar2(20), userpwd varchar2(20), salary number(5,0) constrant ck_salary check(salary>0)):
创建表时设置检查约束 (列级检查约束)及实例
create table table_name ( column_name datatype check(expressions),...) create table userinfo_c ( id varchar2(10) primary key, username varchar2(20), userpwd varchar2(20), salary number(5,0) check(salary>0));
在创建表时设置检查约束
列级
CREATE TABLE table_name(column_name datatype CHECK【检查约束关键字】(expressions【条件或表达式】),...)
----------------------------------------------
创建表
create table userinfo_c
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0) check(salary>0));
-----------------------------------
添加数据
insert into userinfo_c values(1,'aaa',-50);
----------------------------------------------------
表级
CONSTRAINT constraint_name CHECK(expressions);
-------------------------------------------------
创建表
create table userinfo_c1
(id varchar2(10) primary key,
username varchar2(20),
salary number(5,0),
constraint ck_salary check(salary>0));
这才是约束这个用法的核心吧,对数据进行约束
Oracle在创建表时设置检查约束(检查约束可以在一张表中有多个,并且也可以在列级和表级进行设置)
作用:让表中的数据更具有实际意义。
1、在创建表时设置检查约束。
语法:如图,列级设置检查约束,CHECK是检查约束关键字,括号内为检查约束的条件。
举例:创建用户信息表,它的工资表大于0,其中列级设置检查约束的名字是自动生成的,如图为SYS_C0011672,用于删除约束操作。
2、表级设置检查约语法:如图,它放置在创建完所有字段之后再写,检查约束的名字通常以C开头或者CK开头。
举例:表级设置检查约束。
Oracle在创建表时设置检查约束(检查约束可以在一张表中有多个,并且也可以在列级和表级进行设置)
作用:让表中的数据更具有实际意义。
1、在创建表时设置检查约束。
语法:如图,列级设置检查约束,CHECK是检查约束关键字,括号内为检查约束的条件。
举例:创建用户信息表,它的工资表大于0,其中列级设置检查约束的名字是自动生成的,如图为SYS_C0011672,用于删除约束操作。
2、表级设置检查约语法:如图,它放置在创建完所有字段之后再写,检查约束的名字通常以C开头或者CK开头。
举例:表级设置检查约束。
create table userinfo_c
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0) check (salary>0));列级设置检查约束
create table userinfo_c1
2 (id varchar2(10) primary key,
3 username varchar2(20),
4 salary number(5,0),
5 constraint ck_salary check(salary>0));表级设置检查约束
创建表的时候设置检查约束
列级设置:REATE TABLE table_name
(column_name datatype CHECK(expressions【表达式,即约束条件】),
...)
表级设置:CONSTRAINT constraint_name CHECK(expressions)
检查约束:让字段的值更有实际意义
在创建表时设置检查约束:
CREATE TABLE table_name( column_name datatype CHECK(expressions), ... )
CREATE TABLE table_name( column_name datatype, ..., CONSTRAINT constraint_name CHECK(expressions) )
检查2
检查
create table table_name (
column_name datatype check(expression),.....
);
create table table_name(
column_name datatype ,
constraint constraint_name check(expression)
);