--读取库中的所有表名select name from sysobjects where xtype='u'--读取指定表的所有列名select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')获取数据库表名和字段sqlserver中各个系统表的作用sysaltfiles 主数据库 保存数据库的文件syscharsets 主数据库 字符集与排序顺序sysconfigures 主数据库 配置选项syscurconfigs 主数据库 当前配置选项sysdatabases 主数据库 服务器中的数据库syslanguages 主数据库 语言syslogins 主数据库 登陆帐号信息sysoledbusers 主数据库 链接服务器登陆信息sysprocesses 主数据库 进程sysremotelogins主数据库 远程登录帐号syscolumns 每个数据库 列sysconstrains 每个数据库 限制sysfilegroups 每个数据库 文件组sysfiles 每个数据库 文件sysforeignkeys 每个数据库 外部关键字sysindexs 每个数据库 索引sysmenbers 每个数据库 角色成员sysobjects 每个数据库 所有数据库对象syspermissions 每个数据库 权限systypes 每个数据库 用户定义数据类型select 列名=name from syscolumns where id=object_id(N'要查的表名')
TABLE 语句
具体语法:TABLE table_name [ORDER BY column_name] [LIMIT number [OFFSET number]]
其实从语法上看,可以排序,也可以过滤记录集,不过比较简单,没有 SELECT 那么强大。
示例 1
简单的建一张很小的表 y1,记录数为 10 条。表 t1,插入 10 条记录
mysql-(ytt/3305)->create table t1 (r1 int,r2 int);
Query OK, 0 rows affected (002 sec)
mysql-(ytt/3305)->insert into t1
with recursive aa(a,b) as (
select 1,1
union all
select a+1,ceil(rand()20) from aa where a < 10
) select from aa;
Query OK, 10 rows affected (000 sec)
Records: 10 Duplicates: 0 Warnings: 0
简单全表扫描mysql-(ytt/3305)->select from t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)TABLE 结果mysql-(ytt/3305)->table t1;+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)
看下 table 的执行计划mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G 1 row id: 1 select_type: SIMPLE table: t1 partitions: NULL type: ALLpossible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 10 filtered: 10000 Extra: Using filesort1 row in set, 1 warning (000 sec)
其实可以看到 TABLE 内部被 MySQL 转换为 SELECT 了。mysql-(ytt/3305)->show warnings\G 1 row Level: Note Code: 1003Message: / select#1 / select `ytt``t1``r1` AS `r1`,`ytt``t1``r2` AS `r2` from `ytt``t1` order by `ytt``t1``r1` limit 21 row in set (000 sec)
那其实从上面简单的例子可以看到 TABLE 在内部被转成了普通的 SELECT 来处理。示例 2应用于子查询里的子表。这里要注意,内表的字段数量必须和外表过滤的字段数量一致。克隆表 t1 结构mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (002 sec)
克隆表 t1 数据mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (000 sec)Records: 10 Duplicates: 0 Warnings: 0
table t1 被当做内表,表 t1 有两个字段,必须同时满足 t2 检索时过滤的字段也是两个。mysql-(ytt/3305)->select from t2 where (r1,r2) in (table t1);+------+------+| r1 | r2 |+------+------+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+------+------+10 rows in set (000 sec)
注意:这里如果过滤的字段数量和子表数量不一致,则会报错。
可通过查询all_tables这个系统表来查看数据库中的所有表。
执行语句:
select table_name from all_tables;查询结果:
1、查询SQL中的所有表:
Select
TABLE_NAME
FROM
数据库名称INFORMATION_SCHEMATABLES
Where
TABLE_TYPE='BASE
TABLE'
执行之后,就可以看到数据库中所有属于自己建的表的名称
2、查询SQL中所有表及列:
Select
dbosysobjectsname
as
Table_name,
dbosyscolumnsname
AS
Column_name
FROM
dbosyscolumns
INNER
JOIN
dbosysobjects
ON
dbosyscolumnsid
=
dbosysobjectsid
Where
(dbosysobjectsxtype
=
'u')
AND
(NOT
(dbosysobjectsname
LIKE
'dtproperties'))
3、在Sql查询分析器,还有一个简单的查询方法:
EXEC
sp_MSforeachtable
@command1="sp_spaceused
''"
执行完之后,就可以看到数据库中所有用户表的信息
4、查询总存储过程数:
select
count()
总存储过程数
from
sysobjects
where
xtype='p'
D
=
默认值或
DEFAULT
约束
F
=
FOREIGN
KEY
约束
L
=
日志
FN
=
标量函数
IF
=
内嵌表函数
P
=
存储过程
PK
=
PRIMARY
KEY
约束(类型是
K)
RF
=
复制筛选存储过程
S
=
系统表
TF
=
表函数
TR
=
触发器
U
=
用户表
UQ
=
UNIQUE
约束(类型是
K)
V
=
视图
X
=
扩展存储过程
一、可以使用数据库语言中的like语句进行查询。
二、数据库所有表里面包含的某个文字查询方法
1、在数据中,创建测试表、插入任意数据如下图
2、数据库中插入执行查找包含的某个文字语句,例如:要查找name列中含有“张”字体的语句段落:select from test where name like '',如下图
3、数据执行命令,结果如下图
以上就是关于怎样用SQL语句查询一个数据库中的所有表全部的内容,包括:怎样用SQL语句查询一个数据库中的所有表、mysql里面查某个数据库的所有表名,语句该怎么写不要什么show tables,因为那样会把视图也查出来!、Oracle数据库中用条语句查看数据库中的所有的表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)