赞
踩
# 建表 SQL> create table userinfo_1 (id number(6,0), username varchar2(20) not null, userpwd varchar2(20) not null); 表已创建。 # 查看表中字段 SQL> desc userinfo_1 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD NOT NULL VARCHAR2(20) # 插入id,失败 SQL> insert into userinfo_1(id) values(1); insert into userinfo_1(id) values(1) * 第 1 行出现错误: ORA-01400: 无法将 NULL 插入 ("SYSTEM"."USERINFO_1"."USERNAME") # 插入数据 SQL> insert into userinfo_1(id,username,userpwd) values(1,'jack','123123'); 已创建 1 行。 # 查询表中数据 SQL> select * from userinfo_1; ID USERNAME USERPWD ---------- -------------------- -------------------- 1 jack 123123
# 尝试在修改表时添加非空约束,发现报错,需要把表中数据删除,再添加非空约束 SQL> alter table userinfo modify username varchar2(20) not null; alter table userinfo modify username varchar2(20) not null * 第 1 行出现错误: ORA-02296: 无法启用 (SYSTEM.) - 找到空值 # 删除表中数据 SQL> delete from userinfo; 已删除3行。 # 在修改表时添加非空约束 SQL> alter table userinfo modify username varchar2(20) not null; 表已更改。 # 查询字段 SQL> desc userinfo 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD VARCHAR2(20) EMAIL VARCHAR2(30) REGDATE DATE
SQL> alter table userinfo modify username varchar2(20) null;
表已更改。
SQL> desc userinfo
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NUMBER(6)
USERNAME VARCHAR2(20)
USERPWD VARCHAR2(20)
EMAIL VARCHAR2(30)
REGDATE DATE
SQL> create table userinfo_p (id number(6,0) primary key, username varchar2(20), userpwd varchar2(20));
表已创建。
SQL> desc userinfo_p;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(6)
USERNAME VARCHAR2(20)
USERPWD VARCHAR2(20)
SQL> create table userinfo_p1 (id number(6,0), username varchar2(20), userpwd varchar2(20), constraint pk_id_username primary key(id,username)); 表已创建。 SQL> desc userinfo_p1 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD VARCHAR2(20) SQL> desc user_constraints 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) CONSTRAINT_NAME NOT NULL VARCHAR2(30) CONSTRAINT_TYPE VARCHAR2(1) TABLE_NAME NOT NULL VARCHAR2(30) SEARCH_CONDITION LONG R_OWNER VARCHAR2(30) R_CONSTRAINT_NAME VARCHAR2(30) DELETE_RULE VARCHAR2(9) STATUS VARCHAR2(8) DEFERRABLE VARCHAR2(14) DEFERRED VARCHAR2(9) VALIDATED VARCHAR2(13) GENERATED VARCHAR2(14) BAD VARCHAR2(3) RELY VARCHAR2(4) LAST_CHANGE DATE INDEX_OWNER VARCHAR2(30) INDEX_NAME VARCHAR2(30) INVALID VARCHAR2(7) VIEW_RELATED VARCHAR2(14) SQL> select constraint_name from user_constraints where table_name='USERINFO_P1'; CONSTRAINT_NAME ------------------------------ PK_ID_USERNAME SQL> select constraint_name from user_constraints where table_name='USERINFO_P'; CONSTRAINT_NAME ------------------------------ SYS_C0011161
SQL> alter table userinfo add constraint pk_id primary key(id); 表已更改。 SQL> desc user_constraints 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) CONSTRAINT_NAME NOT NULL VARCHAR2(30) CONSTRAINT_TYPE VARCHAR2(1) TABLE_NAME NOT NULL VARCHAR2(30) SEARCH_CONDITION LONG R_OWNER VARCHAR2(30) R_CONSTRAINT_NAME VARCHAR2(30) DELETE_RULE VARCHAR2(9) STATUS VARCHAR2(8) DEFERRABLE VARCHAR2(14) DEFERRED VARCHAR2(9) VALIDATED VARCHAR2(13) GENERATED VARCHAR2(14) BAD VARCHAR2(3) RELY VARCHAR2(4) LAST_CHANGE DATE INDEX_OWNER VARCHAR2(30) INDEX_NAME VARCHAR2(30) INVALID VARCHAR2(7) VIEW_RELATED VARCHAR2(14) SQL> select constraint_name from user_constraints where table_name='USERINFO'; CONSTRAINT_NAME ------------------------------ PK_ID
SQL> alter table userinfo rename constraint pk_id to new_pk_id;
表已更改。
SQL> select constraint_name from user_constraints where table_name='USERINFO';
CONSTRAINT_NAME
------------------------------
NEW_PK_ID
SQL> alter table userinfo disable constraint new_pk_id;
表已更改。
SQL> select constraint_name,status from user_constraints where table_name='USERINFO';
CONSTRAINT_NAME STATUS
------------------------------ --------
NEW_PK_ID DISABLED
SQL> alter table userinfo drop constraint new_pk_id;
表已更改。
SQL> select constraint_name,status from user_constraints where table_name='USERINFO';
未选定行
SQL> desc userinfo_p 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(6) USERNAME VARCHAR2(20) USERPWD VARCHAR2(20) SQL> alter table userinfo_p drop primary key; 表已更改。 SQL> desc userinfo_p 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME VARCHAR2(20) USERPWD VARCHAR2(20)
SQL> create table typeinfo (typeid varchar2(10) primary key, typename varchar2(20)); 表已创建。 SQL> create table userinfo_f (id varchar2(10) primary key, username varchar2(20), typeid_new varchar2(10) references typeinfo(typeid)); 表已创建。 SQL> insert into typeinfo values(1,1); 已创建 1 行。 SQL> insert into userinfo_f(id,typeid_new) values(1,2); insert into userinfo_f(id,typeid_new) values(1,2) * 第 1 行出现错误: ORA-02291: 违反完整约束条件 (SYSTEM.SYS_C0011167) - 未找到父项关键字 SQL> insert into userinfo_f(id,typeid_new) values(1,1); 已创建 1 行。 SQL> insert into userinfo_f(id,typeid_new) values(2,null); 已创建 1 行。
SQL> create table userinfo_f2 (id varchar2(10) primary key, username varchar2(20), typeid_new varchar2(10),constraint fk_typeid_new foreign key(typeid_new)references typeinfo(typeid));
表已创建。
SQL> create table userinfo_f3 (id varchar2(10) primary key, username varchar2(20), typeid_new varchar2(10),constraint fk_typeid_new1 foreign key(typeid_new)references typeinfo(typeid) on delete cascade);
表已创建。
SQL> create table userinfo_f4 (id varchar2(10) primary key, username varchar2(20), typeid_new varchar2(10));
表已创建。
SQL> alter table userinfo_f4 add constraint fk_typeid_alter foreign key(typeid_new) references typeinfo(typeid);
表已更改。
SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_F4'; CONSTRAINT_NAME C STATUS ------------------------------ - -------- SYS_C0011172 P ENABLED FK_TYPEID_ALTER R ENABLED SQL> alter table userinfo_f4 disable constraint FK_TYPEID_ALTER; 表已更改。 SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_F4'; CONSTRAINT_NAME C STATUS ------------------------------ - -------- SYS_C0011172 P ENABLED FK_TYPEID_ALTER R DISABLED
SQL> alter table userinfo_f4 drop constraint FK_TYPEID_ALTER;
表已更改。
SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_F4';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
SYS_C0011172 P ENABLED
SQL> create table userinfo_u (id varchar2(10) primary key, username varchar2(20) unique, userpwd varchar2(20));
表已创建。
SQL> create table userinfo_u1 (id varchar2(10) primary key, username varchar2(20), constraint un_username unique(username));
表已创建。
SQL> create table userinfo_u2 (id varchar2(10) primary key, username varchar2(20));
表已创建。
SQL> alter table userinfo_u2 add constraint un_username_new unique(username);
表已更改。
SQL> alter table userinfo_u2 disable constraint UN_USERNAME_NEW;
表已更改。
SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_U2';
CONSTRAINT_NAME C STATUS
------------------------------ - --------
SYS_C0011178 P ENABLED
UN_USERNAME_NEW U DISABLED
SQL> alter table userinfo_u2 drop constraint UN_USERNAME_NEW;
表已更改。
SQL> create table userinfo_c (id varchar2(10) primary key, username varchar2(20), salary number(5,0) check(salary>0));
表已创建。
SQL> insert into userinfo_c values(1,'aaa',-50);
insert into userinfo_c values(1,'aaa',-50)
*
第 1 行出现错误:
ORA-02290: 违反检查约束条件 (SYSTEM.SYS_C0011180)
SQL> insert into userinfo_c values(1,'aaa',50);
已创建 1 行。
SQL> create table userinfo_c1 (id varchar2(10) primary key, username varchar2(20), salary number(5,0), constraint ck_salary check(salary>0));
表已创建。
SQL> create table userinfo_3 (id varchar2(10) primary key, username varchar2(20), salary number(5,0));
表已创建。
SQL> alter table userinfo_3 add constraint ck_salary_new check(salary>0);
表已更改。
SQL> desc userinfo_3 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NOT NULL VARCHAR2(10) USERNAME VARCHAR2(20) SALARY NUMBER(5) SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_3'; CONSTRAINT_NAME C STATUS ------------------------------ - -------- SYS_C0011184 P ENABLED CK_SALARY_NEW C ENABLED SQL> alter table userinfo_3 disable constraint ck_salary_new; 表已更改。 SQL> select constraint_name,constraint_type,status from user_constraints where table_name='USERINFO_3'; CONSTRAINT_NAME C STATUS ------------------------------ - -------- SYS_C0011184 P ENABLED CK_SALARY_NEW C DISABLED
SQL> alter table userinfo_3 drop constraint ck_salary_new;
表已更改。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。