JAVA学习日志2-4

JAVA学习日志2-4

数据库中的约束条件

约束
主键约束primary key
唯一约束unique
非空约束not null
默认约束default
外键约束foreign key
  • 主键约束 primary key
    经过主键约束的字段是区分每一行数据的唯一标识,即通过主键可以找到唯一的一行内容,所有主键是 不重复的、不为空。一张表中只能存在一个主键。
#设置主键1
create table tab1 (
tid int(10) primary key
);
#设置主键2
create table tab2(
tid int(10),
primary key(tid)
)
#设置主键3
create table tab3 (pid int(10) );
alter table tab3 add constraint pk primary key (pid);
#删除主键索引(只会删除索引,不会删除主键的字段)
alter table tab3 drop primary key;
#在插入数据时,如果插入主键重复的数据是不可以的,可以给主键设置成自增,每次插入数据不用插入主键,主键自动+1
create table tab4 (
pid int(10) primary key auto_increment
);
  • 唯一约束
    unique主要是保证列中数据不重复,一个表中可以设置多个唯一约束,唯一约束的列名可以使用null,可以给手机号、邮箱、 身份证号设置唯一约束。
#唯一约束  (和主键的设置方式类似,有3种创建方法)
create table tb1(
tid int(10) unique,
tid2 int(10)
);
#删除唯一约束
alter table td1 add constraint u_id2 unique(tid2); 
alter table tb1 drop index u_id2;
  • 非空约束
    not null 插入的数据必须赋值,不能是空
#非空约束一般在创建表时设置
create table tb1(
tid int(10) not null
);
  • 默认约束
    default 默认约束的字段,不插入值则存储默认值,插入的是default也存储默认值,插入其他具体值时存储其他值。
#默认约束一般在表创建时设置
CREATE TABLE tb1(
tid INT(10) DEFAULT 100,
tname VARCHAR(10)
);
#插入值(tid 未插入,tid存储100)(tid 插入null时存储的是null)
INSERT INTO tb1(tname) VALUES('13');
  • 外键约束
    foreign key外键用于多张表的关系中,如一对一、一对多、多对多的关系。在一对多的关系中(如 主表是职位表,存储职位。从表是员工表,存储员工信息,在职位一栏存储职位表中职位的编号。职位表中的每一栏对应员工表中的多个员工)外键设置在从表中。主表的主键需要对应从表的外键(即一张表的外键必须是另一张表的主键)。主键的数据类型必须和外键的数据类型相同,数据长度也要一致。增加数据的时候 必须先增加主表中的数据 ,删除的时候应该先删除从表 再删除主表的数据
#部门表
create table dept(
did int(4) primary key,
dname varchar(20)
)
#员工表
create table emp(
eid int(4) primary key,
ename varchar(4),
did int(4) 
);
#设置外键
alter table emp add constraint fk foreign key(did) references dept(did);

查询时,可以用用公共的字段通过多表查询进行查询,为什么还需要外键约束?
有外键约束的从表在插入数据时,是无法插入外键数值之外的数据的,如主表dept 的did只有3个值1,2,3。从表emp插 did=4的数据是无法插入的。如果不添加外键约束在emp插入时还得判断did是否在dept的did范围内。不添加外键取值时可能取到dept的did范围外的值,无法形成对应。

在多对多的关系中(如学生表和科目表),需要建立一张中间表来实现这种关系。如 中间表 的字段应该包含 学生id 字段和 科目id 字段,这样学生表、科目表对中间表的都形成了多对一的关系,把中间表的学生id和科目id设置成外键即可实现 学生表和科目表多对多的关系。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值