壹、sql数据库中所有表中查询关键字使用光标循环执行以下代码可能效率有点低。
下面是我写的存储过程语句供参考
--execsearchkeyword'physical'
Createprocsearchkeyword(@keywordvarchar(100))
as
begin
declare@tablenamevarchar(100),@colnamevarchar(100),@sqlnvarchar(2000),@couint
createtable#t
(
tablenamevarchar(100),
colnamevarchar(100)
)
declarec1cursorfor
selecta.nameasTableName,b.nameasColNameFromsysobjectsa
innerjoinsyscolumnsbon(a.id=b.id)
wherea.xtype='U'
openc1
fetchnextfromc1into@tablename,@colname
WHILE@@FETCH_STATUS=0
开始
set@sql='select@count=count(*)from'+@tablename+'where'+@colname+'=@keyword'
begintry
execsp_executesql@sql,N'@countintout,@keywordvarchar(20)',@couout,@keyword
endtry
begincatch
设置@cou=0
endcatch
if@cou>0
begin
insertinto#tvalues(@tablename,@column_name)
end
fetchnextfromc1into@tablename,@colname
end
CLOSEC1
DEALLOCATEc1
select*from#t
end
--execsearchkeyword'physical'
Createprocsearchkeyword(@keywordvarchar(100))
as
begin
declare@tablenamevarchar(100),@colnamevarchar(100),@sqlnvarchar(2000),@couint
createtable#t
(
tablenamevarchar(100),
colnamevarchar(100)
)
declarec1cursorfor
selecta.nameasTableName,b.nameasColNameFromsysobjectsa
innerjoinsyscolumnsbon(a.id=b.id)
wherea.xtype='U'
openc1
fetchnextfromc1into@tablename,@colname
WHILE@@FETCH_STATUS=0
开始
set@sql='select@count=count(*)from'+@tablename+'where'+@colname+'=@keyword'
begintry
execsp_executesql@sql,N'@countintout,@keywordvarchar(20)',@couout,@keyword
endtry
begincatch
设置@cou=0
endcatch
if@cou>0
begin
insertinto#tvalues(@tablename,@column_name)
end
fetchnextfromc1into@tablename,@colname
end
CLOSEC1
DEALLOCATEc1
select*from#t
end
用于从数据库中的表中查询数据。 关键字:select、where等。
注意:查询只是数据的显示,不会修改数据库
1查询所有数据:select*fromtable“*”表示所有选中的列;、年龄、性别、生日取表;(注:写入所有字段的查询效率比“*”高,但写入方法比较麻烦)
21、字段2…….fromtable;
3.别名查询(别名用于方便查看和处理数据,可以为表和列指定别名)。 AS
4。 清除重复值(询问指定列,数据不出现重复):SELECTDISTINCT字段1,字段2...表FORM;5(注:参与计算的列必须是数字类型)
5.1带固定值的计算:SELECT列名1+固定值FROMtable;
5.2带列的计算:SELECT列1+列2FROMtable;
6.条件查询:SELECT*FromtableWHEREfield=value;