PostgreSQL获取table名,字段名

PostgreSQL获取数据库中所有table名:

[sql]  view plain copy
  1. SELECT   tablename   FROM   pg_tables    
  2. WHERE   tablename   NOT   LIKE   'pg%'    
  3. AND tablename NOT LIKE 'sql_%'  
  4. ORDER   BY   tablename;  


PostgreSQL获取数据库中所有table名及table的注解信息:

[sql]  view plain copy
  1. SELECT   tablename,obj_description(relfilenode,'pg_class')  FROM   pg_tables  a, pg_class b  
  2. WHERE     
  3. a.tablename = b.relname  
  4. and a.tablename   NOT   LIKE   'pg%'    
  5. AND a.tablename NOT LIKE 'sql_%'  
  6. ORDER   BY   a.tablename;  

PostgreSQL获取指定table的所有字段信息:

[sql]  view plain copy
  1. SELECT col_description(a.attrelid,a.attnum) as comment,format_type(a.atttypid,a.atttypmod) as type,a.attname as name, a.attnotnull as notnull  
  2. FROM pg_class as c,pg_attribute as a  
  3. where c.relname = 'tablename' and a.attrelid = c.oid and a.attnum>0  
在SQL中,获取字段名的方式取决于您所在的数据库管理系统(DBMS)。不同的数据库系统有不同的方法来检索表中的字段信息。以下是几种常见的方法: ### Oracle 在Oracle数据库中,您可以使用`ALL_TAB_COLUMNS`视图来查看所有表的字段信息。假设您想获取为`myTable`的表的所有字段名称: ```sql SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'MYTABLE'; ``` 这里`COLUMN_NAME`是我们想要提取的字段名称。 ### MySQL / MariaDB 在MySQL或MariaDB中,由于没有内置的全局视图来直接获取所有字段信息,我们需要结合`SHOW CREATE TABLE`语句和正则表达式来提取字段名称: ```sql SELECT field_name FROM ( SELECT GROUP_CONCAT(field_pattern) as fields_list FROM information_schema.columns WHERE table_name = 'myTable' ) as subquery WHERE REGEXP_LIKE(fields_list, '[a-zA-Z_][a-zA-Z0-9_]*'); ``` 在这个查询中,我们首先使用`information_schema.columns`视图获取所有列的信息,然后使用`GROUP_CONCAT`函数将它们组合成一个字符串。接下来,我们使用正则表达式匹配出有效的字段名称。 ### PostgreSQLPostgreSQL中,可以使用`pg_catalog`模式下的视图来获取表的字段信息: ```sql SELECT attname FROM pg_attribute JOIN pg_class ON pg_class.oid = 'myTable'::regclass WHERE attnum > 0 AND not attisdropped; ``` 这里`attname`就是我们要获取字段名称。 ### SQLite SQLite不提供直接获取表结构的全局视图,但如果数据库包含元数据,则可以通过直接操作表`sqlite_master`来获取表及其字段的信息。但是,这种方式并不推荐用于生产环境,因为它依赖于具体的元数据存储规则: ```sql SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'myTable'; ``` 请注意,上述查询可能会有所不同,具体取决于您的数据库管理系统的特性和版本。建议查阅相应的数据库文档获取最准确和最合适的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值