PostGIS笔记:PostgreSQL中表、键和索引的基础操作

创建、查看与删除表

在数据库中创建一个表,使用如下代码:

sql 复制代码
create table streets (id serial not null primary key, name varchar(50));

这里的表名是streets,id是主键所以非空,采用serial数据类型,这个数据类型会自动编号填充上整数;另一个字段是name,类型为字符,长度50。如果要查看表的架构和表的内容,可以使用如下代码:

sql 复制代码
#查看架构
\d streets
#查看内容
SELECT * FROM streets;

删除表使用drop命令。

sql 复制代码
DROP TABLE 表名;

创建 键和索引

在创建一个shreets表后,我们还需要创建一个people 表。people 表包括ID、电话号码、家庭住址、姓名等字段,这个表中的家庭住址(street)依赖于streets 表,因此在 创建people表时需要添加外键约束。

sql 复制代码
CREATE TABLE people (id serial not null primary key,
	name varchar(50),
	house_no int not null,
	street_id int references streets(id) not null,
	phone_no varchar null);

\d people查看表结构,可以看到存在外键约束。

如果是先创建了people 表,那么可以通过alter table 方式添加外键约束。

sql 复制代码
ALTER TABLE people ADD CONSTRAINT people_streets_fk FOREIGN KEY (street_id) REFERENCES streets(id);

如果需要修改约束,可以使用先删除、后新建的方式进行。

sql 复制代码
ALTER TABLE 表名 DROP CONSTRAINT 约束名;

在上面的图中,可以看到已经存在一个主键btree索引,也可以在name属性新建索引。

sql 复制代码
CREATE INDEX people_name_idx ON  people(name);
相关推荐
李少兄15 小时前
IntelliJ IDEA 启动项目时配置端口指南
数据库·sql·intellij-idea
NineData15 小时前
NineData云原生智能数据管理平台新功能发布|2025年8月版
数据库·mongodb·云原生·数据库管理工具·ninedata·数据库迁移·数据复制
ooolmf15 小时前
照度传感器考虑笔记
笔记·单片机
白云如幻15 小时前
【Java】QBC检索和本地SQL检索
java·数据库·sql
yangzhi_emo15 小时前
ES6笔记5
前端·笔记·es6
Awesome Baron15 小时前
《Learning Langchain》阅读笔记13-Agent(1):Agent Architecture
笔记·langchain·llm
鸡哥爱技术15 小时前
Django入门笔记
笔记·python·django
勘察加熊人16 小时前
python将pdf转txt,并切割ai
数据库·python·pdf
不良人天码星16 小时前
Redis单线程模型为什么快?
数据库·redis·缓存
yuxb7316 小时前
Docker 学习笔记(七):Docker Swarm 服务管理与 Containerd 实践
笔记·学习·docker