主鍵、外鍵和索引的區別
主鍵 | 外鍵 | 索引 | |
---|---|---|---|
定義: | 唯一標識一條記錄,不能有重復的,不允許為空 | 表的外鍵是另一表的主鍵, 外鍵可以有重復的, 可以是空值,外鍵一定是至少涉及到兩張表 | 該字段沒有重復值,但可以有一個空值 |
作用: | 用來保證數據完整性 | 用來和其他表建立聯系用的 | 是提高查詢排序的速度 |
個數: | 主鍵只能有一個 | 一個表可以有多個外鍵 | 一個表可以有多個惟一索引 |
主表和從表
主表
在數據庫中建立的表格即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)的表,可以通過外鍵與主表進行關聯查詢。從表與主表通過外鍵進行關聯查詢。
關系及用法概述
從表數據依賴於主表,一般最后查詢數據時把主表與從表進行關聯查詢。