菜单

解析如何查看Oracle数据库中某张表的字段个数

2020年1月15日 - 计算机服务器

Oracle中查询某个表的总字段数,要用SQL语句,或者在PL/SQL里面
复制代码 代码如下:
select count(column_name) from user_tab_columns where
table_name=’T_B_AUDITOR’

#查看数据库版本
mysql> select @@version;
+————+
| @@version |
+————+
| 5.5.16-log |
+————+
1 row in set (0.00 sec)

能够查出来指定的那张表的字段数。
下面是通过大致查看: select   tname,count(*)   from   col   group   by   tname;
复制代码 代码如下:
64 T_A_BOOKSTAGEINFO 4
65 T_B_AUDITOR 14
66 T_B_BOOKMANAGEMENT 13
67 T_B_BOOKSTATUSCONFIG 5
68 T_B_CODETREEINFO 8
69 T_B_FILTERWORD 11
70 T_B_ISBNWHITELIST 11
71 T_B_MODEL 10
72 T_B_NOTICE 15
73 T_B_NOTICEACCEPT 11
74 T_B_OPERLOG 10
75 T_B_ORGANIZATIONINFO 18
76 T_B_PREFIXINFO 15
77 T_B_PUBLISHINFO 30
78 T_B_ROLE 8
79 T_B_ROLEMODEL 6
80 T_B_SAMPLEBOOKINFO 89
81 T_B_USER 26
82 T_B_USERANDROLE 6
83 T_B_USERLOGIN 8
84 T_B_USERMODEL 6

mysql> select * from information_schema.schemata; #
保存了系统的所有的数据库名 ,关键的字段是schema_name
# 2 rows in set (0.04 sec)表示只有2个数据库
+————–+——————–+—————————-+————————+———-+
| catalog_name | schema_name | default_character_set_name |
default_collation_name | sql_path |
+————–+——————–+—————————-+————————+———-+
| def | information_schema | utf8 | utf8_general_ci | null |
| def | test | gb2312 | gb2312_chinese_ci | null |
+————–+——————–+—————————-+————————+———-+

此时我就联想到了mysql上面去:
直接利用函数来解决: 复制代码 代码如下:
mysql> desc test;
+———+————-+——+—–+———+—————-+
| Field   | Type        | Null | Key | Default | Extra          |
+———+————-+——+—–+———+—————-+
| id      | int(11)     | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10) | YES  |     | NULL    |                |
| address | varchar(30) | YES  |     | NULL    |                |
+———+————-+——+—–+———+—————-+
3 rows in set (0.01 sec)
mysql> select found_rows();
+————–+
| found_rows() |
+————–+
|            3 |
+————–+
1 row in set (0.01 sec)

mysql> select * from information_schema.columns; #

还有就是利用系统表: 复制代码 代码如下:
mysql> use information_schema
Database changed
mysql> select count(*) from columns where table_name=”test”;
+———-+
| count(*) |
+———-+
|        3 |
+———-+
1 row in set (0.00 sec)

# 关键的字段是table_name & column_name 411 rows in set (0.05 sec)

在mysql中想要知道数据库中有多少个库: 复制代码 代码如下:
mysql> select * from schemata;
+————–+——————–+—————————-+————————+———-+
| CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME |
DEFAULT_COLLATION_NAME | SQL_PATH |
+————–+——————–+—————————-+————————+———-+
| NULL         | information_schema | utf8                       |
utf8_general_ci        | NULL     |
| NULL         | mysql              | utf8                       |
utf8_general_ci        | NULL     |
| NULL         | test               | utf8                       |
utf8_general_ci        | NULL     |
+————–+——————–+—————————-+————————+———-+
3 rows in set (0.00 sec)

+—————+——————–+—————————————+——————————-+——————

在mysql数据库中有多少张表: 复制代码 代码如下:
mysql> select table_schema,count(*) from tables group by
table_schema;
+——————–+———-+
| table_schema       | count(*) |
+——————–+———-+
| information_schema |       17 |
| mysql              |       17 |
| test               |        6 |
+——————–+———-+
3 rows in set (0.00 sec)

| table_catalog | table_schema | table_name | column_name |
ordinal_position | column_default | is_nullable | data_type |

其实在系统表information_schema中大多的数据库,表啊都会有记录的。所以要好好研究下这张表呢。

character_maximum_length | character_octet_length |
numeric_precision | numeric_scale | character_set_name |
collation_name | column_type | column_key | extra

| privileges | column_comment |

+—————+——————–+—————————————+——————————-+——————

mysql> select * from information_schema.tables; # 包含所有的表名
,38 rows in set (0.09 sec) 表示有38张表

mysql> select count(*) from information_schema.tables; #
count(*)返回一共有多少行(就是多少条记录)

+———-+
| count(*) |
+———-+
| 38 |
+———-+
1 row in set (0.00 sec)

#关键的字段是table_column & table_name

+—————+——————–+—————————————+————-+——–+———+————+–

| table_catalog | table_schema | table_name | table_type | engine |
version | row_format | table_rows | avg_row_length | data_length
|

max_data_length | index_length | data_free | auto_increment |
create_time | update_time | check_time | table_collation | checksum
| create_options |

table_comment |
+—————+——————–+—————————————+————-+——–+———+————+–

mysql> select * from information_schema.tables where
table_schema=”test”;

# 关键字是table_name和table_schema (数据库名)
+—————+————–+————+————+——–+———+————+————+—————-+—–

| table_catalog | table_schema | table_name | table_type | engine |
version | row_format | table_rows | avg_row_length | data_length |
max_data_length | index_length |

data_free | auto_increment | create_time | update_time | check_time
| table_collation | checksum | create_options | table_comment |
+—————+————–+————+————+——–+———+————+————+—————-+—–

| def | test | t_users | base table | innodb | 10 | compact | 0 | 0 |
16384 | 0 | 16384 | 9437184 | 1 | 2012-10

-06 12:21:23 | null | null | gb2312_chinese_ci | null | | |
+—————+————–+————+————+——–+———+————+————+—————-+—–

1 row in set (0.00 sec)

mysql> select * from information_schema.columns where
table_name=”t_users”;

# 关键是得到 column_name

+—————+————–+————+————-+——————+—————-+————-+———–+—-

| table_catalog | table_schema | table_name | column_name |
ordinal_position | column_default | is_nullable | data_type |
character_maximum_length |

character_octet_length | numeric_precision | numeric_scale |
character_set_name | collation_name | column_type | column_key |
extra | privileges |

column_comment |
+—————+————–+————+————-+——————+—————-+————-+———–+—-

| def | test | t_users | id | 1 | null | no | int | null | null | 10 |
0 | null |

null | int(11) | pri | auto_increment | select,insert,update,references
| |
| def | test | t_users | name | 2 | null | no | text | 65535 | 65535 |
null | null | gb2312

| gb2312_chinese_ci | text | | | select,insert,update,references | |
| def | test | t_users | password | 3 | null | no | text | 65535 |
65535 | null | null | gb2312

| gb2312_chinese_ci | text | | | select,insert,update,references | |
+—————+————–+————+————-+——————+—————-+————-+———–+—-

3 rows in set (0.01 sec)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图