列数

时间:2009-02-03 06:24:36

标签: sql oracle schema

如何计算oracle中表格中的列数?

5 个答案:

答案 0 :(得分:18)

SELECT count(*) FROM user_tab_columns WHERE table_name = 'FOO'

应该给你foo中的列数。您可以从USER_TAB_COLUMNSUSER_TABLES获取相当多的信息(还有ALL_DBA_个变体。

答案 1 :(得分:8)

@derobert有一个很好的答案,只要你试图计算你拥有的表中的列。如果需要计算其他模式表中的列,则需要使用all_tab_columns视图。此视图中的其他列之一是表所有者。当多个模式中存在相同的表名时,这也很有用。请注意,您必须具有表的权限才能在all_tab_columns视图中查看它们。查询变为:

select count(*) from all_tab_columns where owner='BAR' and table_name='FOO';

请注意,owner和tablename列通常是大写的。

答案 2 :(得分:1)

如果Oracle支持INFORMATION_SCHEMA.COLUMNS,我会说使用它。但正如其他人所说,使用USER_%视图。

为完整起见,以下链接描述了哪些系统支持SQL-92标准。 Systems that support INFORMATION_SCHEMA

答案 3 :(得分:0)

老问题 - 但我最近需要这个以及行计数...这里是两个查询 - 按行数desc排序:

SELECT t.owner, 
       t.table_name, 
       t.num_rows, 
       Count(*) 
FROM   all_tables t 
       LEFT JOIN all_tab_columns c 
              ON t.table_name = c.table_name 
WHERE  num_rows IS NOT NULL 
GROUP  BY t.owner, 
          t.table_name, 
          t.num_rows 
ORDER  BY t.num_rows DESC; 

答案 4 :(得分:0)

oracle表中的列数和行数:

SELECT u.table_name Table_Name, 
       Count(*)     Table_Columns, 
       u.num_rows   Table_Rows 
FROM   user_tab_columns c, 
       user_tables u 
WHERE  u.table_name = c.table_name 
GROUP  BY u.table_name, 
          u.num_rows