1, 1=1, 1=2는 SQL 문 조합에서 자주 사용됩니다
"여기서 1=1"은 모두 선택한다는 의미, "여기서 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 + ']'
end
로 직접 쓸 수 있습니다. 오류! 카탈로그 항목을 찾을 수 없습니다.
set @strSQL = 'select count(*) as Total from [' + @tblName + '] 여기서 1=1 안정화'+ @strWhere 2. 데이터베이스 축소
--인덱스 재구축
DBCC REINDEX
DBCC INDEXDEFRAG
--데이터 및 로그 축소
DBCC SHRINKDB
DBCC SHRINKFILE
3. 데이터베이스를 압축합니다.
dbccshrinkdatabase(dbname)
4. 데이터베이스를 다음으로 전송합니다. 새로운 사용자 사용자 권한 존재
exec sp_change_users_login 'update_one','newname','oldname'
go
5. 백업 세트 확인
RESTORE VERIFYONLY from disk='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 = 'tablename_log', -- 로그 파일 이름
@MaxMinutes = 10, -- 로그 래핑에 허용되는 시간 제한.
@NewSize = 1 -- 로그 파일의 크기 설정하려는 경우(M)
설정/초기화
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of' + db_name() + ' LOG는 ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K 페이지 또는 ' +
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)
-- 필요한 경우 로그를 래핑합니다. 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 '최종 크기 ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30 ),size) + ' 8K 페이지 또는 ' +
CONVERT( VARCHAR(30),(size*8/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)
AS
DECLARE @Name as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR (128)
curObject 커서 선언
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
-- @name,@NewOwner,@OldOwner
선택 curObject INTO @Name, @Owner
에서 다음 가져오기 END
close curObject
할당 해제 curObject
GO
10. SQL SERVER의 루프에 직접 데이터 쓰기
declare @i int
set @i=1
while @i< ;30
begin
테스트(사용자 ID) 값에 삽입( @i) set @i=@i+1
end
사례:
아래 표가 있는데, 불합격자는 모두 정정해야 하며, 매번 0.1씩 증가하면 그냥 합격하게 됩니다.
이름 점수
Zhangshan 80
Lishi 59
Wangwu 50
Songquan 69
while((select min(score) from tb_table)<60)
begin
update tb_table set Score = Score*1.01
where Score< ;60
if (tb_table에서 min(점수) 선택)>60
break
else
continue
end
위 내용은 MYSQL 클래식 문장 - 스킬의 전체 모음입니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(m.sbmmt.com)를 주목하세요!