标签:
约束的作用?
用来定义一些规则!确保数据的完整性,精确性,可靠性。防止错误或者无效的信息输入。
oracle中的5中约束:
1. 非空约束
字段是必须输入的,必须存在;
(1),创建表时创建非空约束;
语法:
CREATE TABLE table_name( column1_name datatype NOT NULL...... )
SQL> create table userinfo_1( 2 id number(6,0), 3 username varchar2(20) not null, 4 userpwd varchar2(20) not null 5 ); 表已创建。 SQL> desc userinfo_1 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD NOT NULL VARCHAR2(20) SQL>
(2),在修改表时添加非空约束;
语法:
ALTER TABLE table_name MODIFY column_name datatype NOT NULL;
当修改表的时候如果表中有数据可能导致修改错误,如下!
SQL> alter table userinfo 2 modify username varchar2(20) not null; alter table userinfo * 第 1 行出现错误: ORA-02296: 无法启用 (SYSTEM.) - 找到空值 SQL> delete from userinfo; 已删除4行。 SQL> alter table userinfo 2 modify username varchar(20) not null; 表已更改。 SQL> desc userinfo; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD VARCHAR2(20) EMAIL VARCHAR2(30) REGDATE DATE SQL>
(3),修改表时去除非空约束;
语法:
ALTER TABLE table_name MODIFY column_name datatype NULL;
SQL> desc userinfo; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME NOT NULL VARCHAR2(20) USERPWD VARCHAR2(20) EMAIL VARCHAR2(30) REGDATE DATE SQL> SQL> ALTER table userinfo 2 modify username varchar2(20) null; 表已更改。 SQL> desc userinfo; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NUMBER(6) USERNAME VARCHAR2(20) USERPWD VARCHAR2(20) EMAIL VARCHAR2(30) REGDATE DATE SQL>
2. 主键约束
主键约束确定表中的每行数据的唯一性;一张表中只可以设置一个主键约束,但是可以设置多个字段为主键(联合主键);
(1),创建表时设置主键约束:
语法:
CREATE TABLE table_name( column_name datatype PRIMARY KEY,...... );
SQL> SQL> create table userinfo_p( 2 id number(6,0) primary key, 3 username varchar2(20), 4 userpwd varchar2(20)); 表已创建。 SQL> desc userinfo_p; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ID NOT NULL NUMBER(6) USERNAME VARCHAR2(20) USERPWD VARCHAR2(20) SQL>
穿件联合主键约束:
语法:
CONSTRAINT constraint_name PRIMARY KEY(column_name1,......)
以上语句放在所有字段都写完之后的后面,用于创建联合主键约束!表级约束。
SQL> create table userinfo_p1( 2 id number(6,0), 3 username varchar2(20), 4 userpwd varchar2(20), 5 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>
查询某一张表的约束时:
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>
SQL> select constraint_name from user_constraints where table_name=‘USERINFO_P1‘; CONSTRAINT_NAME ------------------------------ PK_ID_USERNAME SQL>
(2),修改表时添加主键约束:
(3),更改约束的名称:
(4),删除主键约束:
3. 外键约束
4.检查约束
5. 唯一约束
标签:
原文地址:http://www.cnblogs.com/blogofwyl/p/4824802.html