唯一约束: 如果有一列添加了唯一约束,那么就代表如果这一列有值的话,
这个值必须唯一,不能跟其他的值一样; 但是这一列允许位空值;
即:可以为空值,但是一旦有值必须唯一;
例如:手机号 银行卡号
定义: 在所有列定义完之后加逗号, unique(列名)
drop table human;
create table human(
id char(18),
name varchar2(30),
sex char(2),
age number(9),
telephone number(11),
unique(telephone)
);
主键约束: 是非空和唯一的集合;
如果有一列添加了主键约束,那么这一列的取值不能为空值,而且取值要唯一;
例如:身份证号、 学号、职工编号、药品编号、商品编号等等
主键:是用来唯一标示一行数据的; 主键一般都是编号;
定义:在所有列定义完之后加逗号, primary key(列名)
建议每个表都要添加主键约束;
drop table human;
create table human(
id char(18),
name varchar2(30),
sex char(2),
age number(9),
telephone number(11),
primary key(id)
);
检查约束:自定义约束;自己决定限制条件;
如果有一列添加了检查约束,那么符合检查条件的数据可以进入到表中,不符合就进不去;
例如: 驾校 年龄在18~70之间 age>=18 and age<=70 age between 18 and 70
定义: 在所有列定义好了之后加逗号, check(1个或者多个检查条件) ---跟查询条件一样
drop table human;
create table human(
id char(18),
name varchar2(30),
sex char(2),
age number(9) ,
telephone number(11),
check(age>=18 and age<=70)
);
外键约束(完整性约束): 涉及到2个表; 父表和子表 ; 子表中的数据要依赖于父表; 即:父表中得先有这个数据,子表才能使用;
外键约束是加在子表中; 父表中得先有这个数据,子表才能使用;
定义: 在所有列定义完之后加逗号, foreign key(子表外键列名) references 父表名(父表主键列名)
insert into emp values('8889','xiaobai','CLERK','7902',sysdate,4000,null,80);
select * from dept; --部门表 父表
select * from emp; ---子表
insert into dept values(80,'美女部','xian');
职工跟部门
学生跟系别的关系
公民(籍贯)和省份表
公民表: 增加一列,籍贯 ;
省份表: 省份编号 省份名称
---先创建父表
drop table
create table province_tab(
pro_id number(3),
pro_name varchar2(30),
primary key(pro_id)
);
drop table human;
create table human(
id char(18),
name varchar2(30),
sex char(2),
age number(9) ,
telephone number(11),
province number(3),
foreign key(province) references province_tab(pro_id)
);
insert into human values('210211199809089878','嘻嘻',null,17,'18111111111','210');
select * from human;
select * from province_tab;
insert into province_tab values('210','辽宁');
外键 foreign key(自身的列名) references 有关系的表名(表中的主键名)
foreign key(sid) references student(sid)
主键 primary key(列名)
primary key(scid)
SELECT count(id_mcard) from mcard
查询表中总数据