Day09.多表操作

  1. 外键约束:
    1. 概述:一个(A)表的一列指向另一个(B)表的一列(B表的主键约束),那么A表的这一列就是外键约束。
    2. 格式:foreign key (外键字段)references 主表(字段)
    3. 特点:从表外键的值是对主表主键的引用; 从表外键类型必须与主表主键类型一致
    4. 目的:保证数据完整性
  2. 多表查询:
    1. 笛卡尔积:

      语法:select *from A,B; 将两个表乘积显示

      SELECT 字段1,字段2 FROM 表1,表2;

    2. 隐式查询(条件查询)——sql96规范

SELECT 字段1,字段2 FROM 表1,,表2 where 条件;    

SELECT pname,cname FROM persons,cars WHERE pid=pids;

  1. 显示查询——sql99规范

    *显示内连接查询
    inner (线) join
    on 条件

    select 【字段】 from 表1 inner join 表2 on 条件;

    *显示左外连接查询
    left(线) join
    on 条件

    select 【字段】 from 表1 left join 表2 on 条件;

    *显示右外连接查询 right join on

    select 【字段】 from 表1
    right (线) join
    表2 on 条件;

    左右的区别:左外连接已关键字左边的为主,有外连接已关键字右边的为主

  2. 子查询:以一条语句的结果作为另一条语句的条件


    注意:如果结果条件是多条数据,就不能用等号,用in

  1. 表与表之间的关系:
    1. 一对多关系:

    常见实例:客户与订单 分类和商品 部门和员工

建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

    

  1. 多对多关系:

    常见实例:学生和课程 商品和订单 人和角色

    建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键(就是一个多对多拆分成两个一对多)

联合主键:多个字段都作为主键,非空唯一

        非空:任何主键都不能为空,

        唯一:多个主键的值不能完全重复

  1. 一对一关系:

        实际开发中应用不多,因为一对一可以创建成一张表

    建表原则

        外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique

        外键是主键: 主表的主键和从表的主键,形成主外键关系

  1. 注意事项:
    1. 从表不能够添加(更新)主表中不存在的数据
    2. 主表不能够删除(更新)从表中已经存在的数据

 

4.关系分析:

用户表(user)

    订单表(order)

    商品信息表(product)

    商品类别表(category)

5.自连接查询:

    查询员工及直属领导的名字

companys

 

cid(员工id) cname(员工的名字) pid

1 zhangsan 3

2 lisi 4

3 rongrong 5

4 jinlian 5

5 boss

小温

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: