MySQL - 변수: 초보자를 위한 종합 가이드
안녕하세요, MySQL 열망하는 여러분! MySQL 변수의 세계로 가는 흥미로운 여정에서 여러분의 안내자로서 기쁩니다. 컴퓨터 과학을 가르쳐온 지 오래된 제는 변수를 이해하는 것은 데이터베이스 조작의 보물상자를 열어주는 것과 같다고 확신합니다. 그럼, 시작해보겠습니다!
MySQL 변수: 데이터 조작의 기본 블록
변수를 작은 정보를 담는 컨테이너라고 생각해보세요. MySQL에서는 이러한 컨테이너가 다양한 형태와 크기로 존재하며, 각각 고유한 목적을 가지고 있습니다. 하나씩 탐구해보겠습니다.
왜 변수가 중요한가요?
변수 유형에 들어가기 전에, 왜 그들이 중요한지 이야기해보겠습니다. 케이크를 만드는 것을 상상해보세요 (제가 설명하는 이 비유는 잘 작동합니다, 믿어주세요!). 재료를 측정해야 하죠? MySQL의 변수는 측정컵과 스푼과 같습니다. 그들은 데이터를 정확하게 저장하고 측정하고 조작하는 데 도움을 줍니다.
사용자 정의 변수: 당신의 개인 데이터 컨테이너
사용자 정의 변수는 당신의 개인 티퍼웨어 컨테이너와 같습니다. 당신이 그것을 만들고 이름을 지정하며, 무엇을 넣을지 결정합니다. 그들은 매우 유연하며, 세션에서 여러 가지 질의를 통해 사용할 수 있습니다.
사용자 정의 변수 생성 및 사용 방법
예제를 몇 가지 보겠습니다:
SET @my_favorite_number = 42;
SELECT @my_favorite_number;
이 예제에서 우리는 @my_favorite_number
라는 변수를 만들고 42의 값을 할당하고 있습니다. @
기호는 MySQL에게 이것이 사용자 정의 변수임을 알립니다.
이제 이 변수를 질의에서 사용해보겠습니다:
SELECT * FROM students WHERE age = @my_favorite_number;
이 질의는 students
테이블의 age
열이 42인 모든 학생을 찾습니다 (우리가 students
테이블과 age
열을 가정할 때).
프로 팁: 변수 이름 지정
변수를 이름 지정할 때는 설명적이지만 간결하게 하세요. @s
는 빠르게 타이프할 수 있지만, @student_count
는 정확히 무엇이 들어 있는지 알려줍니다.
로컬 변수: 임시 도우미
로컬 변수는 특정 작업을 수행하는 동안 사용하는 스티키 노트와 같습니다. 그들은 스토red 프로시저나 함수 내에만 존재하며, 작업이 완료되면 사라집니다.
로컬 변수 선언 및 사용 방법
로컬 변수를 선언하고 사용하는 방법을 보겠습니다:
DELIMITER //
CREATE PROCEDURE calculate_area(IN radius DECIMAL(10,2))
BEGIN
DECLARE area DECIMAL(10,2);
SET area = PI() * radius * radius;
SELECT area AS circle_area;
END //
DELIMITER ;
CALL calculate_area(5);
이 예제에서 area
는 로컬 변수입니다. 그것은 DECLARE
문을 사용하여 선언되며, calculate_area
프로시저 내에만 존재합니다.
로컬 변수를 사용하는 이유
로컬 변수는 임시 계산이나 중간 결과를 저장하는 데 매우 유용합니다. 그들은 복잡한 프로시저에서 코드를 깨끗하고 정리된 상태로 유지하는 데 도움을 줍니다.
시스템 변수: 전역 설정
시스템 변수는 핸드폰 설정과 같습니다. MySQL의 작동 방식을 제어하며, 서버 수준이나 세션 수준에서 구성할 수 있습니다.
시스템 변수 유형
- 전역 변수: 전체 서버 운영에 영향을 미침
- 세션 변수: 현재 연결에만 영향을 미침
시스템 변수를 보고 설정하는 방법을 보겠습니다:
-- 전역 변수 보기
SHOW GLOBAL VARIABLES LIKE 'max_connections';
-- 전역 변수 설정 (권한 필요)
SET GLOBAL max_connections = 1000;
-- 세션 변수 보기
SHOW SESSION VARIABLES LIKE 'autocommit';
-- 세션 변수 설정
SET SESSION autocommit = 0;
일반 시스템 변수
일반적으로 사용되는 시스템 변수 목록을 아래에 제공합니다:
변수 이름 | 설명 | 범위 |
---|---|---|
max_connections | 동시 클라이언트 연결의 최대 수 | 전역 |
autocommit | 자동으로 트랜잭션을 커밋할지 여부 | 세션 |
character_set_server | 서버의 기본 문자셋 | 전역 |
max_allowed_packet | 하나의 패킷이나 생성된/중간 문자열의 최대 크기 | 양쪽 |
sql_mode | 서버의 SQL 모드 | 양쪽 |
시스템 변수의 힘
시스템 변수를 이해하면 MySQL 서버의 성능을 최적화하는 데 도움이 됩니다. 차량의 엔진을 다양한 조건에서 최적 성능을 내기 위해 조정하는 것과 같은 것입니다.
모든 것을 통합하는 것: 실제 세계 시나리오
우리는 간단한 책 목록 시스템을 구축하는 것을 상상해보겠습니다. 우리는 다양한 유형의 변수를 사용하여 질의를 더 효율적이고 유연하게 만듭니다.
-- 우리 서점 ID를 위한 사용자 정의 변수 설정
SET @bookstore_id = 1;
-- 책 수를 계산하는 프로시저를 만들고 로컬 변수 사용
DELIMITER //
CREATE PROCEDURE count_books_by_genre(IN genre VARCHAR(50))
BEGIN
DECLARE book_count INT;
SELECT COUNT(*) INTO book_count
FROM books
WHERE book_genre = genre AND store_id = @bookstore_id;
SELECT CONCAT('Number of ', genre, ' books: ', book_count) AS result;
END //
DELIMITER ;
-- 프로시저 호출
CALL count_books_by_genre('Science Fiction');
-- 최대 결과 수를 설정하는 시스템 변수 사용
SET SESSION sql_select_limit = 1000;
-- 이제 책을 질의합니다
SELECT * FROM books WHERE store_id = @bookstore_id;
이 예제에서 우리는 다음을 사용했습니다:
- 사용자 정의 변수 (
@bookstore_id
)를 우리 서점 ID를 저장하기 위해 설정 - 로컬 변수를 사용하여 프로시저 내에서 책 수를 계산
- 질의 결과 수를 제어하는 시스템 변수 (
sql_select_limit
) 설정
결론: 변수의 항해
축하합니다! 여러분은 MySQL 변수의 세계로 흥미로운 여정을 시작했습니다. 기억하세요, 변수는 데이터베이스 세계에서 당신의 친구입니다. 그들은 더 효율적이고 유연하며 강력한 질의를 작성하는 데 도움을 줍니다.
MySQL 여정을 계속하면서, 다양한 유형의 변수를 실험해보지 마세요. 어떤 새로운 언어를 배우는 것처럼, 연습이 완벽을 만듭니다. 그러니 MySQL 콘솔을 열고 변수를 놀아보세요. 누가 알겠는가? 당신은 클래스에서 변수 마스터가 될지도 모릅니다!
즐겁게 질의하고, 여러분의 변수가 항상 잘 정의되고 데이터가 깨끗하게 유지되기를 바랍니다!
Credits: Image by storyset