티스토리 뷰

SSMS

시퀀스, 조건문

WPOWERKKFSLDFK 2026. 6. 15. 22:02

 

시퀀스

-- 시퀀스 생성
CREATE SEQUENCE 시퀀스10           -- 시퀀스 객체 이름
     AS BIGINT                     -- 생성되는 값의 타입 (기본은 BIGINT)
    START WITH 0                   -- 최초 한 번 뽑을 값
    INCREMENT BY 1                 -- 호출할 때마다 증가시킬 값
    MINVALUE 0                     -- 최소값 (CYCLE 시 여기로 돌아옴)
    MAXVALUE 5                     -- 최대값
    CYCLE                          -- 최대/최소 도달 시 다시 순환
    NO CACHE;                      -- 미리 값 묶음 캐시 안 함(안전, 대신 약간 느림)

-- 시퀀스 제거
DROP SEQUENCE 시퀀스10;            -- 객체 자체를 삭제, 다시 쓰려면 CREATE 필요

-- 시퀀스 강제변경
ALTER SEQUENCE 시퀀스10
    RESTART WITH 1;                -- 다음 호출부터 1에서 다시 시작

-- 시퀀스 정보 조회
SELECT * 
FROM sys.sequences
WHERE name = '시퀀스10';           -- start_value, increment, min/max, current_value 등 확인

-- 시퀀스 신규 채번
SELECT NEXT VALUE FOR 시퀀스10;    -- 시퀀스에서 다음 숫자 하나 꺼내오기

 

변수

/* 1. @@ 시스템 변수 */
SELECT @@ERROR    AS ErrNo,    -- 직전 구문의 에러번호 (0이면 정상)
       @@ROWCOUNT AS RowCnt,   -- 직전 구문이 영향 준 행 수
       @@IDENTITY AS LastId;   -- 마지막 IDENTITY 값

/* 2. @ 사용자 변수 선언 */
DECLARE @Cnt    INT,
        @Name   NVARCHAR(50),
        @Today  DATE;          -- DECLARE로 @변수 이름 + 타입 지정

SET @Cnt = 0;
SET @Name = N'홍길동';
SET @Today = GETDATE();        -- 선언 후 기본값은 NULL, SET/SELECT로 값 할당

/* 3. 자주 쓰는 패턴 */
DECLARE @EmpSeq   INT,
        @EmpName  NVARCHAR(100),
        @IsOk     BIT,
        @ErrCode  INT;

SET @IsOk    = 1;
SET @ErrCode = 0;

/* 4. SET 사용 예시 (단건 세팅용) */
DECLARE @Total INT;

SET @Total = 10;
SET @Total = @Total + 5;

SET @Total = (SELECT COUNT(*)   -- 결과가 1행 1컬럼인 쿼리 넣기 좋음
              FROM TDAEmp);

/* 5. SELECT 사용 예시 (여러 변수 한 번에) */
DECLARE @DeptCnt INT,
        @EmpCnt  INT;

SELECT @DeptCnt = COUNT(*) FROM TDADept;
SELECT @EmpCnt  = COUNT(*) FROM TDAEmp;  -- 여러 변수 동시 세팅 가능

DECLARE @OneEmpSeq  INT,
        @OneEmpName NVARCHAR(100);

SELECT TOP 1 
       @OneEmpSeq  = EmpSeq,
       @OneEmpName = EmpName
FROM TDAEmp;

 

조건문 예시 소스 코드

/* 조건문 정리 메모
   - IF: 독립적으로 사용, 복잡한 로직 가능
   - CASE, IIF: SELECT/UPDATE 등 SQL 문 안에서만 사용 (단독 사용 불가)
*/

-----------------------------
-- 1. IF 기본 예제
-----------------------------
DECLARE @IN_숫자 INT;
SET @IN_숫자 = 5;

IF @IN_숫자 > 0 BEGIN
    SELECT '양수' AS 결과;
END 
ELSE IF @IN_숫자 < 0 BEGIN
    SELECT '음수' AS 결과;
END 
ELSE BEGIN
    SELECT '0' AS 결과;
END;


-----------------------------
-- 2. CASE WHEN 사용 예제
--    (SELECT 안에서 사용)
-----------------------------
DECLARE @IN_숫자2 INT;
SET @IN_숫자2 = -3;

SELECT 결과 =
       CASE 
           WHEN @IN_숫자2 > 0 THEN '양수'
           WHEN @IN_숫자2 < 0 THEN '음수'
           ELSE '0'
       END;


-----------------------------
-- 3. IIF 사용 예제
--    간단한 2분기용 (SQL Server 2012+)
-----------------------------
DECLARE @IN_숫자3 INT;
SET @IN_숫자3 = 10;

SELECT 결과 = IIF(@IN_숫자3 > 0, '양수', '0 이하');


-----------------------------
-- 4. IF EXISTS 사용 예제
--    (존재 여부 체크에 권장)
-----------------------------
IF EXISTS (SELECT 1 FROM TDAEmp WHERE EmpName = N'홍길동')
BEGIN
    SELECT '존재함' AS 결과;
END
ELSE
BEGIN
    SELECT '없음' AS 결과;
END;


-----------------------------
-- 5. COUNT(*)로 존재 여부 체크 (비권장 패턴 예시)
--    -> EXISTS가 더 효율적이라 주로 피하는 패턴
-----------------------------
DECLARE @Cnt INT;

SELECT @Cnt = COUNT(*)
FROM TDAEmp
WHERE EmpName = N'홍길동';

IF @Cnt > 0
BEGIN
    SELECT '존재함' AS 결과;
END
ELSE
BEGIN
    SELECT '없음' AS 결과;
END;

 

 

'SSMS' 카테고리의 다른 글

커서(Cursor)  (1) 2026.06.15
반복문  (0) 2026.06.15
SSMS 프로그래밍  (0) 2026.06.15
조건관련  (0) 2026.06.15
자료형 변환  (0) 2026.06.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2026/09   »
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
글 보관함