공부/데이터베이스

변수와 흐름제어

원클릭쓰리버그 2022. 3. 2. 21:04
728x90

 

변수

 

USE BaseballData

-- 변수
DECLARE @i AS INT = 10;

DECLARE @j AS INT;
SET @j = 10;

DECLARE @firstName AS NVARCHAR(15);
DECLARE @lastName AS NVARCHAR(15);
SET @firstName = 
					(SELECT TOP 1 nameFirst
					FROM players AS p
						INNER JOIN salaries AS s
						ON p.playerID = s.playerID
					ORDER BY s.salary DESC);

-- SQL SERVER
SELECT TOP 1 @firstName = p.nameFirst, @lastName = p.nameLast
	FROM players AS p
	INNER JOIN salaries AS s
	ON p.playerID = s.playerID
	ORDER BY s.salary DESC;

SELECT @firstName, @lastName;

 

 

배치

 

-- 배치(batch)

GO

-- 배치를 이용해 변수의 유효번위 설정 가능 { }
DECLARE @i AS INT =10;

--배치는 하나의 묶음으로 분석되고 실행되는 명령어 집합

 

문법이 잘못되더라도 GO를 이용하면 하나는 정상적으로 나오는걸 볼 수 있다.

 

 

흐름제어

 

-- 흐름 제어

--IF
GO
DECLARE @i AS INT =10;

IF @i = 10
	PRINT('BINGO !');
ELSE
	PRINT('NO');

IF @i = 10
BEGIN
	PRINT('BINGO !');
	PRINT('BINGO !');
END
ELSE
	PRINT('NO');


--WHILE
GO

DECLARE @i AS INT = 0;
WHILE @i <= 10
BEGIN 
	SET @i = @i +1;
	IF @i = 6 CONTINUE;
	PRINT @i;
END

 

 

테이블 변수

-- 임시로 사용할 테이블을 변수로 만들 수 있다.
-- testA, testB 만들고 삭제 -> NO!
-- DECLARE를 사용 -> tempdb 데이터 베이스에 임시 저장

 

GO

DECLARE @test TABLE
(
	name VARCHAR(50) NOT NULL,
	salary INT NOT NULL
)

INSERT INTO @test
SELECT p.nameFirst + ' ' + p.nameLast, s.salary
FROM players AS p
	INNER JOIN salaries AS s
	ON p.playerID = s.playerID;

SELECT *
FROM @test;

'공부 > 데이터베이스' 카테고리의 다른 글

데이터베이스 세부 인덱스 확인 및 복합 인덱스  (0) 2022.03.09
윈도우 함수  (0) 2022.03.02
TRANSACTION  (0) 2022.02.16
JOIN (교차 결합)  (0) 2022.02.09
교집합, 합집합, 차집합  (0) 2022.02.09