0
点赞
收藏
分享

微信扫一扫

SQL案例:各类数据库筛选出没有主键的表名


筛选出数据库中没有主键的表名,你需要使用特定的SQL查询来检查每个表的约束。具体的查询语句会根据你使用的数据库管理系统(如 MySQL, PostgreSQL, SQL Server 等)有所不同。下面是一些常见数据库管理系统的示例:

MySQL

在MySQL中,可以使用以下查询来查找没有主键的表:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'your_database_name' 
AND table_name NOT IN (
    SELECT table_name 
    FROM information_schema.table_constraints 
    WHERE constraint_type = 'PRIMARY KEY' 
    AND table_schema = 'your_database_name'
);

PostgreSQL

对于PostgreSQL,你可以使用类似的方法:

SELECT table_name 
FROM information_schema.tables 
WHERE table_schema = 'public' 
AND table_name NOT IN (
    SELECT tc.table_name 
    FROM information_schema.table_constraints AS tc 
    WHERE tc.constraint_type = 'PRIMARY KEY' 
    AND tc.table_schema = 'public'
);

请注意,这里的 'public' 是PostgreSQL中的默认模式名,如果你的表位于不同的模式下,请替换为正确的模式名。

SQL Server

在SQL Server中,可以使用以下查询:

SELECT t.name AS table_name
FROM sys.tables t
LEFT JOIN sys.indexes i ON t.object_id = i.object_id
WHERE i.is_primary_key = 0 OR i.is_primary_key IS NULL;

Oracle

在Oracle数据库中,查询可能如下所示:

SELECT table_name
FROM user_tables
WHERE table_name NOT IN (
    SELECT table_name
    FROM user_constraints
    WHERE constraint_type = 'P'
);


举报

相关推荐

0 条评论