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 = '张三'

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

自己研究下吧。

如何查询oracle一个数据库中包含有某个特定值的所有表及字段名

-我这里说的字段名跟列 是同一个意思

select column_name,

table_name,data_type ,data_length,data_precision,data_scale from user_tab_columns where column_name='字段名';

--根据字段名查出相关的表名出来。记录下来

--然后对查出来的表进行查询,找到含这内容字段的表

select from 表名 where 字段名='xiaoming'

数据库都是数据的存储,如果你们现在用的是EXCEL表的,那么你可以将EXCEL表转换成数据库表,然后将数据导入,再建立表关系。根据表关系用SQL语句进行查询组合。

如果你不熟悉数据库的话,建议你找个人帮你做。当然找我也行。

要先找到表

表不多的话查看表字段,看是否有类似Name字段。

表N多的话,看看有没有attendance

类似考勤的英文。这些英文一般都是排序的,

goodLuck。。

Create Procedure sp_Search(@Val Varchar(4000))

As

Begin

Declare @TBName Varchar(200)

Declare @ColName Varchar(200)

Declare @Rst int

Declare @Sql NVarchar(4000)

Declare @TB Table(TbName Varchar(200),ColName Varchar(200))

Declare myCur Cursor For

Select AName,BName From sysobjects A Inner join syscolumns B on aobject_id=bobject_id

Where AType='U' And system_Type_ID in(35,99,167,175,231,239)

Open myCur;

Fetch Next From myCur Into @TBName,@ColName

While @@FETCH_STATUS = 0

Begin

Set @Sql='If Exists(Select From ['+@TBName+'] Where ['+@ColName+'] Like @Val)'

Set @Sql=@Sql+'Set @Rst=1 '

Set @Sql=@Sql+'Else '

Set @Sql=@Sql+'Set @Rst=0 '

Exec sp_Executesql @sql,N'@Val Varchar(4000),@Rst int output',@Val,@Rst output

If(@Rst=1)

Insert Into @TB values(@TBName,@ColName)

Fetch Next From myCur Into @TBName,@ColName

End

Close myCur

DeAllocate myCur

Select From @TB

End

/

测试:

Exec sp_search '内容'

Exec sp_search '%内容%'

以上搜索包含的字段数据类型为Char,Varchar,Text,NChar,NVarchar,NText

思路:

先查询出所有表所有字符型栏位,然后每个表每个栏位查询值是否等于@Val,如果等则保存表名和字段名,最后返回结果

/

--汗,那是存储过程过程去遍历每个表的每个栏位,又不是要你一个写SQL

以上就是关于SQL如何查询一个数据库中的表全部的内容,包括:SQL如何查询一个数据库中的表、如何查询oracle一个数据库中包含有某个特定值的所有表及字段名、想建一个简单的数据库,便于数据的查询,怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9273052.html

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

发表评论

登录后才能评论

评论列表(0条)

保存