250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- PS
- 다대다
- 연관관계
- eager
- 즉시로딩
- 일대다
- 이진탐색
- 낙관적락
- BOJ
- 스프링 폼
- JPQL
- fetch
- 동적sql
- 힙
- 비관적락
- 유니크제약조건
- exclusive lock
- FetchType
- shared lock
- dfs
- 연결리스트
- SQL프로그래밍
- 스토어드 프로시저
- querydsl
- CHECK OPTION
- 백트래킹
- 지연로딩
- 다대일
- execute
- 데코레이터
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
SQL 에서의 변수 사용, 그리고 PREPARE 와 EXECUTE 절 본문
728x90
# SQL 에서의 변수
- SQL 도 다른 일반적인 프로그래밍 언어처럼 변수를 선언하고 사용할 수 있다.
- 변수는 MySQL 워크벤치를 재시작할 때까지는 유지되만, 종료하면 없어진다.
SET @txt = '도시 이름 : ';
SET @population = 8000000;
SELECT @txt, Name, Population FROM city WHERE Population >= @population;
# LIMIT 에는 사용할 수 없다
- 이 SQL 은 SELECT 문에서 오류가 발생한다.
- LIMIT 에는 변수를 사용할 수 없기 때문이다.
# LIMIT 에 변수를 사용할 수 있게 하는 편법 → PREPARE 와 EXECUTE
SET @txt = '도시 이름 : ';
SET @population = 8000000;
SET @count = 3;
PREPARE mySQL FROM 'SELECT @txt, Name, Population FROM city WHERE Population >= @population LIMIT ?';
EXECUTE mySQL USING @count;
- PREPARE 는 'SELECT ~~ LIMIT ?' 문을 실행하지 않고 mySQL 이라는 이름으로 준비만 해 놓는다.
- ? 부분에는 변수가 들어갈 것이다.
- EXECUTE 로 mySQL 에 저장된 SELECT 문을 실행할 때, USING 으로 물음표(?) 에 @count 변수의 값을 대입한다.
- 결론적으로 아래와 같은 SQL 문이 실행된다
- SELECT @@txt, Name, Populcation FROM city WHERE Population >= @populiation LIMIT 3;
'SQL' 카테고리의 다른 글
내부 조인과 외부 조인 (0) | 2024.04.10 |
---|---|
[SQL] 데이터 형 변환 - 명시적인 변환 (0) | 2024.04.10 |
대용량 테이블의 삭제 - DROP, DELETE, TRUNCATE (0) | 2024.04.09 |
다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT (0) | 2024.04.09 |
AUTO_INCREMENT 커스텀하기 (0) | 2024.04.09 |