본문 바로가기

반응형
Database
반응형
20

[SQL] INTERVAL함수에 변수 사용방법 SQL에서 날짜를 더하고 빼는 연산식에서 보통은 INTERVAL 함수를 사용합니다. 하지만 일반적으로 INTERVAL함수에는 '1 HOUR' 처럼 지정하여 사용할 수 있게 되어 있습니다. 변수를 사용하고자 CAST함수를 이용하는 방법을 정리해보았습니다. 보통의 쿼리의 경우는 아래와 같습니다. INTERVAL 사용 예 1 2 3 4 5 SELECT date - INTERVAL '1 HOUR' AS TIME FROM date_table Colored by Color Scripter cs 이렇게 하면 한시간을 빼는 결과식이 나오게 됩니다. INTERVAL 잘못된 변수 사용 하지만 1 대신 변수를 집어 넣고 싶은 경우가 생기게 됩니다. 이렇게 말이죠. 1 2 3 4 5 SELECT date - INTERVAL .. 2022. 9. 19.
[SQL] Insert 후 인덱스 값 가져오는법 (Mybatis&Ibatis) insert한 다음 인덱스 값을 가져오는법을 정리해보겠습니다. 핵심포인트는 쿼리안에 selectKey로 데이터를 가져오는 것입니다. 여기서에서는 Mysql 기반으로 Mybatis와 Ibatis 두 종류를 정리해보았습니다. 우선 VO에 인덱스를 담을 객체를 생성합니다. 서버부분은 공통적인 부분이니 함께 다루겠습니다. VO 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public class VO { private int insertId = 0; public int getInsertId() { return insertId; } public void setInsertId(int insertId) { this.insertId = insertId; } } Colored by Color Sc.. 2022. 7. 14.
[MYSQL] 계정 및 권한 생성 방법!! 오늘은 SQL 계정 및 권한 생성하는 방법에 대해 확인해보겠습니다. 프로젝트에 들어가기 전에 개발환경에서 가장 기초적인 부분이죠! 정리해보겠습니다. 우선 mysql 접속에 접속합니다. 계정정보를 생성하기 위해 MYSQL로 접속을 합니다. 명령어 use '데이터베이스이름' 예) use mysql show tables로 테이블을 조회한 하면, 계정을 관리하는 테이블인 user를 확인할 수 있습니다. 계정을 만들어줍니다. 계정 명령어입니다. 명령어 create user '계정아이디'@localhost identified by '비밀번호'; 예)create user 'ikpca'@localhost identified by 'hello'; 그럼 이상이 없을 경우 ok 문구가 뜨게 됩니다. 참고로 localhost.. 2021. 12. 20.
[Query] Join 속도 개선 방법 (feat. SubQuery) 안녕하세요. 오늘은 조인 쿼리의 성능을 개선하는 것을 이야기해보려 합니다. 사실 아직까진 sql 지식이 많이 없고 부족해서 올리지 않을려고 했던 부분이지만.. 혹여 저처럼 잘 모르는 분들을 위해 간단하게나마 올립니다. 서브쿼리에는 대표적으로 SELECT절 / FROM절 / WHERE절이 있습니다. 말 그대로 각각의 해당 부분에 쿼리문에 또 다른 쿼리문을 적용하는 것인데 필요한 쿼리만을 함축하여 속도를 개선할 수 있습니다. 여기서는 크게 두 가지 부분을 가지고 속도 개선을 확인 할 수 있습니다. SELECT절 FROM절 예를들어 tbl_A, tbl_B, tbl_C 이렇게 3개의 테이블을 조인할 경우는 흔히 아래와 같이 사용합니다. 하지만 아래 부분은 tbl_A, tbl_B, tbl_C 테이블에서 모든 컬럼.. 2021. 4. 13.
[MYSQL] 더미데이터 생성 쿼리!! (2021년 11월 10일 더미데이터 생성 방법을 하나 더 추가하였습니다.) 안녕하세요. 더미데이터 만들기 위한 쿼리를 생성하여 합니다. 더미데이터란, 유용한 데이터가 포함되어 있지 않지만 공간을 예비해두어 실제 데이터가 명목상 존재하는 것처럼 다루는 유순한 정보를 의미 라고 하네요. 쉽게 말해서 무언가를 테스트할때 임시로 데이터를 만든다고 보시면 됩니다. 예를들어 페이징을 하기 위해서는 게시글이 많아야하는것처럼 말이죠! 첫번째 방법입니다. 게시판테이블의 모습입니다. 데이터가 아무것도 들어가 있지 않죠. 아래 쿼리를 실행합니다. DELIMITER $$ DROP PROCEDURE IF EXISTS loopInsert$$ CREATE PROCEDURE loopInsert() BEGIN DECLARE i IN.. 2021. 3. 31.
[mysql] 테이블명세서 추출 쿼리 정리!! mysql workbench에서 쿼리를 이용하여 이용하여 테이블 명세서 만드는 방법을 이야기해보겠습니다. 우선 테이블명세서가 먼지 알아보고 가죠. 테이블명세서란, '각 테이블의 사용목적, 이름, 작성자, 비고사항 등의 테이블에 대한 기록 뿐만 아니라 테이블에 포함된 각 컬럼의 이름, 데이터 타입 및 제약조건을 기록한 문서양식을 말한다' 라고 하네요. 한마디로 테이블이 어떻게 이루어져 있고 테이블 안에 내용들이 먼지를 글로 표현한 것이라 할 수 있겠네요. 보통은 프로젝트 시, 클라인트에게 제출할 자료 중 하나로 사용되며 특별한 작성형식은 없습니다. 저의 데이터메이스 이름, 즉 스키마는 'website' 입니다. 워크벤치 명령창에 쿼리를 넣어줍니다. 쿼리가 엄청 길지만 신경쓰지 않으셔도 됩니다. 중간에 주황.. 2021. 3. 11.
[mysql] 월별통계방법!! (데이터 없는 날짜 0 처리 방법) 안녕하세요. 오늘은 통계를 위한 월별통계 쿼리를 알아보겠습니다. 예를들어 올해인 2021년의 월별통계를 구하기 위해서는 group by를 해야하는데 데이터가 없는 경우 group by에서 빠지게 됩니다. 이것을 처리하려하는데.....저는 어찌어찌 처리했지만 먼가 억지스러운 느낌이 납니다...ㅜㅜ 더 좋은 방법 있으면 댓글로 공유해주세요!! 월별통계방법!! (데이터 없는 날짜 0 처리 방법) 더미 데이터 생성 1 create table t (n int); cs 날짜 테이블을 생성하기 위한 더미 테이블을 생성하고 1 insert into t values (1); cs 값을 1을 넣어줍니다. 1 insert into t select * from t cs 그리고 더미 데이터를 생성해줍니다... 10년치 데이터만.. 2021. 2. 25.
[Mysql] 두 날짜 사이의 날짜 목록 및 데이터 구하는 방법 안녕하세요. 오늘은 mysql에서 원하는 기간안에의 날짜 목록과 데이터를 구하는 방법에 대해 이야기해보려합니다. 일반적으로 데이터를 뽑게되면 데이터만 있는 날짜만 나오게됩니다. 예를 들어 10월 20일부터 10월 26일까지가 원하는 기간이고 10월 22일에만 데이터가 있는 상태에서 데이터를 뽑으면 아래와 같이 10월 22일만 날짜가 나오고 나머지 날짜는 나오지 않게됩니다. 이를 해결하기 위해서는 3가지가 필요합니다. 날짜 추출 쿼리 데이터 추출 쿼리 Left outer join 1. 날짜 추출 쿼리 우선 날짜 추출 쿼리입니다. Curdate()를 사용하여 현재일 기준으로 일주일 전의 데이터를 추출합니다. 1 2 select curdate() - INTERVAL (a.a) DAY as Date from (.. 2020. 10. 27.
[mysql] count 조건 설정하는 방법 [통계쿼리정리] 안녕하세요 오늘은 count 조건 설정하는 방법에 대해 이야기해보겠습니다. 흔히들 통계에서 사용할 때 많이 사용되는 쿼리입니다. 제가 하고자하는 것은 Group by와 count를 통해 원하는 계산식을 얻을 예정인데, 여기서 count에 조건을 넣는 공식이 포인트입니다. 그리고 이외에 통계에 사용되는 다른 쿼리들도 지속적으로 업데이트 할 예정입니다! 단순한 Group By 다들 아시다시피 단순하게 group by를 하면 아래와 같은 식이 나옵니다. 한 컬럼의 그룹에 대한 개수가 나타나게 되는거죠. 1 2 3 4 5 SELECT cs_pm ,count(*) FROM tbl_counsel group by cs_pm cs 하지만 우리는 단순히 group by를 하는것에서 조건을 추가하여 여러 count 식을 .. 2020. 10. 20.