表[users]
u_id u_user u_gid 1 admin 1,2 #用户admin在组“超级”和
自动编号 用户名 所在组ID “低级”中
表[group]
g_id g_name g_pow 1 超级 13 #组包含 吃、玩的权限
自动编号 组名 包含权限 2 低级 2 #组包含 喝的权限
表[power]
p_id p_name 1 吃
自动编号 权限名 2 喝
3 玩
我如何用SQL语句查出admin的所有权限???
或者有更好的权限的设计办法?就针对这个的,不要复制谢谢。。
你好啊,有没有更好的数据库设计办法去管理权限?
追答将关系从主表中剥离出来,单独成表:
create table users
(
u_id int,
u_user varchar(32)
);
create table groups
(
g_id int,
g_name varchar(32)
);
create table power
(
p_id int,
p_name varchar(32)
);
create table rl_user_group
(
u_id int,
g_id int
);
create table rl_group_power
(
g_id int,
p_id int
);
insert into users values (1, 'admin');
insert into groups values (1, '超级');
insert into groups values (2, '低级');
insert into power values (1, '吃');
insert into power values (2, '喝');
insert into power values (3, '玩');
insert into rl_user_group values (1,1);
insert into rl_user_group values (1,2);
insert into rl_group_power values (1,1);
insert into rl_group_power values (1,3);
insert into rl_group_power values (2,2);
.head on
select *
from users u
join rl_user_group ug on u.u_id = ug.u_id
join groups g on g.g_id = ug.g_id
join rl_group_power gp on g.g_id = gp.g_id
join power p on p.p_id = gp.p_id
;
-- 单行用户的权限文字列表:
SELECT u.*, GROUP_CONCAT(p_names) as p_names
FROM users u
JOIN rl_user_group ug on u.u_id = ug.u_id
JOIN (
SELECT gp.g_id,
GROUP_CONCAT(p_name) as p_names
FROM power p
JOIN rl_group_power gp on p.p_id = gp.p_id
GROUP BY gp.g_id
) as gp on ug.g_id = gp.g_id
GROUP BY u.u_id
;
SQLITE数据库表的一个字段中存有另一个表的多个字段,如何查询出来?
1|admin|1,2|1|超级|1,3|3|玩 1|admin|1,2|2|低级|2|2|喝 sqlite>
如何在sqlite中显示数据库表数据?
1、首先双击打开SQLiteSpy应用程序。2、然后点击打开File——Open DataBase选项,3、然后找到要打开的.db数据库文件,点击打开。4、然后这样数据库就打开了,可以看到左侧表。5、然后右键点击一个表——Show Data。6、然后右侧则会显示表数据。
如何在sqlite数据库表中查询到含有换行的记录的全部信息,按照一般的方 ...
正规的sql语句应该写db.query(select photo from 表名 where id=? and name=?,“1”,"小明");
sqlite数据库查询的时候如何排除一列啊,比如现在有个Student表,
1.select * from [tablename] --查询所有列 2.select a, b, c from [tablename] --查询指定的列 没有你说的那种排除某一列,查询其他列的写法。这个谁都无能为力。希望对你有帮助。
QT中table view怎么显示sqlite数据库的内容?
在QT的widget中用tableview显示sqlite数据库表中的内容。假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据。首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:1.在widget.h中增添头文件:QtSql\/qsql....
玩转SQLite4:SQLite数据插入与查看
介绍如何将数据添加到SQLite数据库表中,并展示如何查看表中数据。操作可使用命令行或图形界面两种方式进行。使用图形化方法,打开数据库test4.db,切换至“浏览数据”,点击插入数据图标,输入数据。注意,id字段在插入时会自动填充,因在创建表时设置了“自增”。通过命令行执行SQL查询,基本语法为`select...
sqlite查看所有表名及字段名,及判断是否存
selectcount(*) from sqlite_master wheretype='table' and name = 'yourtablename';其中yourtablename表示你要判断的表名,如果查询结果大于0,表示该表存在于数据库中,否则不存在。2. 查询与判断列 通过以下语句可查询出某个表的所有字段信息 PRAGMA table_info([tablename])比如:我想查看...
sqlite数据库 怎么查看所有表名
sqlite查看所有表名及字段名 查询table,type 段是'table',name段是table的名字, so:select name from sqlite_master where type='table' order by name;查询indices,type段是'index', name 是index的名字,tbl_name是index所拥有的table的名字 通过以下语句可查询出某个表的所有字段信息 PRAGMA ...
Sqlite进阶之--附加数据库关联查询以及Pragma的相关使用
多个数据库关联查询 通过Attach语句实现数据库的关联。此语句需放在连接操作的最前,确保文件数据库在每次连接时成功吸附。一旦关闭连接,吸附关系随之消失。查询SQLite版本可通过sqlite_source_id()与sqlite_version()函数实现,前者标识构建库的源代码版本,后者返回正在运行的SQLite版本字符串。PRAGMA使用 PRAG...
sqlite数据库怎么统计某一字段记录中某条记录出现的次数
select count(字段) from 表名 where 字段='某条记录'