>  기사  >  데이터 베이스  >  MYSQL 클래식 문 전체 모음 - 기술

MYSQL 클래식 문 전체 모음 - 기술

黄舟
黄舟원래의
2016-12-20 16:37:151488검색

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 중국어 웹사이트(www.php.cn)를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.