mysql中主键和外键的作用,主表和从表如何区分,以及如何使用联合查询和TP5的联合查询

主键、外键和索引的区别

主键 外键 索引
定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值,外键一定是至少涉及到两张表 该字段没有重复值,但可以有一个空值
作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度
个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个惟一索引

主表和从表

主表
在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。

有外键的表,一般都是主表

从表
以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。
关系及用法概述
从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。主表可用于存储主要信息,如客户资料(客户编号,客户名称,客户公司,客户单位等),从表用来存储客户扩展信息(客户订单信息,客户地址信息,客户联系方式信息等)

相关列子和联合查询

简单举例:

主表(用户信息)
table user
userid numeric(0,20)
username varchar2(20)
usercompany varchar2(50)

从表(用户订单)
table uorder
orderid numeric(0,20)
uid numeric(0,20)
ordertime date
orderstate char(1)
  

要对主表和从表进行信息联合查询语句简单如下:

select * from user u inner join uorder o on u.userid=o.uid

很简单就是 一对多的关系
一是主表
多是从表

tp5联合查询

public function blogs()
{
//以blogs为主表
$res = Db::name('blogs')
->alias("a") //取一个别名
//与category表进行关联,取名i,并且a表的categoryid字段等于category表的id字段
->join('category i', 'a.categoryid = i.id')
->join('user u', 'a.authorid = u.id')
//想要的字段
->field('a.id,a.title,a.content,u.username,a.createtime,i.category,a.look,a.like')
//查询
->select();
return json($res);
}
}

主表和从表如何区分

主表(父表)
在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。
从表(子表)
以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。
关系及用法概述
从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。

原文地址:https://www.cnblogs.com/cn-oldboy/p/13769120.html