MSSQL 모든 테이블 삭제

exec sp_MsForEachTable 'DROP TABLE ?'
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2013/10/18 09:34 2013/10/18 09:34
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/130

Table 자동증가 인덱스 초기화

dbcc checkident(<TableName>, reseed, 0)
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2013/06/17 11:26 2013/06/17 11:26
,
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/118

Clustered Index와 Non-clustered Index

http://jhbench.tistory.com/308

http://blog.naver.com/jadin1/70096018381
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2013/01/07 15:44 2013/01/07 15:44
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/111

Table 목록, Column 목록확인

declare @tableName varchar(100)

SET  @tableName = 'Tb_Items'

-- 테이블 목록
select * from information_schema.tables 
where TABLE_NAME = @tableName

-- 테이블 컬럼
select
a.name as table_name,
b.name as column_name,
c.name as data_type,
b.length as data_length
from sys.tables a
inner join sys.syscolumns b on a.object_id=b.id
inner join sys.systypes c on c.xtype=b.xtype
where a.name = @tableName --테이블이름
and c.name != 'sysname'
order by colid


-- PK 명칭과 해당 테이블을 select 해온다.
select t.name, p.name from sysobjects p, sysobjects t
where  p.xtype = 'PK' and t.id = p.parent_obj and t.xtype = 'U'
and t.name = @tableName
order by 1


--FK 명칭과 해당 테이블을 select 해온다.
select t.name, f.name  
from sysobjects f, sysobjects t 
where f.xtype = 'FK' and f.parent_obj = t.id
and t.name = @tableName


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2012/09/04 14:59 2012/09/04 14:59
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/100

경과 시간 표시

SELECT GETDATE()
SELECT CONVERT(DATETIME, '2012-06-07 10:36:39.603')
SELECT DATEDIFF(S, CONVERT(DATETIME, '2012-06-07 10:36:39.603'), GETDATE())

SELECT	CONVERT(VARCHAR, DATEDIFF(SECOND, CONVERT(DATETIME, '2012-06-05 09:36:39.603'), GETDATE())/60/60/24) 
+		'일 '
+		CONVERT(VARCHAR, DATEDIFF(SECOND, CONVERT(DATETIME, '2012-06-05 09:36:39.603'), GETDATE())/60/60%24) 
+		'시간 '
+		CONVERT(VARCHAR, DATEDIFF(SECOND, CONVERT(DATETIME, '2012-06-05 09:36:39.603'), GETDATE())/60%60) 
+		'분 '  
+		CONVERT(VARCHAR, DATEDIFF(SECOND, CONVERT(DATETIME, '2012-06-05 09:36:39.603'), GETDATE())%60)
+		'초'
모 보면 알겠지만.. 단순하다.

DATEDIFF를 이용하여.. 시작일과 종료일을 지정하고 초로 표시하면 그 차이만큼 초가 나타난다.

거기에 일은 60/60/24 .. 딱 봐도.. 전체 초를 60으로 나누면 분이 되고..
그것을 또 60으로 나누면 시간이 된다.. 이를 24로 나누면.. 일이 되는것..
시간으로 표시하기 위해선.. %24 나머지 값을 표시하면 끝~~~

간혹 이런 쓸데없는 표기를 원하는 곳이 있어서 걍 해봤다..
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2012/06/07 11:09 2012/06/07 11:09
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/99

컬럼에 순번 넣기

어쩌다.. 컬럼을 추가해서 순번을 넣는 경우가 있다..
걍 select 해서 1번부터 마지막까지 차례대로 업데이트하는 구문..

DECLARE @i int
SET  @I = 1;

WHILE @i <=  (select COUNT(*) + 1 from dbo.tb_User where SortOrder is not null)
BEGIN

UPDATE dbo.tb_User
SET  SortOrder = @i
WHERE EmpID = ( SELECT TOP 1 EmpID FROM dbo.tb_User WHERE SortOrder IS NULL )

SET  @i = @i + 1;

END

위와 같이 하면.. 쭈~욱 들어간다.. 간단.. ㅋ

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2012/02/06 11:12 2012/02/06 11:12
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/84

mssql 2005 이상 페이징 쿼리

mssql 2005 이상 페이징 쿼리
DECLARE	@QRY		VARCHAR(MAX)
,		@PageNo		INT
,		@PageSize	INT
,		@Sort		varchar(1000)
,		@WHERE		VARCHAR(1000)

