Real MariaDB (2017년)
시퀀스 스토리지 엔진 0 0 47,700

by 구루비스터디 MariaDB 스토리지 엔진 시퀀스 스토리지 엔진 [2019.08.11]


6.8 시퀀스 스토리지 엔진

  • 순차적 번호를 주어진 조건에 맞게 메모리 테이블로 생성

INSTALL PLUGIN sequence SONAME 'ha_sequence.so';


6.8.1 시퀀스 스토리지 엔진 기본 사용법

  • 테이블 이름 패턴
  • seq_<시작값>_to_<종료값>
  • seq_<시작값>_to_<종료값>_step_<건너뛸 값의 개수>
  • 특성
  • 음수 불가(UNSIGNED 타입), 반복 불가



 select * from seq_1_to_5;
 
 select * from seq_5_to_1;
 
 select * from seq_1_to_5_step_2; -- 1,3,5
 
 select * from seq_5_to_1_step_2; -- 5,3,1
 
 select * from 'seq_-5_to_1' limit 4; -- 안됨
 
 select -1 * convert(seq, signed integer) as seq from seq_5_to_1; -- -5 ~ -1


6.8.2 누락된 번호 찾기


create table seq_test (seq int) engine = InnoDB;
insert into seq_test values (1), (2), (3), (4), (5), (8), (9), (10);

select s.seq from seq_1_to_10 s left outer join seq_test t on t.seq = s.eq where t.seq is null;


6.8.3 순차적으로 조합된 번호 쌍 생성


select s1.seq, s2.seq from seq_1_to_2 s1, seq_1_to_3 s2 order by s1,seq, s2.seq;


6.8.4 배수 또는 공배수 찾기


-- 100 보다 작은 3의 배수
select seq from seq_3_to_100_step_3;

-- 100보다 작은 3과 의 공배수
select s1.seq from seq_5_to_100_step_5 s1, seq_3_to_100_step3 s2 on s1.seq = s2.seq;


6.8.5 순차적인 알파벳 생성


select char(seq) as seq_char from (
  -- 소문자
  (select seq from seq_97_to_122 l)
  union all
  -- 대문자
  (select seq from seq_65_to_90 u)
  union all 
  -- 숫자
  (select seq from seq_48_to_57 d)  
) seq_ch;


6.8.6 순차적인 날짜 생성


select date_add('2014-01-29', interval s.seq - 1 day) as seq_dat
  from seq_1_to_30 s;


6.8.7 데이터 복제 가공 (copy_t)


select case when seq = 1 then e.emp_no else 'MIN_HIREDATE' end emp_no,
     case when seq = 1 then e.first_name else '' end first_name,
	 case when seq = 1 then e.hire_date else min(e.hire_date) end hire_date
  from employees e, seq_1_to_2 s
  where e.emp_no between '10001 and 10020
  group by case when seq = 1 then e.emp_no else seq end;


"구루비 데이터베이스 스터디모임" 에서 2017년에 "Real MariaDB" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4207

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입