当前位置:首页 » 编程语言 » sql会自己找表吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql会自己找表吗

发布时间: 2022-04-11 09:56:44

sql 2000,我用sql新建了一张表,可过一会,那张表自己不见了咋回事啊,是不是sql server做了什么设置

你是不是在查询分析器里面创建表的?
你从下面几点来检查下
1.首先确定下,你创建表的时候,上面选择的数据库是否正确,是不是创建到别的数据库中了。
2.确定执行SQL是已经成功了。
不过,很可能是1的原因,创建到别的数据库中去了,然后你又回来找表的时候又是另一个数据库
PS:有时候SQL也会出问题的,原来我就遇到过无缘无故丢失数据的情况,大不了再重新试试就好了啊

Ⅱ SQL如何查找含有该数据的所有表

select*from[table1][table2][table3]

where[列名]=123456

想学数据库的话可以找教程一步一步跟着学哈。

Ⅲ 在SQL中如何查找表

dba下的表
SELECT * FROM dba_tables;
--当前用户下可以查看的所有表
SELECT * FROM all_tables;
--当前用户的表
SELECT * FROM user_tables;

SELECT * FROM all_Tables WHERE owner = 'user_name大写' AND (table_name LIKE '%XX' OR table_name LIKE 'XX%');
是不是你要的。

Ⅳ sql寻找某表

已知字段可以找,SQL数据库里面查询分析器里面运行。
select name
from sysobjects
where
id in (
select id
from syscolumns
where name='name'
)
其中'name'是字段名,你可以用 name like 'name'来查找

根据表的字段数,即一个表有多少个字段来查找.
select name from sysobjects
where xtype='U' and info=15(这里是多少个字段)

根据表的行数来查找, 先运行下面这段话,建立存储过程.

create procere pro_table_count
(
@num int
)
as
declare @table table(name varchar(100),id int identity(1,1),isbe int)
insert into @table(name) (select name from sysobjects where xtype='U')

declare @tablecount int,@pos int
declare @tablename varchar(100)

declare @count int
declare @sqlstr nvarchar(100)

select @tablecount=count(*) from @table
set @pos=0

while @pos<@tablecount
begin
set @pos=@pos+1
select @tablename=name from @table where id=@pos
set @sqlstr='select @count=count(*) from '+@tablename
exec sp_executesql @sqlstr,N'@count int output',@count output
if @count=@num --修改这里可以检测是否大于或者小于
update @table set isbe=1 where name=@tablename
end
select name from @table where isbe=1
go
后面就运行这个查询就可以了
exec pro_table_count @num=2 --2是记录的行数

要多加点分啊 我是专门给你写的.. 写了我10多分钟呢

Ⅳ 那我用SQL创建表之后,为什么在所创建的数据库中找不到呢

用SQL创建表之后,在所创建的数据库中找不到是设置错误造成的,解决方法为:

1、在计算机中,鼠标左键单击【程序】中的Oracle的连接程序,如下图所示。

Ⅵ mysql中 如何通过sql语句 找到相应的表

SelectB.name表名称,A.NAME字段名称,C.name字段类型,A.length长度,A.isnullable是否为空
FROMsyscolumnsA
JOINsysobjectsBONA.id=B.id
JOINsystypesCONA.xusertype=C.xusertype
WHEREB.nameLIKE'%表名称%'

Ⅶ 如何在SQL中查找数值所在表

哥们儿,数据库不会这么用的,虽然能做到
如:
1、声明游标
//关键,查询表名,通过游标可以控制表名逐行筛选
select name from sysobjects
where type='U'
2、开始游标,得到表名@tablename
3、循环拼接sql语句并判断
@sql = 'select * from ' + @tablename + ' where 1 = 1'
select @sql += ' or name = ' + 你的值 from syscolumns where id = object_id(@tablename)
exec(@sql) --得到的结果,最后你需要怎么处理就怎么处理,这里返回的是表
以上只是思路,我是没这么用过,你自己看着办

Ⅷ 在SQL中怎么查找自动生成表中的数据有一个表是每天根据年月日为表名生成的一张表,怎么查询里面的数据

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE type = 'P' AND name = 'P_XXX')
BEGIN
DROP Procere [dbo].[P_XXX]
END
GO

CREATE PROCEDURE dbo.P_XXX
(
@a varchar(100),
@b varchar(100)
)
AS

SET NOCOUNT ON

SET XACT_ABORT ON

BEGIN

DECLARE @sqlstr NVARCHAR(MAX)
DECLARE @date DATETIME
SET @date = GETDATE()

SET @sqlstr = 'select * from T_XXX_'
SET @sqlstr = @sqlstr + CAST(YEAR(@date) AS VARCHAR(4))
SET @sqlstr = @sqlstr + CAST(MONTH(@date) AS VARCHAR(2))
SET @sqlstr = @sqlstr + CAST(DAY(@date) AS VARCHAR(2))
SET @sqlstr = @sqlstr + ' where columna = ''' + @a + ''' and columnb = '''
+ @b + ''''
EXEC sp_executesql @sqlstr
----把EXEC sp_executesql @sqlstr 改成Print @sqlstr再执行可查看@sqlstr拼接效果
RETURN @@ERROR

END

SET NOCOUNT OFF
SET XACT_ABORT OFF
GO

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

第一次回答:
写存储过程或者函数来做。

第二次回答:
过程如下,你还可以完善一下
create procere 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 b.id = a.id and b.name = @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 procere get_table
go
create procere 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 b.id = a.id and b.name = @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 a.name from sysobjects a
where type = 'U' and uid = 1 and exists( select 1 from syscolumns b where b.id = a.id and b.name = 'name')
select * from #tables
drop table #tables

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

select count(1) from tablename where name = '张三'
结果大于零就说明这个表是你要找的表之一了。
自己研究下吧。

Ⅹ SQLserver中CREATE TABLE 建成功后为啥找不到建好的表呢

出现此问题的原因为:创建表后没有刷新,导致看不到。

解决的方法和详细的操作步骤如下:

1、第一步,创建表并输入列名,选择数据类型,然后设计列,见下图,转到下面的步骤。