본문 바로가기
MySQL

MySQL 명령어 정리 (4) 시스템 변수, AUTO_INCREMENT, 형변환

by suhsein 2024. 11. 5.
728x90

시스템 변수

변수명 앞에 참조 기호를 붙여서 참조. 참조 기호는 다음과 같다.

세션은 클라이언트와 MySQL 서버 간의 연결을 의미한다. 세션 관련 변수들(세션 수준 시스템 변수, 사용자 정의 변수)의 설정 값은 세션이 종료되면 사라진다.

시스템 변수는 데이터베이스 서버의 설정을 조정하는데 사용됨.
사용자 정의 변수는 세션 내에서 임시 데이터를 저장하는 데 사용됨.

  • @@, @@SESSION. : 세션 수준의 시스템 변수
  • @GLOBAL. : 전역 수준의 시스템 변수
  • @ : 사용자 정의 변수, 세션 수준에서만 유효
-- 세션 시스템 변수 설정 (아래 2가지 명령은 같은 기능을 함)
SET SESSION 변수명1 = 값1;
SET @@변수명1 = 값1;

-- 세션 시스템 변수 참조
SELECT @@변수명1;

-- 글로벌 시스템 변수 설정
SET GLOBAL 변수명2 = 값2;
-- 글로벌 시스템 변수 참조
SELECT @@GLOBAL.변수명2;

-- 사용자 정의 변수 설정
SET @변수명3 = 값3;
-- 사용자 정의 변수 참조
SELECT @변수명3;

시스템 변수 설정 시 현재 세션 혹은 글로벌하게 설정이 되며, 연결된 DB 서버 내부의 모든 데이터베이스에 적용된다.

AUTO_INCREMENT

해당 열에 대한 값을 NULL로 넣어주면 DBMS가 자동으로 1부터 증가하는 값을 입력

CREATE TABLE 테이블명(
  id INT AUTO_INCREMENT PRIMARY KEY,
  username varchar(3),
  age int(3));

증가값은 기본적으로 1이지만, 변경 가능

ALTER TABLE 테이블명 AUTO_INCREMENT = 1000;

=> 1000씩 증가

시스템 변수 설정을 통해 초기값과 이후 증가값을 다르게 할 수도 있다.

ALTER TABLE 테이블명 AUTO_INCREMENT = 1000;
-- 세션 시스템 변수 설정(세션 수준. 현재 세션에서만 유지)
SET @@auto_increment_increment = 3;
-- 또는 글로벌 시스템 변수 설정(세션이 끝나도 유지됨)
SET GLOBAL auto_increment_increment = 3;

=> 초기값은 1000, 이후 3씩 증가.

형변환

명시적 형변환

조회하려는 데이터를 형변환하여 보기 위해서 CAST나 CONVERT를 사용할 수 있다.
예시로 실수 형태 데이터를 정수로 형변환이 가능하다.

SELECT CAST(컬럼명 AS SIGNED INTEGER) FROM 테이블명;
-- 또는
SELECT CONVERT(컬럼명, SIGNED INTEGER) FROM 테이블명;

문자열 데이터를 DATE 형식으로 변환할 수도 있다.

SELECT CAST('2024$07$13' AS DATE);
SELECT CAST('2024/07/13' AS DATE);
SELECT CAST('2024@07@13' AS DATE);
SELECT CAST('2024%07%13' AS DATE);
SELECT CAST('2024!07!13' AS DATE);
SELECT CAST('2024.07.13' AS DATE);
SELECT CAST('2024.7.13' AS DATE);

기호에 관계없이 CAST. 달 앞에 0이 생략되어도 자동으로 형변환

암시적 형변환

SELECT '100' + '200'; -- 문자와 문자 더하기 => 정수로 변환 후 연산
SELECT CONCAT('100', '200') -- 문자와 문자 연결
SELECT CONCAT(100, '200') -- 정수와 문자 연결 => 문자로 변환 후 연결
SELECT 1 > '25mega'; -- 문자가 정수 25로 변환되어 비교
SELECT 3 > '2MEGA'; -- 문자가 정수 2로 변환되어 비교
SELECT 0 = 'mega2'; -- 문자가 0으로 변환되어 비교
  1. 더하기 연산은 정수로 암시적 형변환된다.
  2. concat 연산은 문자열로 암시적 형변환 된다.
  3. 문자열 가장 앞 문자가 정수인 경우 비교연산에서 해당 숫자로 변환
  4. 문자열 가장 앞 문자가 정수가 아닌 경우 비교연산에서 0으로 변환
728x90