본문 바로가기
반응형

IT/Database97

[Mysql] GROUP_CONCAT() error group_concat 사용시 아래와 같은 에러가 발생 하였다. #HY000Row 4611 was cut by GROUP_CONCAT() 그러면 아래와 같이 사용해서 SELECT @@group_concat_max_len; 현재 Group concat 시 사용가능한 max length 를 확인한다. 그리고 아래와 같이 변경을 해주면 된다. SET group_concat_max_len=150000; 2024. 3. 21.
[Mysql] Lock 확인 및 해제 여러 쿼리를 반복 , 여러번 수행하다 보면 dead lock 이 걸릴때가 있다. 이럴때는 직접 해결해주지 않고서는 쉽지 않게 풀린다. 찾는 방법은 간단하다. Lock 확인 SHOW PROCESSLIST; //이건 100개만 나오고 전체를 나오게 하려면 SHOW FULL PROCESSLIST; 그럼 이와같이 보인다. Kill kill하는 방법 역시 간단하다. process 의 id를 해주면 된다. KILL 255; 2024. 3. 20.
'is null' VS '= null' sql 쿼리 중에 가끔 실수를 하는 부분이 있어서 정리한다. where 절에 컬럼과 null을 비교 하려면 column = null 이 아닌 column is null 로 써줘야 한다. 이유는 null 의 특성에 있다. null은 비교할수가 없고 null에 대해 의미를 잘 이해하면 알것이다. null에 대해 자세한내용은 아래 참고 포스팅 참고 바란다. 참고 포스팅 https://thenicesj.tistory.com/253 null 관련 (Null, isEmpty(), null관련 annotation) 먼저 자바에서 null과 isEmpty 의 차이를 알아보면 null 인스턴스가 생성되지 않은 상태, list변수가 메모리에 아무런 주소값도 참조하지 않은 상태이다. list에 값이 없을 경우 null로 체.. 2024. 3. 5.
[Mysql/Oracle] 공백제거 trim / REGEXP_REPLACE TRIM() 함수 우선 trim 함수에 대해서는 다 알것이다. 앞뒤 공백을 제거해주는데 column 의 타입이 varchar 타입일 경우 trim 이 간혹 제대로 안먹을때가 있다. (탭, 기타 스페이스 등) 그럴 경우엔 아래와 같이 설정하면 정상적으로 먹힌다. TRIM(Char(9) FROM 컬럼명) REGEXP_REPLACE 함수 오라클에서 사용하긴 하지만 mysql 에서도 적용은 되는것 같다. 여러개인 패턴을 찾아서 하나로 변경을 해주는것이다. 오라클 10g 부터 적용이 된 기능이고 사용법은 아래와 같다. SELECT REGEXP_REPLACE([컬럼], '^\t+', '') FROM [테이블]; 공백 뿐 아니라 다양한 정규식을 변경하는데 사용 가능하고 자세한 내용은 아래 사이트 참고 바란다. htt.. 2024. 2. 20.
[Mysql] if / else 문 mysql 에서 보여지는 값에 대해서 조건문을 걸수가 있는데 if / else 문으로 제어를 한다. 문법은 아래와 같다. IF ( 대상 컬럼 , 참일때 값, 거짓일때 값) 간단하게 예시 코드는 아래와 같다. SELECT colA, IF (colA=="a" , 1, 2) as colB FROM TABLE; 위 쿼리에 대한 결과는 아래와 같다. colA colB a 1 b 2 엑셀의 IF 함수와 동일한 기능을 한다. 2024. 2. 17.
[Mysql] SELECT ... INTO ... 구문 SELECT INTO 구문은 다른 DBMS를 사용하는 사람들이면 좀 생소할수있으나 Mysql에서 procedure 등에서 자주 사용되는 구문이다. 사용 문법은 아래와 같다. BEGIN DECLARE a int; DECLARE b int; DECLARE c int; SELECT colA, colB, colC INTO 'a','b','c', FROM TABLENAME; -- TABLENAME에서 조회한 값들을 위에서 선언한 지역변수 a, b, c에 각각 넣는다. END$$ SELECT 한 값들을 특정 변수에 넣기 위해서 사용된다. 2024. 2. 15.
[MySQL] Packet for query is too large 에러 mysql 에 insert 작업중 에러가 나서 확인해보니 아래와 같은 에러였다. com.mysql.jdbc.PacketTooBigException: Packet for query is too large (9,000,277 > 4,194,304). You can change this value on the server by setting the 'max_allowed_packet' variable. 기본 설정된 패킷 사이즈값보다 큰 값이 들어와서 그렇다. max_allowed_packet은 서버로 질의하거나 받게 되는 패킷의 최대 길이를 나타내는 시스템 변수 이다. 변경 방법은 2가지 이다. 커맨드라인에서 변경 -> root 계정으로 mysql 을 접속 후 SET GLOBAL max_allowed_pack.. 2024. 2. 10.
파티션 테이블 적용, 조회 방법 이전 포스팅에서 테이블 파티션에 대해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅 참고 바란다. 파티션 생성부터 특정 파티션 조회에 대해서 다뤄볼 것이다. 파티션 생성 create table ptable1 ( col1 varchar2(8), col2 number ) tablespace users partition by range (col1) ( partition p202401 values less than ('202402'), partition p202402 values less than ('202403'), partition p202403 values less than ('202404'), partition p202404 values less than ('202405'), partition p2.. 2024. 2. 3.
[Oracle] 오라클 PARTITION BY 사용법 정리 (group by 와 차이) 쿼리를 사용할때 partition by 를 사용하여 특정 그룹으로 묶어서 조회, 연산을 할수 있다. group by 와 비슷할순 있으나 차이에 대해서도 아래 기술할 것이다. 먼저 사용법은 아래와 같다. 분석함수([칼럼]) OVER(PARTITION BY 칼럼1, 칼럼2... [ORDER BY 절] [WINDOWING 절]) SUM 함수 SELECT empno , ename , job , sal , SUM(sal) OVER(PARTITION BY job) FROM emp WHERE job IN ('MANAGER', 'SALESMAN') ORDER BY job 그 밖에 COUNT, MAX, MIN, SUM, AVG 함수도 SUM 과 비슷하게 사용이 가능하다. ROW_NUMBER 함수 SELECT empno .. 2024. 2. 2.
반응형