Oracle学习笔记(三)(二)
9
col comm for 9999
select * from emp;
--创建约束条件
--如果创建的约束条件没有命名,由
系统自动命名的.SYS_Cn.
--1.创建主键约束:
--1)建表时创建,可以建立在列级或表级.
--2)在建表后创建,建立在表级.
例1. --以student_ning为例
--创建主键约束,不命名,由系统命名,建立在列级.
create table student_ning(
id number primary key,
name varchar2(20),
email char(40),
registtime date default sysdate);
例2.
--创建主键约束,自己命名,建立在表级
--约束条件命名为:stuning1_id_pk
CREATE TABLE student_ning1(
id NUMBER,
name VARCHAR2(20),
CONSTRAINT stuning1_id_pk PRIMARY KEY(id));
例3.
--建表后创建主键约束
--约束条件名称自定义(stuning2_id_pk),最好有意义.
create table student_ning2(
id number,
name varchar2(20)
);
alter table student_ning2
add constraint stuning2_id_pk primary key (id);
--查看主键约束条件
select constraint_name, constraint_type
from user_constraints
where table_name='STUDENT_NING2';
--了解主键约束条件的作用.
insert into student_ning(id, name)
values(1234, 'peter');
--重复执行上一条语句,试图插入重复id值1234,将返回ORA-00001违反唯
一约束
--不提供主键值,将返回"id不能为空"错误
insert into student_ning(name)
values('peter');
--删除表
drop table student_ning;
--2.创建非空约束:只能建立在列级
create table student_ning1(
id number primary key,
name varchar2(20) not null);
select constraint_name, constraint_type
from user_constraints
where table_name='STUDENT_NING1';
--要求此列上必须有值.错误的sql:
insert into student_ning1(id) values(1);
--3.创建唯一约束
--email的唯一约束建立在列级
--nickname的唯一约束建立在表级
create table student_ning1(
id number primary key,
name varchar2(20),
nickname varchar2(20),
email char(30) unique,
constraint stu_ning1_nickname_uk1 unique(nickname));
--唯一约束允许为空,但不允许重复.
--4.check约束
create table student_ning2(
id number primary key,
name varchar2(20),
sex char,
constraint stuning2_sex_ck check (sex in ('M','F')));
--正确的例子:
insert into student_ning2 values(1234,'peter','M');
--错误的例子:
insert into student_ning2 values(1235,'chris','A');