DataBase/MariaDB

DataBase/MariaDB

[MariaDB] 문자열 데이터 길이 재는 법

타입이 VARCHAR(20) 인 데이터의 문자열 길이 재는법 count 사용 시 아래와 같은 에러 메세지가 발생한다.count 대신 length 를 사용해주면 된다.SELECT LENGTH(컬럼명) FROM 테이블명

DataBase/MariaDB

[MariaDB] 프로시저 수정 이력, 기록 확인하기

프로시저의 수정 이력을 확인해야 하는 일이 생겼다.INFORMATION_SCHEMA.ROUTINES 에서 프로시저의 생성일, 최근 수정일이 확인 가능하다. SELECT ROUTINE_NAME, LAST_ALTEREDFROM INFORMATION_SCHEMA.ROUTINESWHERE ROUTINE_TYPE = 'PROCEDURE' AND ROUTINE_NAME = '프로시저명';

DataBase/MariaDB

[MariaDB] SQL 쿼리문 검색결과 중 설정된 개수만 보여주고 싶을 때

SQL 쿼리문에서 나온 검색결과 100+ 개중 가장 최신의 1개만 보여주고 싶을때 어떻게 해야할까?LIMIT 숫자 를 사용하면 검색 결과를 숫자대로 자를 수 있다.SELECT * FROM TEST_TABLE A LIMIT 1; 여기에 ORDER BY 도 같이 사용하여 최신의 파일 순서대로 정렬하여 원하는 데이터를 선택한다.SELECT * FROM TEST_TABLE A ORDER BY INS_DATE DESCLIMIT 1; LIMIT 옆의 숫자에 따라 나오는 개수가 달라진다. 10개만 나오게 하고싶으면 10, 5개만 나오게 하고싶으면 5 입력.SELECT * FROM TEST_TABLE A ORDER BY INS_DATE DESCLIMIT 10;

DataBase/MariaDB

[MariaDB] 검색조건 넣기, 파라미터가 null 일때 조건 안 걸기 (IFNULL, NVL)

SQL 문에서 파라미터가 null 로 넘어올 경우 해당 조건을 쿼리문에서 제외하려면 어떻게 해야할까?아래의 쿼리문에서 iDEPARTMENT 가 NULL 로 넘어올 경우 해당 조건이 NULL 인 TEST_TABLE 의 결과만 나오게 된다. 그러면 DEPARTMENT 를 같이 넘길때만 검색조건으로 추가하고 싶을 경우가 있을 것이다. -- iNAME, iDEPARTMENTSELECT *FROM TEST_TABLEWHERE NAME = iNAME AND DEPARTMENT = iDEPARTMENT 검색조건으로 iDEPARTMENT 를 넘길 경우, 검색조건에 문자를 입력하지 않으면 NULL 로 넘어간다.이때 쿼리문에 NULL 로 넘어올 경우에 대한 처리문을 추가해주면 된다. -- iNAME, iDEPARTMENT..

DataBase/MariaDB

[MariaDB] SQL 에서 SUBSTRING,LEFT,RIGHT 사용법

SUBSTRING이란substring은 문자열을 자르기 위해 사용하는 함수이다. DataBase 시스템마다 문법이 조금 다를 수 있다. SUBSTRING(문자열, 시작위치, 길이)LEFT(문자열, 길이)RIGHT(문자열, 길이)   SUBSTRINGSUBSTRING 은 지정한 시작위치에서 길이만큼 자를때 사용한다.예를 들어, SUBSTRING('TEST TEST SUBSTRING',6,4) 의 경우 6번째 자리인 T부터 길이 4까지인 TEST까지 자른다.TEST TEST (생략)12345678910(...)     시작 1234     LEFT왼쪽에서부터 지정한 길이만큼 자른다.   RIGHT오른쪽에서부터 지정한 길이만큼 자른다.

DataBase/MariaDB

[MariaDB] 오늘 날짜, 현재 날짜, 현재 시간 출력하기

