淘先锋技术网

首页 1 2 3 4 5 6 7

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;

返回两个表的所有内容。