티스토리 뷰
시퀀스
-- 시퀀스 생성
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 |
