MySQL
[MySQL] 스토어드 프로시저(Stored Procedure) 기본
개요 평소 SQL을 사용할 때 일반적인 쿼리문을 자주 사용하게 되는데 특정한 경우 프로시저를 사용하면 편리성면에서 높은 효과를 볼 수 있을 것 같다는 생각이 문득 들었고 또, 자주 사용하는 문법이길래 이번 기회에 포스팅을 하려고 한다. 먼저, 프로시저란 무엇일까 간단하게 한 마디로 설명해보자면 여러 쿼리를 한번에 수행하는 것 마치 SQL문법의 함수(Function)와 아주 유사한 느낌이다. 하지만 우리가 아는 SQL함수와는 차이가 있다. 함수(Function) : 클라이언트에서 처리, 리턴값 필수, 리턴값 하나만 반환가능 프로시저(Procedure) : 서버로 보내서 처리, 리턴값 선택, 리턴값 여러개 반환가능 SQL 처리를 하는 위치에서의 차이점인데 속도면에서는 프로시저가 더 빠른 성능을 보인다고 한다..
[MySQL] 인덱스(INDEX) 정리(효과적인 INDEX 설계)
개요 MySQL 스키마 설계는 자주 해보았지만 효율적인 데이터타입, 인덱스 설계에 대한 부분은 이해도가 낮은 것 같아 조사 후 남기는 포스팅이다. 인덱스의 개념 인덱스는 테이블의 동작속도(조회)를 높여주는 자료구조이다. 인덱스로 데이터의 위치를 빠르게 찾아주는 역할이고 쉽게 예를 들어보면 책 뒷편에 '색인'이 인덱스의 역할과 동일하다고 볼 수 있다. (예를들어 '홍길동'이라는 단어를 찾고싶으면 색인페이지에서 '홍'으로 시작하거나 'ㅎ'으로 시작하는 색인을 찾아보면 빠르게 찾을 수 있다.) 인덱스는 MYI(MySQL Index)파일에 저장되며, 인덱스가 설정되지 않았다면 Table Full Scan이 일어나 성능이 저하되거나 치명적인 장애가 발생한다. 조회속도는 빨라지지만 UPDATE, INSERT, DE..
[MySQL] 데이터 타입(data_type) 정리
개요 MySQL 데이터 타입을 기록용으로 저장하기 위한 포스팅 공통 데이터 형식(M) : M 부동소수점 및 고정소수점 타입의 경우 정수타입의 최대 출력 폭을 나타낸다. ( 자릿 수 ) 문자형 타입의 경우 M은 최대 길이를 나타낸다.( M의 최대 사용 가능 값은 데이터 타입에 따라 다름 ) 숫자 데이터 형식 데이터 형식 바이트 수 숫자 범위 설명 BIT(N) N/8 1~64Bit 표현, b'0000'형식으로 표현 TINYINT 1 -128 ~ 127 정수 SMALLINT 2 -32,768 ~ 32,767 정수 MEDIUMINT 3 -8,388,608 ~ 8,388,607 정수 INT INTEGER 4 약-21억 ~ +21억 정수 BIGINT 8 약 -900경 ~ +900경 정수 FLOAT 4 -3.40E+..
[MYSQL] DATETIME 타입에 DEFAULT 값으로 현재 시간 입력
개요 평소 DB 테이블을 생성할 때 날짜에 대한 부분은 Type 값을 DATETIME으로 주고 Service단 (또는 DB를 컨트롤하는 로직, 모듈) 에서 현재 날짜에 대한 부분을 변수에 담아 해당 변수를 INSERT 또는 UPDATE 해주었다. 하지만, 현재 날짜로 들어가는 regDate 같은 컬럼은 굳이 로직에서 따로 변수로 담아 할당해주지 않아도 DB에서 Auto increment 처럼 Row가 입력되면 자동으로 해당 컬럼에 현재 시간을 입력해줄 수 있다는 방법을 알게 되었다. 방법 나는 MySQL을 주로 사용하기 때문에 MySQL에 대한 방법만 포스팅을 하겠다. - MySQL v5.6 이상 - 방법1 CREATE TABLE TEST_TABLE( regDate DATETIME DEFAULT CURR..