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
end
else
begin
set @strSQL = 'select count(*) as Total from [' + @tblName + '] [' + @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'
go
5. バックアップセットを確認します
RESTORE VERIFYONLY from disc='E:dvbbs.bak'
6. データベースを修復します
ALTER DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
ALTER DATABASE [dvbbs] SET MULTI_USER
GO
7. ログクリア
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 操作するデータベース名
SELECT @LogicalFileName = ' table name_log', -- ログファイル名
@MaxMinutes = 10, -- ログのラップに許可される時間の制限
@NewSize = 1 -- 設定したいログファイルのサイズ(M)
セットアップ/初期化
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT ' ' + db_name() + ' LOG の元のサイズは ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8Kページまたは ' +
CONVERT (VARCHAR (30), (@OriginalSize*8/1024)) + 'MB' Starttime DateTime,
@trunClog Varchar (255)
@Starttime = getdate () を選択、
@trunclog = 'backup log' + db_name () + 'with truncate_only'
Dbcc sinnerfile (@logicalFilename, @newsize)
exec (@ TruncLog)
-- 必要に応じてログをラップします。
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE; ()) -- 時間は切れていない
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- 外側のループ
SELECT @Counter = 0
WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K ページ or ' +
CONVERT(VARCHAR(30) ),(size*8/1024)) + 'MB'
FROM sysfiles WHERE name = @LogicalFileName
DROP TABLE Dummytransy SET NOCOUNT OFF
8. 説明: テーブルを変更します
Exec SP_CHANGEOBJECTOWNER 'TABLENAME', 'Dbo'
9.ストレージはすべてのテーブルを変更します
ERBATCHo @Oldowner as nvarchar (128),
@newowner as NVARCHAR(128)
AS
DECLARE @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
END
close curObject
deallocate curObject
GO
10. SQL SERVERのループにデータを直接書き込む
declare @i int
set @i =1
while @i begin
テスト(ユーザーID)値に挿入(@i) set @i=@i+1
end
ケース:
以下の表がありますが、合格させるには、不合格になったすべての人を毎回 0.1 ずつ加算する必要があります: 9
while ((select min(score) from tb_table) begin
update tb_table set core =score*1.01
where core if (select min(score) from tb_table)>60
break
else
Continue
End
上記はMYSQL Classic文の内容です- テクニック その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。