blog.daum.net/magixtech/1906523
목차
1-1 DB정보 알기
1-2 DBCC
1-3 로그백업
1-4 데이타베이스 백업
1-5 변수의 크기
1-6 문자열 변형
1-7 UNION 사용
1-8 테이타입력
1-9 데이타베이스 의존성확인
1-10 동적쿼리
1-11 CASE
1-12 동적테이블
1-13 테스트 테이타 입력
1-14 블로킹 모니터링
1-15 function
1-16 전표번호 생성
2-1 테이블생성
2-2 identity()함수
2-3 매월 첫날과 마지막날
2-4 원격쿼리
--------------------------------------------------------------------------------
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
'Databases' 카테고리의 다른 글
SELECT INTO를 사용한 테이블 복사 (0) | 2010.05.13 |
---|---|
SQL2005 유지관리계획 오류 : GUID에는 대시 4개를 사용하여 32개의 자릿수를 사용해야 합니다 (0) | 2010.04.29 |
MsSql 날짜 함수 (0) | 2010.04.14 |
MS SQL Server 에서 날짜 및 시각 비교하는 SQL (0) | 2010.04.14 |
mysql grant user 생성 및 권한 설정 (0) | 2010.04.09 |