SET		@PageNo = 2
SET		@PageSize = 3
SET		@Sort = ' ORDER BY A.WtoAStartDay DESC '

SELECT	A.WorkToAbroadCode
,		A.EmpNo
,		A.UserName
,		A.DepartmentName
,		A.JobTitle
,		A.CountryCode
,		A.WtoAStartDay
,		A.WtoAEndDay
,		A.Complete
FROM	(
		SELECT	TOP (@pageSize * @PageNo) A.WorkToAbroadCode
		,		A.EmpNo
		,		B.UserName
		,		B.DepartmentName
		,		B.JobTitle
		,		A.CountryCode
		,		CONVERT(CHAR(10), CONVERT(DATETIME, A.WtoAStartDay), 126) AS WtoAStartDay
		,		CONVERT(CHAR(10), CONVERT(DATETIME, A.WtoAEndDay), 126) AS WtoAEndDay
		,		A.Complete 
		,		ROW_NUMBER() OVER ( ORDER BY A.WtoAStartDay DESC ) AS 'RowNumber'
		FROM	dbo.tb_WtoAReport AS A
				INNER JOIN ArisamDB.dbo.tb_User AS B 
					ON B.EmpNo = a.EmpNo
		WHERE	A.Complete = '0'
		) AS A
WHERE	A.RowNumber > ( @PageNo - 1 ) * @PageSize 

SELECT	COUNT(*) AS CNT
FROM	dbo.tb_WtoAReport AS A
		INNER JOIN ArisamDB.dbo.tb_User AS B 
			ON B.EmpNo = a.EmpNo
WHERE	A.Complete = '0'
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2011/09/06 17:50 2011/09/06 17:50
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/67

DECLARE @START_DAY	VARCHAR(8)
,		@END_DAY	VARCHAR(8)

SET		@START_DAY	= CONVERT(varchar, GETDATE() - (DATEPART(dw, CONVERT(varchar, GETDATE(), 112)) - 1), 112)	-- 이번주 일요일
SET		@END_DAY	= CONVERT(varchar, GETDATE() + 7 - DATEPART(dw, CONVERT(varchar, GETDATE(), 112)), 112)		-- 이번주 토요일

SELECT @START_DAY, @END_DAY
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2011/08/09 17:17 2011/08/09 17:17
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/62

간단한 output 테스트

간단하게 쓰는 output 테스트..

/*

declare @OutValue varchar(100)
exec dbo.BoardWrite 0, 0, @OutValue output
select @OutValue

*/
ALTER PROCEDURE dbo.BoardWrite
(
	@ArticleNo	int -- 글번호
,	@ParentArticleNo	int -- 부모글 번호
,	@OutValue		varchar(100)  output
)
AS
BEGIN
	-- Update (글번호가 없으면)
	IF(@ArticleNo < 1)
	BEGIN
		SET @OutValue =  'Insert'			
	END
	ELSE IF (@ArticleNo > 0) -- 글번호가 있으면
	BEGIN
		IF(@ParentArticleNo < 1) -- 부모글 번호가 없으면
		BEGIN
			SET @OutValue =  'Update'		
		END
		ELSE IF(@ParentArticleNo > 0) -- 부모글 번호가 있으면
		BEGIN
			SET @OutValue = 'Reply'
		END		
	END
END

실제로는 output을 테스트 한다기 보다는..
게시판 글 쓰는 쿼리를..
Insert/Update/Reply를 한 Procedure에서 사용할려고 하다 보니..
작성하기 전에.. 간단하게 확인하고자 만든거임..
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2010/03/24 17:41 2010/03/24 17:41
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/29

Create Database

데이터 베이스를 Query문으로 생성해보자..

CREATE DATABASE BoardDB
ON
PRIMARY ( NAME = BoardDBData1,
      FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\BoardDBData.mdf',
      SIZE = 100MB,
      MAXSIZE = 200,
      FILEGROWTH = 20)
LOG ON 
( NAME = BoardDBLog1,
   FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\BoardDBLog.ldf',
   SIZE = 100MB,
   MAXSIZE = 200,
   FILEGROWTH = 20)
단순히 테스트용으로 만들려고 한다면..
이렇게 쿼리 하나 만들어 놓고 돌리는 방법도 괜찮을 듯 싶다..

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by jincaesar

2010/03/19 18:44 2010/03/19 18:44
,
Response
No Trackback , No Comment
RSS :
http://jincaesar.maru.net/tc/rss/response/25