zoukankan      html  css  js  c++  java
  • 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)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。
    关系及用法概述
    从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。

  • 相关阅读:
    delphi快捷键
    Delphi代码规范
    Hibernate通用Dao
    SpringData初探
    Windows下shell神器
    正则语法总结
    nodejs的npm命令无反应的解决方案
    JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?
    js上传图片
    正则匹配结果取反(正则中的前瞻,负向前瞻与后顾)
  • 原文地址:https://www.cnblogs.com/cn-oldboy/p/13769120.html
Copyright © 2011-2022 走看看