【约束、多表关系和多表连接】

本文详细介绍了数据库约束,包括字段的自增约束和外键约束,强调了外键在确保数据一致性和完整性中的作用。接着探讨了多表关系,如一对多、多对多和一对一关系,并给出了实例说明。在多表查询部分,讲解了笛卡尔积的概念以及如何通过连接查询(内连接和外连接)来避免这种情况,重点放在了实际应用中常用的左连接查询上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

约束

约束就是对字段进行限制,从而保证数据的准确、有效和完整。

多个约束间直接空格分隔开

在这里插入图片描述

# 创建student表并为每个字段设置约束
create table student(
    id int primary key auto_increment,
    name varchar(10) not null unique,
    age tinyint unsigned check ( age > 0 and age <=120),
    gender char(1) default '男'
);

# 插入时,如果不插入id字段,则自动从1开始递增。如果不插入性别字段,则默认为‘男’
insert into student(name, age) values ('penrose',18);

#此处插入的数据“年龄”列不符合约束条件,则此次操作不会占用序列
insert into student(name, age, gender) values ('cxf',120,'女');

#此处插入的数据与上一条插入的数据重复,则插入数据失败,且会占用一个序列
insert into student(name, age) values ('penrose',18);

注:

  1. 只能为一个字段设置自增长,多搭配主键使用。
  2. 为字段设置自增长约束时,不必为其插入数据。如果插入序列后,则下一条数据就会依次往后增加。
  3. 如果数据插入失败后,再次插入新数据,则序列就会出现断层。这里的插入失败意思是所有插入的数据都符合字段的约束条件,但是表中已有此记录,则此次的序列就会被占用。但是如果插入的数据出现data truncation(数据截断),则不会占用序列。

外键约束

外键能将两张表之间的数据建立连接,从而保证数据的一致性和完整性。
外键存在时,至少存在两张表。
被关联的表是父表(外键所关联的表),需要关联的表是子表
一旦被关联,主表中的数据默认不可删除

外键的删除/更新行为
在这里插入图片描述

注:如果想要删除主表中的数据,就需要设置删除/更新行为

#新建表时添加外键约束
create table emp(
    id  int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '姓名',
    age  int comment '年龄',
    job varchar(20) comment '职位',
    salary int comment '薪资&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值