查询数据库中所有表的主键
时间: 2024-10-11 14:17:11 浏览: 41
查询数据库中所有表的主键需要特定的SQL语句,因为这通常涉及到系统元数据,也就是关于数据库结构的信息。在大多数的关系型数据库管理系统(如MySQL、PostgreSQL、Oracle等)中,没有直接的内置函数返回所有表的主键信息。但是,你可以通过以下几个步骤来获取:
1. 对于MySQL,可以使用`INFORMATION_SCHEMA`视图,比如:
```
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE CONSTRAINT_NAME = 'PRIMARY';
```
2. PostgreSQL则使用`pg_attribute`和`pg_index`表:
```
SELECT c.relname AS table_name, a.attname AS column_name
FROM pg_class c JOIN pg_index i ON c.oid = i.indrelid
JOIN pg_attribute a ON i.indexrelid = a.attnum AND NOT a.attisdropped
WHERE i.indisprimary;
```
3. Oracle使用`DBA_TAB_COLUMNS`和`DBA_INDEXES`:
```sql
SELECT TABLE_NAME, COLUMN_NAME
FROM DBA_TAB_COLUMNS, DBA_IND_COLUMNS
WHERE TABLE_NAME = DBA_IND_COLUMNS.TABLE_NAME
AND INDEX_NAME = 'INDEX_NAME_OF_PRIMARY_KEY';
```
请注意,你需要替换上述示例中的`TABLE_NAME`, `COLUMN_NAME`, 和`INDEX_NAME_OF_PRIMARY_KEY`为实际的表名和索引名称。
阅读全文