2010년 4월 28일 수요일
각종 페이징 처리
@Page Int,
@Category VarChar(10)
As
Select Top 10 *
From DotNetNote
Where
Category = @Category
And
Num Not In
(
Select Top (10 * @Page) Num
From DotNetNote
Where Category = @Category
Order By Ref Desc, RefOrder Asc
)
Order By Ref Desc, RefOrder Asc
Go
Select Top 코드와 Not In코드가 이 코드문에서 핵심키가되는 코드입니다.
Select Top 10 * 코드는 이하 코드의 조건을 맞춰서 찾아온 정보들중에서 상위10개만 선택하겠다는 의미입니다.
물론 10을 원하는 숫자로 바꾸면 원하는 만큼만 가져올수 있습니다.
Not in 코드는 이하 가로안의 정보를 가져와서 전체DB에서 가로안의 정보만을 배제하고나서 처리하겠다는 의미입니다.
2010년 4월 18일 일요일
Minus Query
FROM (SELECT *
FROM 원본테이블명 a with (nolock)
) a
WHERE NOT EXISTS (SELECT emp_no
FROM (SELECT b.emp_no
FROM 비교대상테이블명 b with (nolock)
) b
WHERE a.emp_no = b.emp_no)
원본테이블에 데이터 추가시 비교대상테이블과 비교하여 추가된 데이터만 확인이 가능하다.
2010년 4월 17일 토요일
CTE(공통 테이블)
이것은 CTE가 임시로 이름이 지정된 결과집합을 저장하는 공통테이블식과 자기 자신에 대한 참조를
포함하여 저장하는 재귀공통테이블식이 있다는 것입니다.
구문
[ WITH
expression_name [ ( column_name [ ,...n ] ) ]
AS
( CTE_query_definition )
<레이블> ::=
구문 블록의 이름입니다. 이 규칙은 문에서 한 번 이상 사용될 수 있는 긴 구문의 섹션 또는 구문 단위를 그룹화하고 레이블을 붙일 때 사용됩니다. 구문 블록이 사용될 수 있는 위치는 <레이블>과 같은 모양의 레이블로 표시됩니다.
[ WITH
2010년 4월 14일 수요일
SELECT INTO
1. SELECT * INTO : 신규테이블 생성하면서 조회한 자료를 넣음
<전체컬럼>
BEGIN TRAN
SELECT * INTO 신규테이블명 FROM 조회테이블명 with(nolock)
WHERE SALE_YMD between '20080101' AND '20090731'
-- ROLLBACK COMMIT
<일부컬럼>
BEGIN TRAN
SELECT * INTO 신규테이블명 FROM
( SELECT AAA, BBB FROM 조회테이블명 with(nolock)
WHERE SALE_YMD between '20080101'
AND '20090731'
) AS STABLE
COMMIT -- ROLLBACK
2.INSERT INTO : 똑같은 스키마를 가진 태이블이 이미 생성된 상태에서 자료를 인서트 함
<전체컬럼>
BEGIN TRAN
INSERT INOT 복사될테이블명 SELECT * FROM 복사대상테이블명
COMMIT -- ROLLBACK
<부분컬럼>
BEGIN TRAN
INSERT INTO 복사될테이블명 SELECT AAA,BBB FROM 복사대상테이블명
COMMIT -- ROLLBACK
2010년 3월 20일 토요일
2005, 2008 에서 더이상 지원되지 않는 기능
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.ko/instsql9/html/d686cdf0-d11d-4dba-9ec8-de1a5f189f25.htm
SQL SERVER 2008에서 더이상 지원되지 않는 기능
http://msdn.microsoft.com/ko-kr/library/ms144262.aspx
isql, osql , sqlcmd
http://technet.microsoft.com/en-us/library/aa214007%28SQL.80%29.aspx
osql
http://technet.microsoft.com/ko-kr/library/ms162806(SQL.90).aspx
http://technet.microsoft.com/en-us/library/aa214012%28SQL.80%29.aspx
2010년 2월 13일 토요일
Linked Server (연결된 서버)
우선 mysql에 연결된 서버로 연결하기 위해선 ODBC드라이버 설치가 필요하다.
ODBC드라이버는 mysql홈페이지에서 다운로드가 가능하다.
mysql홈페이지에서 ODBC드라이버를 다운로드 받아 설치 후 SSMS에서 확인해보면 연결된서버
공급자에 MSDASQL 항목이 생겨야 한다.
안생길 수도 있는데 이것때문에 한참 해메다 찾아낸 방법은 서버에서 regsvr32명령으로 C:\Program Files\Common Files\System\Ole DB\MSDASQL.DLL을 등록시켜주면 된다.
그다음 원격지에서 연결시에는 항상 권한을 잘 확인하여 원격지 접속 유저가 접속하려는 DB,Table,column에대한 접근권한을 확인한다.