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);
相关推荐
2501_9032386515 分钟前
Spring Boot与H2数据库:快速搭建内存数据库应用
数据库·spring boot·oracle·个人开发
鲁子狄1 小时前
[笔记] 极狐GitLab实例 : 手动备份步骤总结
linux·运维·笔记·ubuntu·centos·gitlab
扎量丙不要犟2 小时前
rust操作pgsql、mysql和sqlite
数据库·mysql·rust·sqlite·sqlx
不一样的信息安全2 小时前
深入探索SQL中修改表字段属性的技巧与策略
数据库·sql·oracle
花生_TL000074 小时前
C语言小笔记(一)
c语言·开发语言·笔记
siy23334 小时前
[C语言日寄] <stdio.h> 头文件功能介绍
c语言·笔记·学习·算法
Good Note4 小时前
Golang笔记——常用库context和runtime
开发语言·redis·笔记·后端·面试·golang·春招
努力的小T4 小时前
Linux MySQL离线安装
linux·运维·服务器·数据库·mysql·adb·云计算
2的n次方_6 小时前
【Redis】List 类型的介绍和常用命令
数据库·redis·缓存·list
Suwg2096 小时前
《Effective Java》学习笔记——第7部分并发
java·笔记·学习