多表设计和关联查询

发布时间:2024年01月17日
 
  

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

设计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 :支持标量子查询,列子查询
按功能、结果集的行列数不同:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列多行)
表子查询(结果集一般为多行多列)
文章来源:https://blog.csdn.net/2301_76460223/article/details/135645614
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。