SQL基础(二)

多表设计-关联查询

为什么要多表关联

数据冗余--拆分

数据库设计范式

  1. 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的 规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计 要求的总结。
  2. 目前关系数据库有5种范式:第一范式(1NF)、第二范式(2NF)、第 三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范 式(5NF,又称完美范式)。
  3. 满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步 满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般 来说,数据库只需满足第三范式(3NF)就行了

数据库设计范式

1.第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就 说明该 数据库表满足了第一范式

2. 第二范式就是要有主键,要求其他字段都依赖于主键。

  •  没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要主键。
  • 其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其 他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依 赖于主键,也就成了唯一的

3.第三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”

外键:引用另外一个数据表的某条记录。

 外键列类型与主键列类型保持一致 数据表之间的关联/引用关系是依靠具体的主键(primary key)和外键(foreign key)建立起来 的。

create table score( cid int not null auto_increment primary key, 
score int,
 sid int, 
CONSTRAINT 约束名 foreign key(sid) references student(sid) );

约束名规则:

例:

FK_ForeignTable_PrimaryTable_On_ForeignColumn

  1. 当主表中没有对应的记录时,不能将记录添加到从表
  2. 不能更改主表中的值而导致从表中的记录孤立
  3. 从表存在与主表对应的记录,不能从主表中删除该行
  4. 删除主表前,先删从表

关联查询

含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询

笛卡尔乘积现象:表1有m行,表2有n行,结果=m*n

发生原因:没有有效的连接条件

如何避免:添加有效的连接条件

按功能分类: 内连接 外连接 左外连接 右外连接

子查询

含义:出现在其他语句中的select语句,称为子查询或内查询;

外部的查询语句,称为主查询或 外查询.

分类:

按子查询出现的位置:

  • select后面:支持标量子查询
  • from后面:支持表子查询
  • where:支持标量子查询,列子查询

按功能、结果集的行列数不同:

  • 标量子查询(结果集只有一行一列)
  • 列子查询(结果集只有一列多行)
  • 表子查询(结果集一般为多行多列
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值