首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL操作五

文章目录

  1. 1. Day05
    1. 1.1. 关联关系
      1. 1.1.1. 自关联
    2. 1.2. 一对一
    3. 1.3. 一对多
    4. 1.4. 多对多
      1. 1.4.1. 创建表
      2. 1.4.2. 查询
    5. 1.5. 如何让两张表建立关系
    6. 1.6. 连接方式和关联关系的区别
    7. 1.7. 数据库设计值权限管理
      1. 1.7.1. 什么是权限管理
      2. 1.7.2. 权限管理表的实现

Day05

关联关系

自关联

当前表的数据和当前表里面的数据有关联关系

一对一

一对多

多对多

学生和老师的关系就是多对多的关系 一个学生可以被多个老师教,一个老师可以教多个学生

创建表

创建教师表 teacher(id,name) 创建学生表 stu(id,name) 创建第三张关系表t_s(sid,t_id)

查询

  • 查询学生小明的所有老师
    • 通过小明查询出小明的id
    • 得到小明的id 在关系表中查询出对应的老师的id
    • 通过关系表中的老师的id再和教师表关联查询查出所有的老师
    • select name from teacher where id in ( select t_s.tid from stu join t_s on stu.id=t_s.sid where stu.name='小明'); 子查询方式,但是子查询中使用了内连接,也可以使用等值连接
    • select t_s.tid from stu join t_s on stu.id=t_s.sid join teacher t on t.id=tid where stu.name='小明'; 使用内连接的方式查询,多个join连接,where条件语句应该放在最后一个join的on的后面
  • 查询所有老师对应的所有学生0
    • select t.name t_name,stu.name s_name from stu join t_s on stu.id=t_s.sid join teacher t on t.id=tid;
  • 查询唐僧的所有学生
    • select t.name t_name,stu.name s_name from stu join t_s on stu.id=t_s.sid join teacher t on t.id=tid where t.name='唐僧';

如何让两张表建立关系

  • 自关联
    • 自关联是在一张表中,这张表中要有一个字段记录上级的主键
  • 一对一:
    • 需要在从表中有个字段表示主表的主键值 (外键)
  • 一对多
    • 部门和员工为例,需要在多的一端通过字段记录另外一张的表的主键 (外键)
  • 多对多
    • 需要准备一张关系表,表中保存两张表的主键值(第三张表) (外键)

连接方式和关联关系的区别

  • 连接方式: 包括内连接,等值连接,左/右外连接 是指查询两张表时使用的查询方式
  • 关联关系: 一对一,一对多,多对多 是指两张表之间存在的逻辑关系

数据库设计值权限管理

什么是权限管理

  • 不同用户登录网站后可能会有不同的权限,实现此功能的过程称为权限管理

权限管理表的实现

  • 总共需要5张表
    • 用户表 角色表 权限表 用户和角色关系表 角色和权限的关系表
下一篇
举报
领券