首页 > 数据库 > SQL > 正文

postgresql 创建表的几种方式

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-11-06 19:39:02
原创
306人浏览过
基本CREATE TABLE用于手动定义表结构,如users表含主键、非空和默认值;2. CREATE TABLE AS根据查询结果创建表,如导出active_users数据但不复制约束;3. 临时表用TEMPORARY关键字创建,会话级可见且断开自动清除,适合中间计算;4. 继承表通过INHERITS复用父表结构,如capitals继承cities字段。根据不同场景选择合适方式可提升PostgreSQL使用效率。

postgresql 创建表的几种方式

在 PostgreSQL 中,创建表有多种方式,主要取决于使用场景和需求。以下是几种常见的建表方法,适用于不同情况下的数据定义操作。

1. 基本 CREATE TABLE 语句

这是最常见的方式,使用标准 SQL 语法手动定义表结构。

  • 指定表名、字段名、数据类型、约束(如主键、非空、唯一等)
  • 适合从零开始设计表结构

示例:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    email VARCHAR(255) UNIQUE,
    created_at TIMESTAMP DEFAULT NOW()
);
登录后复制

2. 基于查询结果创建表(CREATE TABLE AS)

通过 SELECT 查询的结果集自动创建表结构,常用于数据导出、备份或中间表生成。

  • 新表包含查询中的列和数据
  • 不会自动复制源表的约束(如主键、索引、默认值等)
  • 适合快速提取数据子集

示例:

CREATE TABLE active_users AS
SELECT * FROM users WHERE status = 'active';
登录后复制

3. 创建临时表(TEMPORARY 或 TEMP)

用于会话期间的中间计算,数据仅当前连接可见,断开后自动清除。

爱图表
爱图表

AI驱动的智能化图表创作平台

爱图表 99
查看详情 爱图表
  • 临时表只在当前会话中存在
  • 可与永久表同名,优先访问临时表
  • 适合复杂查询中的缓存处理

示例:

CREATE TEMP TABLE temp_user_stats (
    user_id INT,
    login_count INT,
    last_login TIMESTAMP
);
登录后复制

4. 继承表(INHERITS)

PostgreSQL 支持表继承,新表可以继承已有表的字段结构。

  • 子表自动拥有父表的所有列
  • 支持多表查询时联合检索
  • 注意:INSERT 默认只写入指定表,除非使用 ONLY

示例:

CREATE TABLE cities (
    name VARCHAR(100),
    population INT,
    altitude INT
);
<p>CREATE TABLE capitals (
state CHAR(2)
) INHERITS (cities);
登录后复制

基本上就这些常用方式。根据实际需要选择合适的方法,比如日常建模用第一种,数据分析导出用第二种,会话级中间数据用临时表,结构复用考虑继承。每种方式都有其适用边界,理解清楚能更好发挥 PostgreSQL 的灵活性。

以上就是postgresql 创建表的几种方式的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号