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张表
    • 用户表 角色表 权限表 用户和角色关系表 角色和权限的关系表

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring表达式和自动装配

    爱撒谎的男孩
  • Spring表达式和自动装配

    爱撒谎的男孩
  • Springmvc解决中文乱码问题

    爱撒谎的男孩
  • 猫头鹰的深夜翻译:如何优化MYSQL查询

    索引除了能够确保唯一的标记一条记录,还能是MySQL服务器更快的从数据库中获取结果。索引在排序中的作用也非常大。

    眯眯眼的猫头鹰
  • 怼就完事了,总结几种验证码的解决方案

    截止到今天咸鱼已经写了很多期关于 Js 逆向的文章,不过这么多的文章都有一个共同点,都是关于加密参数或者密码加密的解析,很多读者在后台私信希望能够出一些关于滑动...

    咸鱼学Python
  • MySQL8.0.18 试用Hash Join

    MySQL8.0.18在上个月已经正式发布了,令人兴奋的是带来了Hash Join,今天体验一下Hash Join是否能带来性能上的提升。

    MySQLSE
  • Maven命令说明

  • 从BAT到TAB,你看到了什么?

    孟永辉
  • 基于Python实现2种反转链表方法代码实例

    砸漏
  • 给新生成的节点(动态生成节点)绑定事件方法总结

    第一种 jquery写法 $('.father').on('click',',child',function(){}) $(document).on('cli...

    吴裕超

扫码关注云+社区

领取腾讯云代金券