PostgreSQL八股文连环36问,你能坚持第几问?
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、
高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
1.基本概念
2.安装和使用
3.查询数据
4.基本结构
5.服务端编程
6.集群和复制
7.高级数据类型
8.SQL高级技巧
前言
小编在这里给大家总结了PostgreSQL技能树的资料,帮助大家入门PG
以下为精选,获取全套题目,点文末左下角阅读全文
1.基本概念
关于 PostgreSQL 服务器,以下说法错误的是:D
A.PostgreSQL 的服务器将数据存储在一个 owner 为 postgres 的目录下。
B.PostgreSQL 的每个活跃连接对应一个 worker 进程。
C.PostgreSQL 可以设置监听端口、地址和最大连接数
D.PostgreSQL 的服务器和客户端必须运行在不同的计算机上。
2.安装和使用
你是 SmartMarket 公司的一名开发人员,
公司使用 Linux 运行 PostgreSQL 服务,
而你的开发机使用 MacOS。下列说法正确的是:A1.在 MacOS 上,使用 Homebrew 安装 PostgreSQL 后,在当前用户下执行 psql postgres 可以登入数据库
2.在 Linux 上,使用 yum 或 apt 安装 PostgreSQL 后,sudo su postgres 切换到 postgres 用户,可以执行 psql 登入数据库
3.对于自己安装的数据库服务器(非RDS),如果需要开放远程登录,需要编辑数据目录下的 postgresql.conf 和 pg_hua.conf
4.安装 PostgreSQL 前,需要重装系统以获得一个干净的内核环境
5.安装 PostgreSQL 前,需要手工建立一个名为 postgres 的超级用户
6.安装 PostgreSQL 需要先安装 gcc 或 llvm clang
7.对于使用 linux 的开发者,通常需要安装 postgresql 的开发包,这通常可以在主流的 linux 发行版的软件服务中找到,
一般叫 postgresql-devel 或 postgresql-dev
A.1, 2, 3, 7
B.1, 2, 3, 4, 5, 6, 7
C.1, 2, 3
D.5, 6, 7
3.查询数据
关于 PSQL 命令行,以下说法正确的是:C1.psql 命令行内置在 postgresql 安装包中
2.psql 命令行默认以系统当前用户身份登录本机,连接用户同名数据库
3.进入 psql 命令行,可以使用 \? 查看内置的快捷指令
4.在 psql 命令行中,可以通过 \! 在服务端执行shell命令
5.psql 命令行必须以 postgres 用户身份执行
6.psql 命令行必须以 root 用户身份执行
7.psql 只能用于 linux 和 bsd 系统
8.在 psql 中执行 \d 可以查看 relations 列表,即用户表和视图
9.在 psql 中执行 \l 可以查看数据库列表
10.在 psql 中执行 \d 表名 可以查看指定表或视图的详细信息
11.在 psql 中执行 \timing 可以开关查询计时
12.analyze 表名; 和 explain 查询; 以及 explain analyze 查询; 都是 psql 特有的命令
A.全部都错
B.5, 6, 7, 8, 9, 10, 11, 12
C.1, 2, 3, 4, 8, 9, 10, 11
D.9, 10, 11, 12
4.基本结构
数据组的 Fred 调到了研发团队,不再参与分析生产数据,
现在管理员要收回他对 trade 表的查询权限,
假设这个权限是授予他本人的数据库用户fred ,
下面哪个操作是对的?DA.revoke select on trade to fred;
B.grant not select on trade to fred;
C.revoke owned trade from fred;
D.revoke select on trade from fred;
5.服务端编程
我们希望这个数据库能够允许每个订单包含多种商品,
那么应该如何改造?BA.在 order 表的主键上加唯一约束
B.添加一个 order_detail 表,
引用 order id、product id,
增加 quantity 列
order 表中删除 product id 和 quantity 列
C.将 order 表的修改为以 product id 和 customer id 作为联合主键
D.删除 orders 表中的 product id 和 quantity 列
6.集群和复制
关于流式复制,错误的是:CA.主从节点的硬件配置可以不一致
B.订阅节点可以作为只读的从节点,提供读写分离
C.流式复制的主节点损坏,会导致订阅节点也损坏。
D.节点间传输的是 wal 数据流
7.高级数据类型
关于 JSON 和 JSONB 类型,哪句话是错的?BA.JSONB 是推荐的 JSON 字段类型,更为高效。
B.JSON 就是 文本类型的封装,JSONB 是 JSON 的二进制压缩格式,
JSON 和 JSONB 的功能与 TEXT 类型一样。
C.JSON 和 JSONB 与其它类型一样,不能部分修改,只能作为整体插入或更新
D.JSONB 可以通过 GIST 倒排索引优化对内部结构的查询。
8.SQL高级技巧
现有 test1 表如下
create table test1(a integer primary key );我们执行下面的语句
CREATE PROCEDURE transaction_test1()
LANGUAGE plpgsql
AS $$
BEGIN
FOR i IN 0..9 LOOP
INSERT INTO test1 (a) VALUES (i);
IF i % 2 = 0 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END LOOP;
END;
$$;
CALL transaction_test1();
时,下面哪一项的解释是对的?B
A.以最后一次提交为准,最终 test1 表中是 0 到 9 共九个数字。
B.每当循环迭代到偶数的时候提交插入,最终 test1 表中是0,2,4,6,8。
C.所有插入都回滚了。test1 表中没有数据。
D.这个过程执行会报错。
👇👇👇点击阅读原文,获取PG技能资料