SQL Server 2005 TSQL

TOP (<식>)
- TOP 에 변수 사용 가능
- 구문
TOP (expression) [PERCENT]
[WITH TIES]



Common Table Expression
- 명명된 테이블 식
- 구문:
WITH ( )
AS ( )

- WITH 절은 다은에 이어지는 SELECT/INSERT/DELETE/UPDATE 구문과 한 문장임
- 단일 WITH 절에서 다중의 CTE를 하나의 T-SQL 문에 정의 가능함.
- 두 가지 유형
재귀 CTE: 쿼리에서 재귀호출이 가능하도록 해 줌
비재귀 CTE: 파생된 테이블과 뷰의 특성이 혼합된 기능임.

- 가 자신을 참조 -> 재귀
- CTE의 재귀형식
<비재귀 SELECT>
union all

- 두번째 SELECT문의 결과가 없을 때 재귀 호출이 중단됨


오류처리
@@ERROR
- 전역변수
- 마지막으로 실행된 T-SQL 문의 오류번홀르 반환함
- T-SQL 문이 성공적으로 실행된 경우 -> @@ERROR = 0
- T-SQL 문이 실행될 때마다 새로운 값이 설정됨
- 제약 사항
SQL문 다음에 매번 @@ERROR 값을 검사해야함
GOTO 문과 Label 을 사용하기 때문에 중앙 집중화된 오류처리를 구현하게 됨
트랜잭션 또는 일괄처리를 중단시키는 오류의 경우에는 오루 처리가 되지 않음.
자세한 오류 정보가 제공되지 않음.

TRY ~ CATCH
- TRY 블록 영역
begin try ~ end try 사이에 있는 코드
- CATCH 블록영역
begin catch ~ end catch 사이에 있는 코드
- TRY 블록영역 내에서 오류가 발생
실행이 관련 CATCH블록으로 이동함
- TRY...CATCH 구조는 중첩 가능함
- CATCH 블록영역 내에서 오류가 발생
중첩 try...catch 구조의 경우에는 가장 가까운 catch 블록으로 이동함
중첩 구조가 아닌 경우에는 호출자에게 오류가 반환됨
- TRY...CATCH가 포착 가능한 오류
@@ERROR 값 설정이 발생하는 모든 런타임 오류

- CATCH 블록영역에서 사용 가능한 함수
error_number() - 오류번호
error_message() - 오류 메시지
error_severity() - 오류 심각도
error_state() - 오류 상태 번호
error_line() - 오류를 발생시킨 줄 번호
error_procedure() - 오류가 발생한 저장 프로시저 또는 트리거의 이름
- CATCH 블록영역의 외부에서 실행하면 NULL이 반환됨.

TRY...CATCH가 처리할 수 없는 오류
- 경고메시지 및 정보 제공 메시지
- 데이터베이스 연결을 끊는 오류
- Attentions ( 클라이언트 인터럽트 요청 또는 손상된 클라이언트 연결 )
- KILL 문
- 컴파일 및 SQL 문 차원의 재컴파일 오류

예 :
-- 일반 select
USE AdventureWorks;
GO

BEGIN TRY
-- Table does not exist; object name resolution
-- error not caught.
SELECT * FROM NonexistentTable;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH

-- 프로시저에서 사용

