SQL如何查询一个数据库中的表

SQL如何查询一个数据库中的表,第1张

第一次回答:

写存储过程或者函数来做。

第二次回答:

过程如下,你还可以完善一下

create procedure get_table

@colname varchar(30),

@colvalue varchar(30),

@coltype varchar(30)=null,

@colformat varchar(30)=null

as

begin

declare @sql varchar(100), @tablename varchar(30)

create table #tables( tablename varchar(30))

declare cur_table cursor for

select name from sysobjects a

where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = @colname)

open cur_table

fetch cur_table into @tablename

WHILE @@FETCH_STATUS = 0 begin

select @sql = 'insert into #tables select'''+ @tablename +''' where exists( select 1 from '+ @tablename +' where '+ @colname +' = '''+ @colvalue +''')'

exec(@sql)

fetch cur_table into @tablename

end

close cur_table

deallocate cur_table

select from #tables

end

go

exec get_table 'name', '张三'

第三次回答:

这个过程我在SQL server 2005中执行过了,没有问题,而且这语法也在2000中适用。

过程,我写了几次,或许你看得是开始我写的,那有错,后来更正了。

如果报错,请把错误贴出来。

第四次回答:

你要把你的过程及语句,贴出来嘛,或者说明没有改动,完全按照我的,那你也得把你的SQL语句贴出来吧?

然后,你说:

报错如下,我是新手 麻烦大家了:

(所影响的行数为 0 行)

服务器: 消息 105,级别 15,状态 1,行 1

字符串 '张' 之前有未闭合的引号。

服务器: 消息 170,级别 15,状态 1,行 1

第 1 行: '张' 附近有语法错误。

(所影响的行数为 0 行)

服务器: 消息 170,级别 15,状态 1,行 1

第 1 行: '=' 附近有语法错误。

为什么有那么多报错?是否执行了一次语句就报了你列出的所有错误?

务必把你的语句贴出来。像我第三次回答一样,建立过程的语句(如果你没有改,则不需要列出只需要说明,没有改即可),及执行过程的语句(如果你没有改,则不需要列出只需要说明,没有改即可)。

第四次回答:

你重新执行一遍一下语句:

选中到“--到这里结束”的语句,一次执行。

drop procedure get_table

go

create procedure get_table

@colname varchar(30),

@colvalue varchar(30),

@coltype varchar(30)=null,

@colformat varchar(30)=null

as

begin

declare @sql varchar(100), @tablename varchar(30)

create table #tables( tablename varchar(30))

declare cur_table cursor for

select name from sysobjects a

where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = @colname)

open cur_table

fetch cur_table into @tablename

WHILE @@FETCH_STATUS = 0 begin

select @sql = 'insert into #tables select'''+ @tablename +''' where exists( select 1 from '+ @tablename +' where '+ @colname +' = '''+ @colvalue +''')'

exec(@sql)

fetch cur_table into @tablename

end

close cur_table

deallocate cur_table

select from #tables

end

go

exec get_table 'name, '张三'

--到这里结束

如果仍有问题,那么执行以下语句:

create table #tables( tablename varchar(30))

insert into #tables select aname from sysobjects a

where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where bid = aid and bname = 'name')

select from #tables

drop table #tables

可以把所有包含字段'name'的表找出来,你自己再仔细研究,使用exec( SQL)的方式 SQL2000也是支持的,实在不行,你就找到表后,自己一个一个表再select也可以得到结果:

select count(1) from tablename where name = '张三'

结果大于零就说明这个表是你要找的表之一了。

自己研究下吧。

两种

方式

,一种是直接在

sqlserver

的列表中找到,另一种用写

语句

的方式查询。

方法一:

1、登陆SQL

SERVER

Manager

Studio。

2、在左边的树找到自己要查询的数据库。如图:

3、点击“表”,就能看到这个库中的所有表了。

方法二:

1、登陆SQL

SERVER

Manager

Studio。

2、点击左上角的“新建查询”。

3、在窗口中编写

sql语句

如下,然后运行

SELECT name FROM SysObjects Where XType='U' ORDER BY Name

结果截图:

具体如下:

1,第一步打开mysql控制台,输入showdatabases,命令,查看mysql中所有数据库。

2,第二步输入use数据库名,进行进入对应的数据库,这里输入的是usebaidu_reward,命令。

3,第三步进入数据库之后,输入showtables,命令,可以查看数据库中所有表。

4,第四步按回车键之后,可以看到baidu_reward数据库的所有表。

5,第五步我们也可以使用mysql的图形界面工具来查看数据库中所有表。

--SQL 查询所有表名:

SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'

SELECT FROM INFORMATION_SCHEMATABLES

--查询表的所有字段名:

SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )

SELECT FROM INFORMATION_SCHEMATABLES

SELECT FROM INFORMATION_SCHEMAVIEWS

SELECT FROM INFORMATION_SCHEMACOLUMNS

---------以下为其他数据库查询表----------

--ORACLE 查看所有表名:

SELECT TABLE_NAME FROM USER_TABLES

--ACCESS 查看所有表名:

SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0

--MSYSOBJECTS 是系统对象,默认情况是隐藏的。通过工具、选项、视图、显示、系统对象可以使之显示出来。

以上就是关于SQL如何查询一个数据库中的表全部的内容,包括:SQL如何查询一个数据库中的表、怎样看SQL数据库中哪些表有数据、sqlnavigator在哪看到数据库的所有表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9327398.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存