创建表
# 创建表
create table demo01(id int, note varchar(20));
# 创建的表包含主键
create table demo02(id int primary key, note varchar(20));
# 复合主键
create table demo03(id1 int, id2 int, note varchar(20), CONSTRAINT pk_test02 primary key(id1,id2));
# 指定唯一键
create table demo04(id1 int, id2 int, id3 int,note varchar(20), CONSTRAINT pk_test03 primary key(id1,id2), CONSTRAINT uk_test03_id3 UNIQUE(id3));
复制
# check 约束形式
# 创建数据表 child,字段 age 要求不能大于18
CREATE TABLE child(name varchar(20), age int,note text, CONSTRAINT ck_child_age CHECK(age <18));
# 以其他表为模板来创建新表
CREATE TABLE baby(LIKE child);
复制
- 创建的 baby 表没有把 child 源表字段 ck_child_age 列上的约束复制过来;
- 完全复制源表列上的约束和其他信息,则需要加 INCLUDING 关键字
- INCLUDING DEFAULTS
- INCLUDING CONSTRAINTS
- INCLUDING INDEXES
- INCLUDING STORAGE
- INCLUDING COMMENTS
- INCLUDING ALL:把所有的属性全部复制
CREATE TABLE baby2 (LIKE child INCLUDING ALL);
复制
# 使用 CREATE TABLE...AS 创建表
CREATE TABLE baby3 AS SELECT * FROM child WITH NO DATA;
复制
临时表
- 会话级的临时表,数据可以一直保存在整个会话的生命周期中;
- 事务级的临时表,数据只存在于这个事务的生命周期中;
- 在PostgreSQL中,不管是事务级的临时表还是会话级的临时表,当会话结束时都会消失;
- 如果在两个不同的session中创建一个同名的临时表,实际上创建的是两张不同的表;
# session1
create TEMPORARY table tmp_t1(id int primary key, note text);
# session2
复制
insert into tmp_t1 values(1,'1111');
insert into tmp_t1 values(2,'2222');
select * from tmp_t1;
复制
# 创建事务级的临时表
create TEMPORARY table tmp_t2(id int primary key, note text) on commit delete rows;
begin;
insert into tmp_t2 values(1,'aaaa');
insert into tmp_t2 values(2,'bbbb');
select * from tmp_t2;
end;
# 事务一旦结束,临时表中的数据就会消失
select * from tmp_t2;
复制
ON COMMIT 形式
- ON COMMIT PRESERVE ROWS: 若不带“ON COMMIT”子句,默认情况下,数据会一直存在于整个会话周期中;
- ON COMMIT DELETE ROWS: 数据只存在于事务周期中,事务提交后数据就消失了;
- ON COMMIT DROP: 数据只存在于事务周期中,事务提交后临时表就消失了。这种情况下,创建临时表的语句与插入数据的语句需要放到一个事务中,若把创建临时表的语句放在一个单独的事务
中,事务一旦结束,这张临时表就会消失。
创建临时表时,关键字 TEMPORARY 也可以缩写为 TEMP
create TEMPORARY table tmp_t3(id int primary key, note text);
create TEMP table tmp_t4(id int primary key, note text);
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
PostgreSQL征途:逻辑结构管理之表1
6月前

评论
也许你一生中走错了不少路,看错了不少人,承受了许多背叛,落魄得狼狈不堪。但是无所谓,全都过去了。只要还活着,总会有希望。余生还很长,你不必慌张!
1年前

评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
547次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
358次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
337次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
312次阅读
2025-04-07 12:14:29
MogDB 发布更新,解决 openGauss 数据库在长事务情况下Ustore表膨胀问题
MogDB
289次阅读
2025-04-17 10:41:41
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
152次阅读
2025-04-14 15:58:34
墨天轮PostgreSQL认证证书快递已发(2025年3月批)
墨天轮小教习
133次阅读
2025-04-03 11:43:25
SQL 优化之 OR 子句改写
xiongcc
97次阅读
2025-04-21 00:08:06
融合Redis缓存的PostgreSQL高可用架构
梧桐
91次阅读
2025-04-08 06:35:40
PostgreSQL拓展PGQ实现解析
chirpyli
89次阅读
2025-04-07 11:23:17