1. 重命名数据库时,报错:“其他用户正在使用数据库...”
报错如下:
ERROR: 错误: 其他用户正在使用数据库 "<DBname>"
DETAIL: 那里有1个其它会话正在使用数据库.
SQL 状态: 55006
解决方法:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE datname='<DBname>' AND pid<>pg_backend_pid();
- pg_terminate_backend:用来终止与数据库的连接的进程 ID 的函数。
- pg_stat_activity:是一个系统表,用于存储服务进程的属性和状态。
- pg_backend_pid():是一个系统函数,获取附加到当前会话的服务器进程的 ID 。
2. 删除数据库时,报错:“数据库 <> 不存在”,右键删除报错:“其他用户正在使用数据库...”,并且使用方法 1 无法解决。
重启 pgAdmin4 再来右键删除。
3. 希望在特定的数据库下创建新表,需要 “切换” 数据库。
选中数据库 << 工具 << 查询工具,从而打开相应的 SQL 窗口。
4. 更新数据后,该条数据貌似会默认排列到最后。
不过可以手动采用顺序排列。
select * from member order by rank;
select * from member order by rank asc; -- 降序排列
select * from member order by rank desc; -- 升序排列
5. 尝试关联成员表和公司表。
c_name 没有约束不能与成员表的外键关联。
c_id 已经是主键了,不能再将 c_name 设为主键。
给 c_name 加上 “唯一约束”,成功关联。注意:成员表外键所有的值必须要在公司表 c_name 中找得到才能关联,因此先把公司表数据插好了再进行关联。
6. 主键和外键
公司下面还有员工时,不能删除该公司。
7. 如何更新数据。
8. 创建视图。
--创建视图
create view v_member_starship as select rank, name from member
where company = 'starship'
order by rank asc;
--删除视图
drop view v_member_starship;
--查看视图
select * from v_member_starship;
9. 多表查询。
查询方式 | SQL |
---|---|
内连接 | inner join |
左连接 | left outer join |
右连接 | right outer join |
全连接 | full outer join |
inner 和 outer 均可省略。
(1)内连接查询方式
select rank, name, company, c_id, c_name
from member, company
where company = c_name;
select rank, name, company, c_id, c_name
from member inner join company
on company = c_name;
(2)外连接查询方式
返回左表的所有内容。
select rank, name, company, c_id, c_name
from member left join company
on company = c_name;
返回两个表的所有内容。