SQL實用語句

2021-10-07 17:33:14 字數 4299 閱讀 1872

sql實用語句(三)技巧

1、1=1,1=2的使用,在sql語句組合時用的較多

「where 1=1」 是表示選擇全部 「where 1=2」全部不選,

如:if @strwhere !=』』

begin

set @strsql = 『select count() as total from [』 + @tblname + '] where 』 + @strwhere

endelse

begin

set @strsql = 'select count() as total from [』 + @tblname + 『]』

end我們可以直接寫成

錯誤!未找到目錄項。

set @strsql = 『select count(*) as total from [』 + @tblname + '] where 1=1 安定 '+ @strwhere 2、收縮資料庫

–重建索引

dbcc reindex

dbcc indexdefrag

–收縮資料和日誌

dbcc shrinkdb

dbcc shrinkfile

3、壓縮資料庫

dbcc shrinkdatabase(dbname)

4、轉移資料庫給新使用者以已存在使用者許可權

exec sp_change_users_login 『update_one』,『newname』,『oldname』

go5、檢查備份集

restore verifyonly from disk=『e:\dvbbs.bak』

6、修復資料庫

alter database [dvbbs] set single_user

godbcc checkdb(『dvbbs』,repair_allow_data_loss) with tablock

goalter database [dvbbs] set multi_user

go7、日誌清除

set nocount on

declare @logicalfilename sysname,

@maxminutes int,

@newsize int

use tablename – 要操作的資料庫名

select @logicalfilename = 『tablename_log』, – 日誌檔名

@maxminutes = 10, – limit on time allowed to wrap log.

@newsize = 1 – 你想設定的日誌檔案的大小(m)

setup / initialize

declare @originalsize int

select @originalsize = size

from sysfiles

where name = @logicalfilename

select 'original size of 』 + db_name() + 』 log is 』 +

convert(varchar(30),@originalsize) + 』 8k pages or 』 +

convert(varchar(30),(@originalsize*8/1024)) + 『mb』

from sysfiles

where name = @logicalfilename

create table dummytrans

(dummycolumn char (8000) not null)

declare @counter int,

@starttime datetime,

@trunclog varchar(255)

select @starttime = getdate(),

@trunclog = 『backup log 』 + db_name() + 』 with truncate_only』

dbcc shrinkfile (@logicalfilename, @newsize)

exec (@trunclog)

– wrap the log if necessary.

while @maxminutes > datediff (mi, @starttime, getdate()) – time has not expired

and @originalsize = (select size from sysfiles where name = @logicalfilename)

and (@originalsize * 8 /1024) > @newsize

begin – outer loop.

select @counter = 0

while ((@counter < @originalsize / 16) and (@counter < 50000))

begin – update

insert dummytrans values (『fill log』) delete dummytrans

select @counter = @counter + 1

endexec (@trunclog)

endselect 'final size of 』 + db_name() + 』 log is 』 +

convert(varchar(30),size) + 』 8k pages or 』 +

convert(varchar(30),(size8/1024)) + 『mb』

from sysfiles

where name = @logicalfilename

drop table dummytrans

set nocount off

8、說明:更改某個表

exec sp_changeobjectowner 『tablename』,『dbo』

9、儲存更改全部表

create procedure dbo.user_changeobjectownerbatch

@oldowner as nvarchar(128),

@newowner as nvarchar(128)

asdeclare @name as nvarchar(128)

declare @owner as nvarchar(128)

declare @ownername as nvarchar(128)

declare curobject cursor for

select 『name』 = name,

『owner』 = user_name(uid)

from sysobjects

where user_name(uid)=@oldowner

order by name

open curobject

fetch next from curobject into @name, @owner

while(@@fetch_status=0)

begin

if @owner=@oldowner

begin

set @ownername = @oldowner + 『.』 + rtrim(@name)

exec sp_changeobjectowner @ownername, @newowner

end– select @name,@newowner,@oldowner

fetch next from curobject into @name, @owner

endclose curobject

deallocate curobject

go10、sql server中直接迴圈寫入資料

declare @i int

set @i=1

while @i<30

begin

insert into test (userid) values(@i)

set @i=@i+1

end案例:

有如下表,要求就表中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:

name score

zhangshan 80

lishi 59

wangwu 50

songquan 69

while((select min(score) from tb_table)<60)

begin

update tb_table set score =score1.01

where score<60

if (select min(score) from tb_table)>60

break

else

continue

end

C 實用語句

兩個方法都是傳遞乙個相對的 url,然後返回乙個相對於當前客戶端瀏覽器的相對url位址 但是兩者的返回值,卻截然不同 resolveclienturl返回相對於當前頁面下檔案的位址 resolveurl則返回頁面所在應用程式下的相對位址 例如 頁面 student main.aspx 影象 imag...

實用SQL語句

1 將乙個表中的內容拷貝到另外乙個表中 insert intotestt1 a1 b1,c1 selecta,b cfromtest insert intotesttselect fromtest 前提是兩個表的結構完全相同 insert intonotebook id title content ...

實用sql語句

1。加許可權 grant alter,create,select,insert,update,delete,index on recommend.to growth 10.1.1.1 identified by growth flush privileges alter table feed cha...