CONSTRAINT
添加约束类型
创建表时定义约束
语法:create table 表名 (列名1 数据1类型 [default 默认值] [constraint 列约束],列名2 数据2类型 [default 默认值] [列约束] ...)
列级别约束,紧跟在创建字段名后面:CONSTRAINT 约束名 约束类型 (约束字段1)
表级别约束,逗号单独出来的子项,若括号内有多个约束字段,则是关联约束:CONSTRAINTS 约束名 约束类型 (约束字段1,约束字段2)
注:关联约束仅在列约束中出现
注:在字段名后直接写约束类型叫列级别约束(not null 只能存在于列级别约束)
注:单独逗号一个CONSTRAINTS叫表级别约束,在表级别约束时需要写约束名和约束字段,若括号内写了多个约束自动,则为
| CREATE TABLE 表名
(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);
|
主键约束,
注:联合主键约束写在一个括号呢!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 | --【主键约束】:唯一约束+非空约束
CREATE TABLE STUDENT(
SNO NUMBER(6) CONSTRAINTS PK_STUDENT PRIMARY KEY,--列级别约束
SNAME VARCHAR2(20)
);
CREATE TABLE STUDENT(
SNO NUMBER(6) PRIMARY KEY,--简写方式,主键名称会自动生成
SNAME VARCHAR2(20)
);
CREATE TABLE STUDENT(
SNO NUMBER(6) ,
SNAME VARCHAR2(20),
CONSTRAINT PK_STUDENT PRIMARY KEY(SNO)--表级别约束
);
--联合主键
--联合主键不能设置列级别约束
CREATE TABLE STUDENT(
SNO NUMBER(6),
SNAME VARCHAR2(20),
CONSTRAINT PK_STUDENT PRIMARY KEY(SNO,SNAME)--表级别约束
);
|
创建表级别约束
| create table emp7 (
id number default 100,
name varchar2(20) default 'test',
age number default 0 ,
comm varchar2(20) default 'nul',
constraint emp4_id primary key (id),
constraint emp4_name unique (name),
constraint emp4_age unique (age),
constraint emp4_comm unique (comm)
);
|
创建联合约束,(譬如一个组里有多个组员)
| create table emp9 (
id number default 100,
name varchar2(20) default 'test',
age number default 0 ,
comm varchar2(20) default 'nul',
constraint emp4_id1 primary key (id,name),
constraint emp4_age1 unique (age),
constraint emp4_comm1 unique (comm)
);
|
修改表,追加约束!
ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);
| --添加唯一约束
SQL> alter table emp1111 add constraint emp_222 unique (ID,NAME);
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDENT PRIMARY KEY(SNO);
ALTER TABLE STUDENT ADD CONSTRAINT UK_STUDENT_EMAIL UNIQUE(EMAIL);
|
修改约束类型
语法:alter table 表名 modify (字段名 constrain 约束名 约束类型)
| SQL> ALTER TABLE EMP1111 MODIFY (constraint emp_2_id PRIMARY KEY (ID));
Table altered
|
删除约束类型
ALTER TABLE 表名 DROP CONSTRAINT 约束名;
| SQL> ALTER TABLE EMP1111 DROP CONSTRAINT EMP_2_ID ;
Table altered
|