使用版本Oracle 12c
试验表:学生信息表 student(学号、姓名、性别、出生日期、家庭住址)
一、建立表
create table table_name(
column_name datatype,column datatype......);
datatype(数据类型)
- 字符类型:char类型(固定长度,1-2000个字节),varchar2类型(可变长度,最大4000个字节)
- 数值类型:number [(p[,s])],p表示精度(最高为38位),s表示小数点的位数 例如 number (5,0) 最大为99999;number(5,2),最大为999.99
- 日期类型:date
- lob类型:数据类型专门用于存储大对象的数据,不超过4G字节,包括大文本、图像图像、视频剪切等(后续用到再更)
信息表student实现
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar(50)
);
约束(通过限制字段中的数据、记录中的数据、表之间的数据,保持数据完整性)
constraint constraint_name
二、主键约束(primary key):唯一确定每一条记录的完整性,其值不能重复,不能空值。可以由一列或者多列构成
- 表中直接添加约束
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
constraint pk_sid primary key(sid) --注释constraint 约束名 primary key ( 约束列)
);
建表后再添加
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
);
alter table student add constraint pk_sid primary key(sid);
三、非空约束(not null):设置后不能定义为空值,此约束为列级约束(在建表说明约束时,只能跟在列级定义后)
--表中添加约束
create table student(
sid number(8,0),
name varchar2(20) not null,
sex char(2) constraint nn_sex not null, --注释 constraint 约束名 not null
birthday date,
address varchar2(50),
constraint pk_sid primary key(sid)
);
--建表后添加非空约束,需要用modify
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
constraint pk_sid primary key(sid)
);
alter table student modify (sex char(2) not null);
--删除非空约束条件 【特殊】
alter table student modify (sex char(2) null);
四、唯一约束(unique):防止输入重复信息
--表中
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
email varchar2(50) unique,
cardid varchar2(18),
constraint uk_cardid unique(cardid)
);
--表后修改
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
email varchar2(50),
cardid varchar2(18)
);
alter table student add constraint uk_cardid unique(cardid)
五、检查约束(check):对输入的值进行检查,限制输入的值
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) check(sex='男'or sex='女’),
birthday date,
address varchar2(50),
);
--或者
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
constraint ck_sex check(sex='男’or sex='女’)
);
--建表后再添加
alter table student add constraint ck_sex check (sex='男' or sex='女')
六、外键约束(foreign key):建立和加强两个表
--主表
create table deparment(
depid varchar2(10),primary key,
dename carchar2(30),
);
--从表
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
depid varchar2(10) reference department(depid)
);
--or
create table student(
sid number(8,0),
name varchar2(20) ,
sex char(2) ,
birthday date,
address varchar2(50),
deptid varchar2(10),
constraint fk_depid foreign key(depid) reference department (depid) on delete cascade
); --注释 constraint 约束名 foreign key(列名) reference 主表名(列名) [是否联级删除]
PS.
1、禁用和激活约束
alter table student disable/enable constraint 约束名;
2、删除约束
alter table student drop 约束名;
alter table student primary key;