MySQL(MariaDB 포함)에서 날짜값을 더하거나 뺄 때 사용하는 함수는 DATE_ADD와 DATE_SUB가 있다. 이 함수를 사용해서 현재일보다 7일 전, 한달 전과 같은 데이터를 가지고 오거나 시한이 있는 컨텐츠의 경우 마감일을 지정한다든지 하는 로직등을 구현할 수 있다. DATE_ADD 및 DATE_SUB 사용법 DATE_ADD(date, INTERVAL value interval_type) DATE_SUB(date, INTERVAL value interval_type) 날짜를 더하거나 빼는 방법은 메소드만 다를 뿐 사용 방법은 동일하다. 첫번째 인자인 date는 수정해야 할 대상 날짜값이다. 두번째 인자인 value는 더하거나 뺄 시간 값이고, interval_type는 시간 유형이다. 시간 ..
뷰(View)의 생성 목적 뷰(View)는 관리 측면과 사용성 편의, 유지 보수, 보안 등을 위해서 사용하는 기법이다. 쿼리(Query)가 복잡할 경우 이를 프로그램으로 구현하게 되면 유지보수가 잘 안될 수도 있고, 초급 개발자의 경우 실수를 범할 수 있다. 게다가 쿼리 및 테이블을 공개해야 할 경우 보안 측면에서 문제가 발생할 수 있다. 즉, 뷰는 어떤 하나의 목적으로 사용하는 것이 아니라, 편의성, 보안성, 유지 보수 등의 다양한 이유로 인해서 사용하는 것이라 생각하면 된다. 즉 위 내용을 간단히 정리하자면 아래와 같다. 편의성 : 복잡한 쿼리를 단축 시켜 놓기 때문에 개발을 보다 쉽게 진행할 수 있다 보안성 : 테이블 명칭과 컬럼 명칭을 숨길 수 있기 때문에 보안성이 뛰어나다 유지보수성 : 코드가 ..
포스팅에 앞서 MySQL과 MariaDB는 사실상 동일한 DB이기 때문에 본 포스팅은 MariaDB에서도 적용됩니다. UNION의 개념 우리가 하나의 쿼리안에 다양한 테이블의 정보를 담기 위해서는 서브쿼리와 조인(Join)등의 방식으로 데이터를 표현하곤 합니다. 하지만 다른 테이블이지만 각각의 테이블의 내용을 동일한 컬럼에 담아서 표현하고 싶을 경우 어떻게 해야 할까요? 바로 이럴때 사용하는 것이 유니온(UNION) 입니다. 데이터 예시 유니온의 사용법을 알려드리기 위해 비슷한 구조의 테이블을 2개 만들었습니다. 하나는 블로그의 정보를 넣으려고 하는 content_tbl이고, 다른 하나는 뉴스의 정보를 넣으려고 하는 news_tbl입니다. UNION 명령어 이 둘의 데이터를 한번에 하나의 쿼리로 표현하는..
여러개의 Row로 되어 있는 데이터를 한개의 값으로 묶어서 가지고 오고 싶을 경우, MySQL(혹은 MariaDB)에서는 Group_Concat을 사용하여 처리할 수 있다. 실행 예시 테이블 생성 CREATE TABLE `stock` ( `stock_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'pk', `exchange` varchar(10) NOT NULL COMMENT '구분', `stock_nm` varchar(50) NOT NULL COMMENT '주식명', `ticker` varchar(10) NOT NULL COMMENT '티커', PRIMARY KEY (`stock_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3; 데이터 삽..
자바로 MySQL(혹은 MariaDB)에 대량의 데이터를 넣는 방법이 2가지 존재한다. 하나는 Batch 기능을 활용하여 Insert를 하는 방법, 나머지 하나는 Load 명령어를 활용하여 넣는 방법. 본 포스팅은 2가지 방법에 대해서 설명해 보고 장단점에 대해 말해보도록 하겠다. add Batch 방법 Java에서 DB 데이터를 핸들링 할 수 있는 PreparedStatement 같은 라이브러리에 Batch 하는 방식을 제공하는 기능이 있다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263Connection conn = null;Prepare..
MySQL은 오라클에서 제공하는 여러가지 기능들이 없기 때문에 변수를 선언하는 방식처럼 작업을 수행해야 한다. rownum 같은 경우는 변수를 설정한 후, 카운트가 증가할 때마다, 변수에 +1을 증가시켜서 출력하는 식의 편법이 존재한다. 번호(ROWNUM) 생성 방법 12345SELECT @rownum:=@rownum+1 as no, dic.*FROM dic_wrd_cls_tmp dicWHERE (@rownum:=0)=0cs WHERE 조건에 rownum을 초기화하여 사용하는 방법 12345SET @rownum:=0;SELECT @rownum:=@rownum+1 as no, dic.*FROM dic_wrd_cls_tmp dic;cs SET으로 rownum 변수를 초기화하여 사용하는 방법 페이징(Pagin..
아무래도 MariaDB와 MySQL의 만든 사람이 동일하다 보니 해당 포스팅은 MySQL에서도 동일하게 문제 해결이 될 것이나, 폴더 및 설치 세팅이 미세하게 다를 수 있다. MariaDB를 설치하였는데 뭔가 빠진 느낌이 들어서 뭔가 곰곰히 생각해보니, Install 과정에서 캐릭터셋을 선택하는 것이 없었다는 것을 판단하였고, Toad for Mysql로 테이블을 생성 할 때, comment가 깨져있는 것을 발견했다 (이건, 빼도박도 못하는 캐릭터셋 문제) 보다시피, 테이블 Comment 설정 창에 캐릭터셋이 깨져 있는 것을 발견 MariaDB, MySQL은 캐릭터셋을 확실히 잡고 시작을 해야 나중에 참변을 방지할 수 있다.확인 방법 C:\Windows\System32>mysql -u root -p En..
MySQL과 MariaDB는 동일한 사람이 만들었기 때문에, 사용법 또한 거의 동일하다. 그래서 이 문법은 MySQL에서 하든 MariaDB에서 하든 모두 동일하게 작동되는 점 참고 하면 좋을 것 같다. MySQL(혹은 MariaDB)를 설치하였다면, 제일 처음에 해야 할일은 데이터베이스(Database)를 생성해야 되는 것이다. MySQL의 database의 개념은 Oracle의 tablespace 개념과 동일하며, 테이블들과 View, Function 등을 생성하는 공간이라고 보면 된다. 데이터베이스를 생성하였다면, 다음으로는 계정을 생성한다. 계정을 생성할 때, 권한을 한번에 지정하여 생성할 수도 있고, 생성하고 난 후 권한을 지정할 수 있는데 여기서는 두가지 방식 모두 해보도록 한다. 데이터 베이..
토드(Toad)라고 불리우는 유명한 Oracle용 DBMS Tool이 존재하는데 워낙 사용성이 뛰어나지만, 가격이 비싸기 때문에 많은 사람들이 눈물을 머금고, SQLDeveloper를 쓰거나 혹은, 어둠의 경로로 몰래 받아서 쓰는 사람들이 존재할 것이다. 그만큼 DBMS 툴로서, 상징적인 존재인 제품인데 MySQL 혹은 MariaDB용 버전도 존재한다. 다행인것은, 무료 DBMS 인 Mysql, MariaDB 처럼 툴 역시 무료로 제공 된다. https://www.toadworld.com/m/freeware/1469 사이트에 접속을 하게 되면, 위와 같은, 다운로드 화면이 나오게 된다. 다운로드를 누른다고, 한번에 자료를 주진 않는다 (오라클과 동일) download 버튼을 누르면, 위와 같이 로그인 화..
오라클에도 존재하듯, MySQL에도 SUBSTRING 기능이 존재한다. 이 SUBSTRING은 거의 모든 언어나 DBMS에 자체적으로 내장이 되어 있고, 사용방법도 비슷하다. SUBSTR이라고 써도 되고, SUBSTRING으로 써도 된다. 둘은 완전히 동일하다. 사용방법SUBSTR(str,pos), SUBSTR(str FROM pos), SUBSTR(str,pos,len), SUBSTR(str FROM pos FOR len) 1. 인자값 설명 str 원본 문자열 pos 시작 위치값 len 가져올 길이값 2. 사용사례 SUBSTR(str, pos) SELECT SUBSTR('동해물과백두산이',5); 결과) 백두산이 해석) 5번째 문자열부터 읽으시오. SUBSTR(str FROM pos) SELECT SUB..
사실 이런 글을 포스팅할 이유는 없지만, 개발을 이제 막 시작한 분들이나 이쪽 계통에 대해서 잘 모르는 분들을 위해서 간단히 포스팅해 보도록 한다. Mysql을 설치하려 오신 분들은 이 참에 MariaDB를 설치해보도록 한다 (둘은 만든 사람이 같으나, MariaDB는 완전 무료고, Mysql은 부분 무료이다) MariaDB로 개발해도 Mysql과 동일하기 때문에 개발 및 진행상에 아무런 문제가 없다. 심지어, MariaDB를 설치할 때 서비스명까지 Mysql로 뜨는 쌍둥이로 봐도 무방하다. http://needjarvis.tistory.com/10 (MariaDB와 Mysql의 포스팅 참고) MariaDB는 https://downloads.mariadb.org/ 에서 다운로드가 가능하며, 현재 내 로컬..
High Water Mark 개념 HWM(High Water Mark)은 테이블의 라이프 사이클에서 사용된 블록을 표시하기 위해서 사용되는 용어입니다. 모든 DB가 사용하지 않으며, 대표적으로 오라클(Oracle)에서 사용하는 용어입니다. 기본적으로 HWM은 데이터의 가장 오른쪽(가장 최신)에 있는 블록을 뜻합니다. 그럼 이게 무엇이 중요한가? 바로 데이터가 많아지면 많아질수록 HWM의 개념이 중요지기 시작합니다. 데이터를 Delete 데이터를 삭제(Delete)하면 그 데이터는 어떻게 될까요? 우리 머리속에서는 그 공간을 쏙 없애버릴 것 같지만 사실은 그 공간을 비운채로 지나가게 되어 있습니다. 마치 현생으로 생각하면 빈집들이 있는 것처럼 구멍이 뽕뽕 뚫려버린 공간이 생기는 것이죠. 문제는 이 놈들도 ..