多表设计和关联查询

本文详细阐述了数据库设计中的3范式原则,强调原子性、主键和外键的重要性。讨论了外键的使用、数据表之间的关联,以及如何避免笛卡尔乘积现象。还介绍了内连接、外连接和子查询的不同类型及用法。

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

 
  

数据库设计范式(数据库设计规则) 如何将多个信息合理的进行组织]

设计3范式

第一范式:

满足列的原子性(不可拆分)

联系范式-->邮箱,电话,qq 可以拆分

第二范式:

数据库表中必须要有主键,能唯一的表示某条记录的列(有些表中可以没有主=键)

第三范式:

一张表中存储一类信息, 在一张表中关联其他表中的数据时,只需要关联主键列即可.

外键:

引用另外一个数据表的某条记录。
外键列类型与主键列类型保持一致
数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键
(foreign key)建立起来的。
create table student(
id int not null auto_increment primary key,
num int,
name varchar(10)
majorid int,
CONSTRAINT 约束名 foreign key(majorid ) references major(id)
);
约束名规则:
例:FK_ForeignTable_PrimaryTable_On_ForeignColumn
注意事项:
1、当主表中没有对应的记录时,不能将记录添加到从表
2、不能更改主表中的值而导致从表中的记录孤立
3、从表存在与主表对应的记录,不能从主表中删除该行
4、删除主表前,先删从表

关联查询:

关联查询
含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询
笛卡尔乘积现象:表 1 m 行,表 2 n 行,结果 =m*n
发生原因:没有有效的连接条件
如何避免:添加有效的连接条件
按功能分类:
内连接(inner join)
语法: Select 结果 from 1 ,表 2 where 1.column1 = 2.column2
外连接:
左外连接l(left join)
select 结果 from
1 left join 2 on
1.column1 = 2.column2
右外连接 (right join)
select 结果 from
1 right join 2 on
1.column1 = 2.column2

子查询

含义:出现在其他语句中的 select 语句,称为子查询或内查询;外部的查询语句,称为主查询或
外查询 .
分类:
按子查询出现的位置:
from 后面:支持表子查询
where :支持标量子查询,列子查询
按功能、结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
表子查询(结果集一般为多行多列)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值