오늘날짜CURDATE()CURRENT_DATENOW()SYSDATE()    * CURDATE() 와 CURRENT_DATE 의 차이두 함수는 기능적으로 동일하지만, 사용 방식에 차이가 있다. CURDATE() 는 함수 형태로 사용되며 괄호를 사용하여 호출해야한다. CURRENT_DATE는 키워드 형태로 사용되며 괄호 없이 사용할 수 있다. 따라서 기능적으로는 동일하므로 개인의 선호에 따라 선택하여 사용하면 된다. * CURDATE() 의 인자값CURDATE() 는 인자값을 받지 않기 때문에 괄호 안에 어떠한 값도 넣으면 안된다. * SYSDATE() 와 NOW() 의 차이SYSDATE() 는 날짜 조회를 기준으로 날짜 및 시간을 반환한다. 호출할 때마다 현재 시각을 반영하기 때문에, 같은 트랜잭션 내에..

DataBase/MariaDB

[MariaDB] lock wait timeout exceeded try restarting transaction 원인 및 해결방법

나의 경우에 auto-commit 을 해제해놓고 여러 script 및 테이블에서 데이터 작업중이었다.DBeaver 을 사용중이었는데, DBeaver 을 껐다가 키면 해당 에러 없이 다시 작동하였다. 일주일 내내 해당 오류와 씨름하고 서칭했다.wait 시간을 늘리는 등의 작업은 나에게 DB 설정 수정권한이 없었고, 확인해보니 이미 기간이 8천인가 8만? 환산해보니 24시간으로 되어있어 해당 시간을 늘리는 작업은 DB 관리자분께 요청하지 않았다.  원인내 케이스에는 Manual Commit 으로 설정해놓고 여러 스크립트에서 동시에 작업해서 그런 것 같다. 해결방법커밋을 전부 Auto Commit 으로 변경하고 작업하니 해당 에러가 발생하지 않았다. 한 테스트 문서에서 힌트를 얻었었는데, 급한 업무여서 빠르게..

DataBase/MariaDB

[MariaDB] SQL 그룹으로 묶어서 값 출력하기 (GROUP_CONCAT)

아래와 같은 경우에, STUDENT_ID 로 묶어서 SUBJECT 값들을 출력하고 싶으면 어떻게 해야할까?STUDENT_ID | NAME | SUBJECT -----------+------+--------     1      | 김철수 | 국어     1      | 김철수 | 수학      1      | 김철수 | 영어     2      | 이영희 | 국어     2      | 이영희 | 과학     3      | 박민수 | 수학     3      | 박민수 | 체육  GROUP_CONCATGROUP_CONCAT 함수를 사용하면 그룹 내 데이터를 하나의 문자열로 결합하여 출력할 수 있다. 아래와 같이 GROUP_CONCAT 을 사용하면 된다. SELECT STUDENT_ID, GROUP_..

DataBase/MariaDB

[MariaDB] function 생성 시 에러 1418, This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

DB에서 함수를 선언해야하는데 아래와 같은 에러가 발생했다. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) 원인함수 생성 시 DETERMINISTIC, NO SQL, READS SQL DATA 중 하나 이상의 특성을 선언해야하는데 없어서 에러가 발생한다고 한다. 또는 바이너리 로깅이 활성화된 상태에서 이러한 선언이 없는 함수를 생성하려고 하면 에러가 발생한다.  바이너리 로깅바이너리 로깅은 데이터베이스에..

DataBase/MariaDB

[Java_MariaDB] 프로시저 <OUT> 자바에서 받아오기

프로시저 내부와 mybatis의 xml 파일에서 OUT 파라미터를 불러오는 방법은 아래 포스팅을 참조하자.https://skylarcoding.tistory.com/210 MariaDB 프로시저 OUT 파라미터 사용하는 방법 , (conn=28804) Parameter at position is not set 에러 해결법프로시저를 호출할 때 콘솔로 넘겨주는 값은 IN 으로 작상한다. 그렇다면, 프로시저를 호출한 후 내부에서 생성된 값을 어떻게 외부로 넘길까?외부로 값을 넘겨주고 싶으면 OUT 파라미터를 사용skylarcoding.tistory.com  이번 포스팅은 그 이후에 배출한 OUT 프로시저를 java(Spring) 에서 어떻게 받아오는지에 대한 내용이다.Service 구현부에서 값을 담을 객체를..

Lar
'DataBase/MariaDB' 카테고리의 글 목록