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);
相关推荐
忍冬行者12 分钟前
清理三主三从redis集群的过期key和键值超过10M的key
数据库·redis·缓存
TimberWill17 分钟前
使用Redis队列优化内存队列
数据库·redis·缓存
Knight_AL1 小时前
MySQL 中 UPDATE 语句的执行过程全解析
数据库·mysql
Li.CQ2 小时前
SQL学习笔记(二)
笔记·sql·学习
yngsqq2 小时前
兰顿蚂蚁——CAD二次开发
数据库
梁萌3 小时前
ShardingSphere分库分表实战
数据库·mysql·实战·shardingsphere·分库分表
川石课堂软件测试3 小时前
Mysql中触发器使用详详详详详解~
数据库·redis·功能测试·mysql·oracle·单元测试·自动化
鹏说大数据3 小时前
数据治理项目实战系列6-数据治理架构设计实战,流程 + 工具双架构拆解
大数据·数据库·架构
唯余旧忆3 小时前
【数据写入】达梦数据库(dm8)merge into写入时序数据速度慢的问题处理
数据库
自不量力的A同学3 小时前
OpenNJet v3.3.1.3
笔记