MySQL分组排序去重多表联查_MySQL基础(二):多表查询 -- 分组排序

本文介绍了如何在MySQL中进行多表查询,包括用户、角色和权限之间的关系,以及如何通过分组和排序来查询特定角色的权限。详细讲解了普通查询、子查询和连接查询的用法,并给出了查询用户角色和权限的实例,以及统计至少有两种权限的角色的方法。同时,还探讨了使用EXPLAIN分析查询效率的方法。
摘要由CSDN通过智能技术生成

多表查询 : 连接查询-子查询

MySQL基础操作链接 ; 工具: SQLyog

MySQL语法顺序:

select[distinct]

from

join(left join/right join)

on

where

group by

having

union

order by

limit

1. 表结构

用户,角色,权限三张表(主表)及三者之间的关系通过两张 “第三张外键表”维护。“外键表”中的两个字段分别使用外键指向主表的主键。(一个用户可以有多个角色,一个角色可以有多个权限;正常来看是是一对多的关系,但是反过来 某个权限可以有多个角色拥有。 所以三者关系必须理解为多对多的关系,所以需要 “第三张外键表”去维护两张表之间的关系,同时保证实体表与实体表之间互相独立)。

表名:

用户信息表 user

用户角色表 user_role

字段

类型

描述

字段

类型

描述

id

int(11) NOT NULL

主键,自增

uid

int(11) NOT NULL

外键:user id

name

varchar(255) NOT NULL

名称

rid

int(11) NOT NULL

外键:role id

password

varchar(255) NOT NULL

密码

age

int(11) NOT NULL

年龄

gender

char(1) NOT NULL

性别

角色信息表 role

角色权限表 role_permisson

字段

类型

描述

字段

类型

描述

id

int(11) NOT NULL

主键,自增

rid

int(11) NOT NULL

外键:role id

rolename

varchar(255) NOT NULL

名称

pid

int(11) NOT NULL

外键:permission id

权限信息表 permission

字段

类型

描述

id

int(11) NOT NULL

主键,自增

name

varchar(255) NOT NULL

权限

具体建表语句:

创建用户表:

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值