PostgreSQL数据库:查看主键语句 (pg数据库查看主键语句)

2023年 8月 10日 75.6k 0

PostgreSQL是一种被广泛使用的关系型数据库管理系统,被认为是性能更好、可靠性与稳定性更高的数据库之一。在开发和管理PostgreSQL数据库时,掌握如何创建和管理主键非常重要。主键是数据库表中唯一标识记录的字段或属性,作为索引用于管理和访问数据。本文将介绍如何在PostgreSQL中查看主键语句。

1. 查看已有的主键名

在一个数据库中,主键通常是在创建表时定义的。可以使用以下语句查看一个表的主键名:

“`sql

SELECT constrnt_name

FROM information_schema.table_constrnts

WHERE table_name=’table_name’ AND constrnt_type=’PRIMARY KEY’;

“`

其中,“table_name”是指要查看主键的表名。如果表存在主键,则会显示主键名称。如果表没有主键,则不会返回任何结果。

2. 查看主键的详细信息

使用以下语句可以查看主键的详细信息:

“`sql

SELECT tc.constrnt_name, tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name

FROM information_schema.table_constrnts tc

JOIN information_schema.key_column_usage kcu ON tc.constrnt_name = kcu.constrnt_name

JOIN information_schema.constrnt_column_usage ccu ON ccu.constrnt_name = tc.constrnt_name

WHERE constrnt_type = ‘PRIMARY KEY’ AND tc.table_name=’table_name’;

“`

这将返回主键的名称、所属表、关联列和外部表的相关信息。如果该表具有外键,则还将显示外键的名称和外部列的名称。

3. 查看表的所有主键

如果想要查看表中所有主键名,可以使用以下语句:

“`sql

SELECT kcu.column_name

FROM information_schema.table_constrnts AS tc

JOIN information_schema.key_column_usage AS kcu

ON tc.constrnt_name = kcu.constrnt_name

WHERE constrnt_type = ‘PRIMARY KEY’

AND tc.table_name = ‘table_name’;

“`

其中,“table_name”是指表的名称。此语句将显示表中所有主键的名称。

4. 查看数据库中所有主键

如果需要查看整个数据库的所有主键,可以使用以下语句:

“`sql

SELECT tc.table_name, kcu.column_name, tc.constrnt_name

FROM information_schema.table_constrnts AS tc

JOIN information_schema.key_column_usage AS kcu

ON tc.constrnt_name = kcu.constrnt_name

WHERE constrnt_type = ‘PRIMARY KEY’

ORDER BY tc.table_name, kcu.ordinal_position;

“`

列出数据库中所有表及其主键,以及主键所属列的名称和主键的名称。

PostgreSQL是一款功能强大的数据库系统,具有强大的数据管理能力。掌握如何查看主键语句是管理PostgreSQL数据库的必备技能之一。根据本文提供的信息,你可以轻松查看PostgreSQL数据库中所有表的主键,以及主键的详细信息。无论你是在开发应用程序还是管理数据库,掌握这些技能都将让你事半功倍。

相关问题拓展阅读:

  • 数据库表中的主键和外键

数据库表中的主键和外键

它们都是关系数据库表设计的约束方式而已,为了保证数据库中不会出现脏数据的限制方法。

主键是数据库表的唯一索引序列,可以由多个字段组成,但每条数据的这几个字段的组合必须唯一;主键约束仅涉及本表数返敬尺据;

外键是本表中该外键字段的取值要求是已经在目标表中存在的数据;假如说,表B有字段b_1是表A中字段a_1的外键,那么插入漏高表B数据的时候,字段稿悄b_1的取值要求在表A的字段a_1的当前所有数据的值的范围内。外键是以外表数据约束本表数据的约束条件。

此外,外键还有个要求,就是a_1必须是表A的主键。并且必须说得是,外键是一个很烦人的数据库约束。

主外键的存在是依托两个实体之间的关系而存在的;

比如班级与学生的关系:

一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;

那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?

因为,你想一想班级表内如果放学生那么记录可能就是这样:

1班ID 1班 xx同学id

1班ID 1班 xx同学id

..

这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;

下面简单给你讲下大概建成的表结构

–建班级表

create table class(

classid int primary key,–定义班级ID为主键

classname varchar(15)

)

–建学生表

create table students(

studentid int primary key,–定义学生ID为主键

classid int ,–外键值,跟班级表classid 属性类型相同

stuname varchar(20),–学生姓名

—定义外键

foreign key(classid) references class(classid) –本表classid是基于class表classid的外键

)

如上定饥袭义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:

–在班级表为空的情况往学生表插入一条记录是不允许的:

insert into students(studentid,classid,stuname)values(1,1,’小明’)

系烂枣兄统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的;

必须要先往班级表内插入一条记录:

insert into class(classid,classname)values(1,’一班’)

后才能执行插入前面一条往学生表插入信息的语句岩森..

可了解一些了?真累啊.

一般每个首昌族表建议都有主键,比如表A和表B,

A的列式(aid,aa,bb,cc),其中aid就是主键,然后B是(bid,xx,yy,ab)bid为主键,ab是外键对应A表的aid

然后你要是,然后你要查询A表中的,aa,bb及B表中的XX,YY,且要是的B中XX,YY所在列的AB要等于A表中的aid,

然后即可以这样写select ….. from A a,B b where b.ab=a.aid

外键差不多就是这样的,设置好者弊B中的外键后,此ab的值只能是A中aid范围内的值,不能搞一个aid中都没有的值迅尺

我给你解释吧!

拿你做例子喽^-9,

你们一家人在一个表中,你姥姥一家在一个表中,表中有共同的一个人,你妈妈,因为这是你的团行数据库,所以以你家为主,你妈妈在你塌蔽哗家是 你爷爷的儿媳妇,地位是“儿媳妇”,到了你姥姥那边,你妈妈是 女儿,地位是“女儿”,不管到哪边,她们是一个人,是不变的,这样两家就关联起来了。

关于表是不是非有主键和外键,不一定哦,

其实可以将有主外键关系的表合并,是吧?

为什么要分开呢并罩?主要是考虑到当数据量大的时候查询效率的问题,这个就有点难了

楼上的guoweifyj先生,我很看好你!!

你讲的非常透彻!@

关于pg数据库查看主键语句的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论