-- Verify that the stored procedure does not exist.
IF OBJECT_ID ( N'usp_ExampleProc', N'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO

-- Create a stored procedure that will cause an
-- object resolution error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT * FROM NonexistentTable;
GO

BEGIN TRY
EXECUTE usp_ExampleProc
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH;





커밋 불가 트랜잭션
- TRY 블록 내에서의 트랜잭션 중단 오류
- 커밋불가 트랜잭션
커밋될 수 없는 모든 활성 트랜잭션
커밋 불가 트랜잭션에서는 오직 읽기 또는 ROLLBACK TRANSACTION만 실행가능
- 쓰기 작업 또는 COMMIT TRANSACTION은 실행 불가

트랜잭션 상태 조회
XACT_STATE()
- 트랜잭션의 상탤르 반환함
- 1 = 활성상태의 커밋 가능한 트랜잭션
- 0 = 비활성 트랜잭션
- -1 = 활성 상태의 커밋 불가한 트랜잭션



예외처리 - RAISERROR
- RAISERROR : 오류를 발생시키는데 사용됨
- RAISERROR 는 TRY 또는 CATCH 블록에서 사용함
- TRY 블록에서 RAISERROR 를 사용
심각도 11-19 인 RAISERROR 가 실행되면 CATCH 블록으로 이동함
- CATCH 블록에서 RAISERROR를 사용
RAISERROR 를 사용하여 오류를 호출자에게 반환함

오류처리 가이드
- TRY...CATCH 구조를 사용하여 오류 처리 로직을 구현할 것을 권고함
- 기존의 @@ERROR 기반의 오류처리코드를 TRY...CATCH로 대체할 것을 권고함
- 오류정보를 기록할 것을 권고함
문제점을 진단하기 위해서는 오류정보가 필요함
심각한 오류는 테이블에 기록을 남길 것을 권고함
- CATCH 블록 코드를 테스트할 것을 권고함

RANKING 함수
- RANK()
결과 집합의 각 행에 대하여 지정된 파티션 내에서 정렬기준에 의거하여 등급을 부여하는 함수
- DENSE_RANK()
결과집합의 각 행에 대하여 지정된 파티션 내에서 정렬 기준에 의거하여 연속적인 등급을 반환하는 함수
- NTILE()
결과 집합의 각 파티션에 잇는 행들을 지정한 개수만큼의 그룹으로 쪼개어 등급을 부여하는 함수
- ROW_NUMBER()
결과 집합의 각 행에 대하여 행의 우치 번호를 반환하는 함수

- 집계 작업에 사용 가능
- 사용자 정의 함수와 함께 사용 가능

예:
SELECT
RANK() OVER(ORDER BY CITY) AS RANK,
RANK() OVER(PARTITION BY CITY ORDER BY LASTNAME) AS PART_RANK,
DENSE_RANK() OVER(ORDER BY CITY) AS DENSE_RANK,
ROW_NUMBER() OVER(ORDER BY CITY) AS ROW_NUM,
NTILE(4) OVER(ORDER BY CITY) AS NTILE_4,
LASTNAME,
FIRSTNAME,
CITY
FROM EMPLOYEES
ORDER BY CITY, LASTNAME

- OVER 절
파티션 방식 제공
결과 집합의 행들을 정렬

페이징
예: 50에서 60까지의 주문 정보를 일자순으로 정렬
WITH OrderedOrders AS
(select SalesOrderID, OrderDate, Row_Number() OVER(order by OrderDate) as RN from SalesOrderHeader)
select * from OrderedOrders WHERE RN between 50 and 60

PIVOT

UNPIVOT

APPLY

OUTPUT
- DML 연산의 일부로서, 행을 반환하는 기능임
- 작업의 결과를 확인 가능함
"Inserted" 와 "Deleted" 를 사용하여 업데이트 전후의 데이터를 확인 가능함.
- 결과 행을 테이블 또는 변수에 저장 가능함
OUTPUT...INTO...
- 예:
USE AdventureWords;
GO
DELETE SalesShoppingCartItem OUTPUT DELETED.*;
SELECT COUNT(*) AS [Rows in Table] FROM SalesShoppingCartItem;
GO

EXCEPT 와 INTERSECT
- 두 개의 서로 다른 행 집합들을 기반으로 결과 집합을 제공하는 집합 연산자임.
- EXCEPT
첫 번째 결과 집합에는 존재하고 두번째 결과 집합에는 존재하지 않는 행들의 집합을 반환함.
- INTERSECT
양쪽 집합에 모두 존재하는 행들의 집합을 반환함.
- 전제 조건
모든 쿼리의 컬럼들의 수와 순서가 동일해야 함.
데이터 타입이 호환되어야 함
- 예 :
SELECT * FROM TABLEA EXCEPT SELECT * FROM TABLEB;
SELECT * FROM TABLEA INTERSECT SELECT * FROM TABLEB;



UNION, EXCEPT, INTERSECT 다른 T-SQL 문과 연계 사용 시 가이드
- INTO 절을 사용하여 최종 결과 집합을 테이블에 저장하고자 하는 경우에는 첫 번째 쿼리에만 INTO를 기술함.
- ORDER BY 는 SQL문의 마지막 부분에 기술함.
- GROUP BY 와 HAVING 절은 개별 쿼리에만 사용가능하며, 최종 결과 집합에는 영향을 미치지 않음.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/06 12:53 2007/09/06 12:53
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2649

좋은 일이 일어나는 데에는 시간과 인내가 필요하다.
나쁜 일에 빠져드는 데에는 시간이 걸리지 않지만,
거기에서 벗어나는 데에는 상당한 인내가 필요하다.
좋은 것일수록 그것을 얻는 데에는
긴 시간이 필요한 법이다.


- 고든 리빙스턴의《너무 일찍 나이 들어버린 너무 늦게 깨달아버린》중에서 -


* 시간과 인내만 필요한 것이 아닙니다.
혼(魂)을 담은 정성과 노력이 필요합니다.
시간을 낭비하지 말고 촌음처럼 아껴쓰라는 뜻도 됩니다.
좋은 것도 너무 쉽게 얻으면 가벼이 여기기 쉽습니다.
쉽게 얻을수록 쉽게 잃고 쉽게 무너집니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/06 09:46 2007/09/06 09:46
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2648

Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델

Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(1)

Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(2)

Web 2.0이란 무엇인가 : 다음 세대 소프트웨어를 위한 디자인 패턴 및 비즈니스 모델(3-완결)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/05 19:06 2007/09/05 19:06
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2647

2007 여름, 잠실 한강수영장

2007 여름, 잠실 한강수영장



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/05 13:34 2007/09/05 13:34
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2646

인간관계에서 진실한 마음을 얻는 법

more..



이기는 습관



more..



피봇 틀고 바꾸고 비틀어라


more..

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/05 09:53 2007/09/05 09:53
Response
No Trackback , a comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2645

과오에 대해 솔직하게 시인하면 서로를 자각으로 이끈다.
과오는 사람들을 결합시키는 힘이 된다.
자기 과오를 인정하는 것처럼
마음이 가벼워지는 일은 없다.
그에 비해 자기가 옳다는 것을 인정받으려고 안달하는 것처럼
마음 무거운 일도 없다.

- 샤토 브리앙


실패의 원인을 찾을 때의 방향이 먼저 자신에게 향하고 있는지,
다른 사람에게 향하고 있는지에 의해
그 사람의 능력과 품성을 꽤 정확하게 판정할 수 있습니다.
스스로 잘못을 인정하는 것은 매우 어렵지만
나쁜 상황에 처했을 때
솔직히 잘못을 인정하는 것은 매우 큰 효과가 있습니다.

실패의 원인을 나에게서 찾고
이를 솔직하게 드러내는 사람이 강한 사람입니다.
바람직한 영향력, 즉 리더십은
그런데서 자연스럽게 우러나오게 됩니다
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/05 09:45 2007/09/05 09:45
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2644

세월이 흐른 후에

수많은 세월이 흐르고 흐른 후에
숲속에 두 갈래 길이 있었노라고,
그리고 나는 사람들이 덜 간 길을 택했노라고,
그리고 그것이 내 운명을 정했노라고.


- 유영만의《용기》중에서 -


* 로버트 프로스트의 시를 재인용한 글입니다.
인생의 숲길을 가노라면 반드시 갈림길에 서게 됩니다.
그때 남이 가지 않은 길을 선택하기란 쉽지 않습니다.
그러나 그로써 또 하나의 새로운 숲길이 생겨나고
새로운 역사, 새로운 창조가 시작됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/05 09:44 2007/09/05 09:44
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2643

http://www.icograda.org/web/



국제그래픽디자인협의회 [國際─協議會, International Council of Graphic Design Association]

전세계 그래픽디자이너와 그래픽디자인 단체들의 협의회.

구분 - 예술단체
설립연도 - 1963년 4월 27일
소재지 벨기에 브뤼셀
설립목적 전세계 디자이너의 협력과 유대, 시각디자인의 발전
주요활동 총회·국제대회 개최, 세미나 및 뉴스지를 통한 정보와 지식 교환
규모 45개국 70여 단체가 가입

약칭은 ICOGRADA(아이코그라다)이다. 1963년 4월 27일 창립되었다. 세계 각국의 그래픽디자이너들의 정보교류, 협력증진, 권익신장 등을 위해 설립한 민간 국제조직이다.

총회와 이사회, 사무국으로 구성된다. 총회는 2년마다 열리며 이사회 회의는 1년에 4번 세계 각지의 다른 장소에서 개최된다. 비영리단체로 회비와 기부금으로 운영된다.

주요활동은 2년마다 국제대회를 개최하며, 회원국들의 공통 관심사를 토의하고 뉴스지를 통해 새로운 정보와 지식을 교환한다. 또 6년에 한 번씩 국제산업디자인단체협의회(ICSID), 국제인테리어건축가·디자이너연맹과 총회 및 대회를 공동으로 개최한다.

유럽회의, 국제연합교육과학문화기구, 세계지적재산권기구, 국제연합산업개발기구의 자문 단체이다. 2001년 현재 45개 국의 70여 단체가 가입하고 있다. 한국은 1972년 한국디자인포장센터(현재 산업디자인포장개발원)가 가입하였으며, 2000년 한국에서 국제그래픽디자인협의회 대회가 열렸다. 사무국은 벨기에 브뤼셀에 있다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/04 15:28 2007/09/04 15:28
Response
No Trackback , a comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2642

인간의 근육 중 가장 강한 것은 바로 혀이다.
혀는 한 사람을 단번에 무너뜨릴 수 있다.
그 몸집이나 힘이 어느 정도가 되든 상관없다.
또한 그것은 별로 힘을 들이지 않고도
누군가를 거뜬히 들어올릴 수도 있고,
몇 천, 몇 만 명의 사람들을 통째로 무너뜨릴 수도 있다.


- 팻 크로스의 ‘선택의 힘’중에서


리 아이아코카 크라이슬러 전 회장은
‘당신에게 빛나는 아이디어가 있을 수도 있다.
그러나 그것을 널리 알릴 수 없다면,
그것들은 당신을 어디로도 데려가 주지 못한다’고 말했습니다.

그렇습니다.
인간의 육체 중에서 가장 강한 근육은 바로 혀입니다.
사람이 지닌 최고의 도구는 바로 자신의 언어이기 때문입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/04 10:09 2007/09/04 10:09
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2641

사람들은
1. 자신이 가치 있는 일을 하고 있다는 느낌
(sense of meaningfulness)을 받거나,
2. 그 일을 할 때 자신에게
선택권이 있다는 느낌(sense of choice),
3. 그 일을 할만한 기술과 지식을
갖추고 있다는 느낌 (sense of competence),
4. 실제로 진보하고 있다는 느낌
(sense of progress)을 갖게 될 때
일속에서 재미와 열정을 느낀다.

- Kenneth W. Thomas (2000). Intrinsic Motivation at work


돈이 없어서, 혹은 복리후생 수준이 떨어져서 직원들이
열정과 헌신, 몰입을 다하지 않는다고 생각하는 경영자들이 많습니다.
그러나 직원의 마음을 사는 데 돈은 그렇게 결정적인 요소가 아닙니다.
상상력이 지배하는 사회에서 경쟁력의 초석이 되는
구성원의 마음을 잡기위해 보다 많은 관심과 투자가 필요합니다.

//---------------

얼마전 내가 지금 하고 있는 일이 비젼이 있냐는 소릴 들었다.
비젼이란 과연 무엇일까? 내가 생각하고 살아오던 그 비젼이 나에게만 해당이 되고 다른사람이 볼때는 비젼이란 다른 관점이구나 라는 생각이 들게 되었다.
연일 야근과 여유가 없다는 생각이 들정도의 생활이지만 자세히 보면 여러가지 하고 살아가고 있다. 바쁜건 생각일 뿐이지 실제 행동은 한번에 하나씩 하고 있으며, 일을 진행못할 충분한 이유가 있거나 시간을 내야할 일이 있을땐 시간을 내었었다.
그런데, 결론은 시간적 여유가 없고 비젼이 없다... 라는...

다시 수영장을 등록했다. 2달 쉬었었다. 일이 바빠서...
내 직업은 프로그래머다. 웹 프로그래머.
이전 회사에서는 영업부터해서 온갖 업무를 다 해오다가, 올해는 본업인 프로그램을 좀더 스킬업 하기위해 노력하고 있다. 기본 스킬을 버릴수는 없는것 아니겠는가?
나름 연간 계획도 있고, 돈도 어느 정도 모으고, 쓸건 쓰며 살고 있다.
지금 사는 동네가 재개발대상이라 내년에 철거할때 이사가면 이주비을을 주기때문에 아직 반지하에 살고 있다. 전세다(월세 내는게 아까워서). 열심히 살았고, 앞으로도 그럴 계획이다.
그런데, 그 비젼이란 어디서 나온말일까? 날 몰라서일까?
내가 싫어서일까? 알 수가 없다. 원래 난 가진게 없다.그걸 모르진 않았는데...

지금 일속에서 재미를 느끼고 있다. 지루하고 짜증날때도 물론 많다.
하지만, 내가 만들어준 프로그램 혹 사이트에서 고객이 고마움을 표할때 보람을 느낀다.

IT 업계에서 일한다는것. 비젼이 없어 보인다는것.
해보지 않은 사람은 모른다.
방통대 다녀보지 않았으면 졸업에 대해서 쉽게 말하지 말라.
어렵다.생각보다 많이~
현업에서 쓰이지 않는 과목을 공부하기란 어려운 부분이다. 이미 그 과목하나가 하나의 학문 아니던가?
이해가 안되면 자기 전공을 생각해보라~!

남들이 나를 보는 것보다는 난 세상을 더 살았고, 내가 생각할때는 아직 멀었다. 갈 길이 멀다.
모르면 책을 보든, 찾아보든 열심히 한다.단, 알고싶은것에 대해서만.
제발 자기 인생아니면 쉽게 얘기하지 말자~
다 나름 고충이 있기마련이거늘~~~

비젼은 존재하는것 이 아니라, 만들어 가는것이다~


비전 [vision]
[명사]내다보이는 장래의 상황. ‘이상’, ‘전망’으로 순화.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2007/09/04 09:49 2007/09/04 09:49
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/2640

« Previous : 1 : ... 374 : 375 : 376 : 377 : 378 : 379 : 380 : 381 : 382 : ... 639 : Next »

블로그 이미지

- 홍반장

Archives

Recent Comments

  1. 1 pHqghUme 01/05
  2. 1 pHqghUme 01/05
  3. 1 pHqghUme 01/05
  4. 1 pHqghUme 01/05
  5. 1 pHqghUme 01/05

Calendar

«   2025/01   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Statistics Graph

Site Stats

Total hits:
260746
Today:
316
Yesterday:
534