Day10-综合案例sql

use day10_heima145;
CREATE TABLE t_user
(
id int(11) NOT NULL AUTO_INCREMENT, -- 用户编号
username varchar(32) DEFAULT NULL, -- 用户名字
password varchar(32) DEFAULT NULL, -- 用户密码
remark varchar(32) DEFAULT NULL, -- 用户备注
email varchar(32) DEFAULT NULL, -- 用户邮箱
createTime timestamp not NULL DEFAULT CURRENT_TIMESTAMP, -- 该用户创建时间
updateTime timestamp not NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 该用户修改时间
PRIMARY KEY (id) -- 设置主键
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;
-- timestamp 时间戳, 添加数据的时候createTime=null那么createTime = 系统当前时间 (年月日 时分秒)
-- updateTime 在你执行update语句,自动修改为修改的当前时间
-- 此语法在mysql8.0上是不兼容的可以修改成 createTime datetime


-- Records of t_user


insert into t_user(id, username, password, remark, email, createTime, updateTime)
values (1, 'admin', '123', NULL, 'admin@163.com', '2021-06-22 09:09:43', '2021-06-22 10:40:25'),
(2, '张大三', '123', NULL, 'zhandasan@163.com', '2021-06-22 09:09:43', '2021-06-24 16:13:56'),
(3, '李四四', '123', NULL, 'lisisi@163.com', '2021-06-22 14:05:12', '2021-06-24 16:14:34'),
(4, 'wangwu', '123', NULL, 'wangwu@163.com', '2021-06-22 14:05:12', '2021-06-22 14:05:12'),
(5, 'wangwu', '123', NULL, 'wangwu@163.com', '2021-06-22 14:05:12', '2021-06-22 14:05:12'),
(6, 'wangwu', '123', NULL, 'wangwu@163.com', '2021-06-22 14:05:12', '2021-06-22 14:05:12'),
(7, 'wangwu', '123', NULL, 'wangwu@163.com', '2021-06-22 14:05:12', '2021-06-22 14:05:12');

角色表

CREATE TABLE t_role
(
id int(11) NOT NULL AUTO_INCREMENT, -- 角色id
name varchar(32) DEFAULT NULL, -- 角色名字
keyword varchar(64) DEFAULT NULL, -- 角色关键字
description varchar(128) DEFAULT NULL, -- 角色描述
PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;


-- Records of t_role


INSERT INTO t_role
VALUES ('1', '管理员', 'ROLE_ADMIN', '这是管理员')
, ('2', '会员', 'ROLE_MEMBER', '这是会员')
, ('3', '游客', 'ROLE_VISITOR', '这是游客');

权限表

CREATE TABLE t_permission
(
id int(11) NOT NULL AUTO_INCREMENT, -- 权限编号
name varchar(32) DEFAULT NULL, -- 权限名字
keyword varchar(64) DEFAULT NULL, -- 权限关键字
description varchar(128) DEFAULT NULL, -- 权限描述
PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;


-- Records of t_permission


INSERT INTO t_permission
VALUES ('1', '新增', 'ITEM_ADD', '这是新增权限')
, ('2', '删除', 'ITEM_DELETE', '这是删除权限')
, ('3', '编辑', 'ITEM_EDIT', '这是编辑权限')
, ('4', '查询', 'ITEM_QUERY', '这是查询权限');

用户角色中间表

CREATE TABLE t_user_role
(
user_id int(11) NOT NULL,
role_id int(11) NOT NULL,
PRIMARY KEY (user_id, role_id),
KEY FK_Reference_8 (role_id),
CONSTRAINT FK_Reference_7 FOREIGN KEY (user_id) REFERENCES t_user (id),
CONSTRAINT FK_Reference_8 FOREIGN KEY (role_id) REFERENCES t_role (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;

-- 联合主键
-- 1. 一张表只能有一个主键 (唯一标识)
-- 2. 一个主键可以多个字段 (联合主键)
-- 2.1 class=316 班级号
-- 2.2 number=5 座位号
-- 2.3 以上任一字段都无法确定一个同学, 两者合在一起就可以唯一确定一位同学(联合主键)


-- Records of t_user_role


insert into t_user_role(user_id, role_id)
values (1, 1),
(3, 1),
(4, 1),
(5, 1),
(2, 2),
(3, 2),
(4, 2),
(2, 3),
(4, 3),
(6, 3),
(7, 3);

角色权限中间表

CREATE TABLE t_role_permission
(
role_id int(11) NOT NULL,
permission_id int(11) NOT NULL,
PRIMARY KEY (role_id, permission_id),
KEY FK_Reference_12 (permission_id),
CONSTRAINT FK_Reference_11 FOREIGN KEY (role_id) REFERENCES t_role (id),
CONSTRAINT FK_Reference_12 FOREIGN KEY (permission_id) REFERENCES t_permission (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8;


-- Records of t_role_permission


insert into t_role_permission(role_id, permission_id)
values (1, 1),
(1, 2),
(1, 3),
(2, 3),
(1, 4),
(2, 4),
(3, 4);

select count(*)
from t_user;
-- 需求:分页查询用户信息和用户对应的角色信息
-- 1.在t_user表先分页查询用户信息
-- 第一页 起始索引 0 每页条数 3

select * from t_user limit 起始索引,每页条数;

select *
from t_user
limit 0,3;
-- 第二页 起始索引 3 每页条数 3
select *
from t_user
limit 3,3;
-- 分页公式:起始索引=(当前页码 - 1) * 每页条数;
-- 2.使用上述分页查询的结果作为临时表角色表以及中间表关联查询获取用户和对应的角色信息
select u.,r.id as rid,r.name,r.keyword,r.description
from (select * from t_user limit 0,3) as u
inner join t_user_role as ur
inner join t_role as r
on u.id = ur.user_id and ur.role_id=r.id;
/

说明:一个用户有多个角色,这里需要在User实体类中定义集合存储多个角色
*/

posted @   忘了鱼尾纱的猫  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
  1. 1 刘哈哈与大先生 刘心&大鹏
  2. 2 我们打着光脚在风车下跑,手上的狗尾巴草摇啊摇 等一下就回家 / -艾兜
  3. 3 哎呦 毛不易
  4. 4 夜、萤火虫和你 AniFace
我们打着光脚在风车下跑,手上的狗尾巴草摇啊摇 - 等一下就回家 / -艾兜
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词:等一下就回家/艾兜

作曲:等一下就回家/艾兜

混音:裴济逸

编曲:HYPER MUSIC

风是从哪儿来手上的狗尾巴草摇的更剧烈

稻穗也晃起来我紧握着你的手把它拍成照片

我们俩转 就像大风车

早该逃离这我转转 把云卷散了

下个地方 风筝睡醒了

乘着它走吧 飘飘 等着大风车

像在画一幅油画

陶醉你的笑容

就沿着风车走吧

不用 猜忌 下个地点

让我忘记时间to the midnight

the sun came out 把所有染成金色的

风风风让它吹过来

至少年轻我还记得

oh 找一个地方落下

躺在谷仓里

和你讲着小话

什么风都吹不倒它

它就像是活的

知道哪是它的家

风是从哪儿来手上的狗尾巴草摇的更剧烈

稻穗也晃起来我紧握着你的手把它拍成照片

我们俩转 就像大风车

早该逃离这我转转 把云卷散了

下个地方 风筝睡醒了

乘着它走吧 飘飘 等着大风车

像在画一幅油画

陶醉你的笑容

就沿着风车走吧

不用 猜忌 下个地点

我们打着光脚在那风车下跑

等一下就回家怎么才到半山腰

就让那些烦恼都随风去吧

随着稻香飘过的地方耶哎呦喂

喜欢那时候风言风语

总是习惯悲中带着笑

喜欢被无视的童言无忌

被风车带走不在

风是从哪儿来手上的狗尾巴草摇的更剧烈

稻穗也晃起来我紧握着你的手把它拍成照片

我们俩转 就像大风车

早该逃离这我转转 把云卷散了

下个地方 风筝睡醒了

乘着它走吧 飘飘 等着大风车

像在画一幅油画

陶醉你的笑容

就沿着风车走吧

不用 猜忌 下个地点

点击右上角即可分享
微信分享提示