반응형
1-1 DB정보 알기
--시스템에 생성된 테이블 보기 select * from sysobjects where type='U' --버전알아내기 select @@version --서비스 실행상태보기 net start -- 현재 시작되어 있는 서비스 net start mssqlserver net start mssql$inst net stop sqlagent
1-2 DBCC
-- 데이타베이스 용량 줄이기 dbcc shrinkdatabase(testdb,10) -- 데이타베이스 파일 줄이기 10M로 줄이기 dbcc shrinkfile(testdb,10) --테이블 검사 dbcc checktable dbcc checkdb --테이블, 색인의 조각비율 dbcc showcontig --테이블 색인을 재작성 filefactor 20 dbcc dbreindex(test,'',20) dbcc shwo_statistics ---지정한 시스템 테이블의 일관성과 테이블간의 일치하지 않는 내용 검사 dbcc checkcatalog test --I/O량 확인 set statistics io on
1-3 로그백업
--로그백업 backup log pubs to pubslog --로그를 그냥 비울때 backup log pubs with no_log backup log pubs with truncate_only --로그 점유율 dbcc sqlperf(logspace)
1-4 데이타베이스 백업
--백업 backup database pubs to disk='c:\temp\pubs' with init --복원 restore database pubs to disk='c:\temp\pubs'
1-5 변수의 크기
bigint 8바이트 정수 int 4바이트 정수 smallint 2바이트 정수 tinyint 1바이트 정수 bit 0,1 float 부동소숫점(15자리) real 부동소숫점(7자리) datetime 8바이트 날짜시간 smalldatetime 4바이트 날짜시간 char, varchar 8000자이하 nchar,nvarchar 4000자 이하 유니코드 text 8000자 이상 Ntext 4000자 이상 유니코드 binary, varbinary 8000 바이트 이하 이진 image 8000 바이트 이상 그림 money 8바이트 화폐 smallmoney 4바이트 화폐 table 테이블자체 sql_variant text, ntext, image, timestamp 를 제외한 모든 자료형 cursor 커서 timestamp 유일한수
1-6 문자열 변형
convert(char(30), title) --30글자짜리 문자열로 변형 substring(title,1,30) -- 전체문장중 30글자만 표시하고 나머지는 공백으로 남겨둠 cast(title as char(30)) -- 문자열변경 replicate(0,5) --0을 5번 반복
select getdate() --날짜 select convert(varchar(30), getdate(),111) select convert(varchar(30), getdate(),112) --시간 select convert(varchar(30), getdate(),108)
-- 앞자리 0으로 채우기 create function fn_FillStr ( @No bigint, @Length int, @ReplaceChar char(1) ) returns varchar(8000) as begin return ( replicate(@ReplaceChar, @Length - len(convert(varchar(20), @No))) + Convert(varchar(20), @No) ) end go select dbo.fn_FillStr(123,6,'0') --3자리마다 콤마찍기 create function fn_CommaFormat ( @strNumber varchar(30), @chrComma char(1) ) returns varchar(50) as begin if len(@strNumber) >3 set @strNumber = dbo.fn_CommaFormat(substring(@strNumber,1,len(@strNumber)-3),',') + @chrComma + Right(@strNumber,3) return(@strNumber) end go select dbo.fn_CommaFormat(12345678,',') go
1-7 UNION 사용
UNION ALL -- 중복데이터도 모두 가져옴 UNION -- 중복데이터는 삭제
1-8 테이타입력
--새로운 테이블에 입력 : 색인이나 키는 복사하지 않는다. select * into test2 from t1 -- 이미 존재하는 테이블에 테이터 입력 insert test2 select * from test1
1-9 데이타베이스 의존성확인
sp_help test sp_helpconstraint test sp_depends test sp_helpindex test --모든 제약 중지 alter table test nocheck constraint all --모든 제약 시작 alter table test check constraint all
1-10 동적쿼리
declare @sql varchar(255) set @sql = 'select count(*) from ' set @sql = @sql + 'titles' exec(@sql)
1-11 CASE
select ... , case whe sex=1 then '남' else '여' end as '성별' from ...
1-12 동적테이블
declare @i int, @sql varchar(1000) set @i=0 while @i < 30 begin set @i = @i + 1 set @sql = 'create table a' + convert(varchar(3),@i) + ' (' set @sql = @sql + 'id int)' select @sql exec (@sql) end go select name from sysobjects where type='U' and like 'a%' order by name
1-13 테스트 테이타 입력
--테이블만들기 use tempdb drop table test go create table test ( id int indentity, name char(80) default 'default name', date smalldatetime default getdate() ) create clustered index test_idx on test(id) go --실행코드 set nocount on declare @i smallint set @i=0 while @i < 10000 begin set @i=@i+1 insert test default values end set nocount off select max(id() from test --결과확인
1-14 블로킹 모니터링
sp_who sp_block kill 51 dbcc inputbuffer (52) -- 분산트랜젝션 처리를 하는 도중 오류가 발생하면 자동적으로 롤백처리 set xact_abort on
1-15 function
create function fn_test(@id varchar(4)) return table as return ( select * from where id=@id ) --사용 select * from dbo.fn_test('123')
1-16 전표번호 생성
--날짜와 번호로 생성 declare @OrderNum bigint --select @OrderNum = max(OrderNum) from orders set @OrderNum=2 if @OrderNum is null or @OrderNum = '' set @OrderNum = substring(convert(char(8), getdate(),112),1,8) + '00001' else set @OrderNum = substring(convert(char(8), getdate(),112),1,8) + right(replace(str(convert(int,right(@OrderNum,5))+1), ' ','0'),5) select @OrderNum
2-1 테이블생성
create database test on primary ( NAME = N'test_data', FILENAME = N'c:\temp\test_Data.MDF', SIZE=5, MAXSIZE=100, FILEGROWTH = 10% ) log on ( NAME = N'test_log', FILENAME = N'c:\temp\test_Log.MDF', SIZE=2, FILEGROWTH = 1MB )
2-2 identity()함수
select indentity(int,1,1) as Num, Name into #test from test
2-3 매월 첫날과 마지막날
declare @CurrDate datetime set @CurrDate = getdate() select dateadd(dd, -1*day(@CurrDate)+1, @CurrDate) as 시작일, dateadd(mm, 1, @CurrDate) - day(@CurrDate) as 마지막일
2-4 원격쿼리
select * from openquery([killer\sql2000],'select * from pubs.dbo.sales') select * from [killer\sql2000].pubs.dbo.sales
반응형
'DB > MS-SQL' 카테고리의 다른 글
마지막으로 Insert 된 Ident 값 얻기 (0) | 2010.07.08 |
---|---|
MS-SQL, Oracle DB Link | (0) | 2010.06.30 |
페이징 (0) | 2010.06.30 |
MSSQL2005 쿼리 결과를 XML 로 저장하자. (0) | 2010.06.30 |
Beginning SQL Server 2005 XML Programming : Part Ⅰ (0) | 2010.06.30 |