Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CSDN 技术社区
skill_tree_pg
提交
d2ed176e
S
skill_tree_pg
项目概览
CSDN 技术社区
/
skill_tree_pg
通知
9
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
2
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
skill_tree_pg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
2
Issue
2
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d2ed176e
编写于
11月 14, 2021
作者:
M
Mars Liu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add six exercises
上级
3bb28dda
变更
12
显示空白变更内容
内联
并排
Showing
12 changed file
with
233 addition
and
2 deletion
+233
-2
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/config.json
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/config.json
+6
-1
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.json
...2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.json
+7
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.md
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.md
+47
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.json
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.json
+7
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.md
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.md
+22
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.json
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.json
+7
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.md
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.md
+26
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/config.json
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/config.json
+2
-1
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.json
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.json
+7
-0
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.md
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.md
+29
-0
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.json
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.json
+7
-0
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.md
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.md
+66
-0
未找到文件。
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/config.json
浏览文件 @
d2ed176e
...
@@ -2,5 +2,9 @@
...
@@ -2,5 +2,9 @@
"node_id"
:
"pg-806d3976e8764d4f8e26c197c53d45a8"
,
"node_id"
:
"pg-806d3976e8764d4f8e26c197c53d45a8"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"table.json"
,
"create_table.json"
,
"serial.json"
]
}
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.json
0 → 100644
浏览文件 @
d2ed176e
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"create_table.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/create_table.md
0 → 100644
浏览文件 @
d2ed176e
# 建表语句
现在我们尝试建立一个简化的交易流水表 trade,需要一个自增主键,一个content字段保存订单详情,,
需要有一个时间戳字段记录订单入库时间,那么哪一个语句是对的?
## 答案
```
postgresql
create table trade (
id serial primary key,
content text,
created_at timestamp default now()
);
```
## 选项
### 主键没有设置自增,不符合题意
```
postgresql
create table trade (
id integer primary key,
content text,
created_at timestamp default now()
);
```
### 时间戳没有设置默认值
```
postgresql
create table trade (
id serial primary key,
content text,
created_at timestamp
);
```
### 没有主键,不符合题设
```
postgresql
create table trade (
id serial,
content text,
created_at timestamp default now()
);
```
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.json
0 → 100644
浏览文件 @
d2ed176e
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"serial.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/serial.md
0 → 100644
浏览文件 @
d2ed176e
# 自增序列
PostgreSQL 表中的自增列 serial 的底层实现机制是:
## 答案
绑定 sequence 对象的表达式默认值
### 选项
### PG 采用的是独立的序列器,不依赖表
auto increment 计数器
### B
触发器
### C
系统表
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.json
0 → 100644
浏览文件 @
d2ed176e
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"table.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/1.表/table.md
0 → 100644
浏览文件 @
d2ed176e
# 表的基本结构
关于数据表的介绍,哪一句是对的?
## 答案
表中每一行记录的结构都要遵循表定义。
## 选项
### 虽然不推荐,但是可以没有主键
表一定要有主键
### 表的主键是任意可以建立唯一索引的字段组合
表的主键必须是自增的整数 id
### 索引可以不唯一
索引列的内容是唯一的
### 虽然不推荐,索引、唯一约束都可以不止一个
每个表只能有一个索引
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/config.json
浏览文件 @
d2ed176e
...
@@ -2,5 +2,5 @@
...
@@ -2,5 +2,5 @@
"node_id"
:
"pg-f371b91ef63a4ce08f80b92bc8580196"
,
"node_id"
:
"pg-f371b91ef63a4ce08f80b92bc8580196"
,
"keywords"
:
[],
"keywords"
:
[],
"children"
:
[],
"children"
:
[],
"export"
:
[]
"export"
:
[
"function.json"
]
}
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.json
0 → 100644
浏览文件 @
d2ed176e
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"function.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/2.PostgreSQL中阶/1.PostgreSQL数据库的基本结构/2.函数/function.md
0 → 100644
浏览文件 @
d2ed176e
# 函数
关于 PostgreSQL 函数,错误的是:
## 答案
函数必须是无副作用的
## 选项
### A
函数可以用 SQL 写,也可以用 PLPGSQL,还可以用 Python、Perl、LUA等语言。
### B
函数的参数和返回值可以是简单变量,也可以是结果集或自定义类型
### C
函数可以递归引用
### D
函数之间可以互相引用
### E
函数的使用权限可以通过 grant/revoke/deny 管理
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.json
0 → 100644
浏览文件 @
d2ed176e
{
"type"
:
"code_options"
,
"author"
:
"刘鑫"
,
"source"
:
"to_root.md"
,
"notebook_enable"
:
false
}
\ No newline at end of file
data/2.PostgreSQL中阶/2.服务端编程/5.CTE/to_root.md
0 → 100644
浏览文件 @
d2ed176e
# 树结构溯根
现有一个表 node
```
postgresql
create table node
(
id serial primary key,
pid integer,
content text
);
```
其 pid 列引用 id 列,形成一个树结构,根节点的 pid 为 0。
现在我们希望写一个查询,找到某一个给定id的记录,其父节点、父节点的父节点,直至根节点的路径。那么这个查询应该是:
## 答案
```
postgresql
with recursive t(id, pid, content) as (select id, pid, content
from node
where id = $1
union all
select node.id, node.pid, node.level
from node
join t on node.id = t.pid)
select node.id, node.pid, content
from node
join t on node.id = t.id;
```
## 选项
### 没有递归定义
```
postgresql
with t as (select id, pid, content
from node
where id = $1
union all
select node.id, node.pid, node.level
from node
join t on node.id = t.pid)
select node.id, node.pid, content
from node
join t on node.id = t.id;
```
### 平凡的连接查询无法处理递归问题
```
postgresql
select node.id, node.pid, node.content
from node
join node as p on node.pid = p.id
where id=$1;
```
### 子查询无法处理递归问题
```
postgresql
select node.id, node.pid, node content
from node as t
where t.pid = (select id from t where id=t.pid)
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录