본문 바로가기

백엔드/DB54

postgresql 테이블 데이터 모두 삭제 (truncate) truncate 명령어는 테이블의 모든 데이터를 삭제하는 명령어이다. truncate table 테이블이름 delete 명령어와의 차이점은 delete는 행이 삭제될떄마다 자원이 소모되는데 truncate 은 비교적 데이터가 빠르게 삭제되며 삭제에 대해서 롤백 정보를 만들지 않고 바로 커밋한다. 시퀀스(자동증가 값)을 재시작하며 테이블 정보를 모두 삭제 truncate table 테이블이름 restart ientity 시퀀스 값은 리셋하지 않고 데이터만 삭제 truncate table 테이블이름 continue ientity 2021. 11. 15.
postgresql 테이블 lock 조회 및 lock 해제 Lock 이란 트랜잭션 처리의 순차성을 보장하기 위한 방법이다. Lock 의 종류에도 공유 Lock 과 베타 Lock 이 있다. 공유 Lock 은 데이터를 읽을 때 사용되어지는 Lock 으로 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다. 베타 Lock은 데이터를 변경하고자 할 때 사용되며 트랜잭션이 완료될 때까지 유지된다. 베타 Lock 은 락이 해제될 때까지 다른 트랜잭션은 해당 리소스에 접근할 수 없는 것이다. 나의 경우 베타 락이 걸려있는 것 같았다. 아래 내용을 락을 해제하고 트랜잭션을 다시 사용할 수 있도록 하는 방법이다. DB 는 Postgresql을 사용했다. 현재 수행중인 SQL 전체 조회 select datname, pid, usename, application_name,.. 2021. 11. 11.
[mysql] cannot check if timestamp is between varchar(23) and varchar(23) - 날짜 조회 쿼리 sql에서 timestamp 형식의 날짜에서 날짜와 날짜 사이의 데이터를 조회하고자 한다. date 컬럼의 날짜의 형식은 timestamp 이며, 조회하고자 하는 날짜는 문자열로 조회하려고 했다. 기존쿼리문 select * from table1 where date between '2021-09-28 12:00:00.000' and '2021-09-28 18:00:00.000' 문자열로 표시한 날짜 앞에 timestamp 를 붙여서 사용하면 조회가 가능하다. select * from table1 where date between timestamp '2021-09-28 12:00:00.000' and timestamp '2021-09-28 18:00:00.000' 2021. 9. 28.
select limit ? offset ? (페이징 활용) select * from table LIMIT a OFFSET b LIMIT 는 개수를 제한하는 것이며 OFFSET 은 시작 위치를 지정해준다 ex) 처음 10개의 게시글을 가져온다. select * from table LIMIT 10 OFFSET 0 select * from table LIMIT 10 11번째부터 10개의 게시글을 가져온다. select * from table LIMIT 10 OFFSET 10 2021. 9. 23.
[SQL] COALESCE , LEAD, LAG 함수 (NULL이 아닌 첫번째 값, 이전값, 다음값) LAG : 절 기준으로 이전의 로우의 값 변환 LAG(조건, 순서, 디폴트) OVER ( PARTITION BY 절) LEAD : 절 기준으로 이후의 로우의 값 변환 LEAD(조건, 순서, 디폴트) OVER ( PARTITION BY 절) COALESCE 함수 : 해당 칼럼들 중 NULL이 아닌 첫번째 값을 반환하는 함수 (오라클 NVL과 비슷한 기능) COALESCE(a_1, a_2, ..., a_N) a_1 부터 a_N까지 순서대로 비교 후 null 이 아닌 값을 반환한다. 모두 null이면 null을 리턴한다. grade 에 값이 null일 경우 #으로 치환한다. select coalesce(grade,'#') from student 2021. 7. 30.
[sql] case - when - then - else - end 조건에 따라 값을 지정해주는 case문이다. CASE 컬럼명|표현식 WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 ELSE 결과3 END 컬럼명|표현식 이 조건1일 때는 결과1 SELECT grade_code, content_id, k_key, (case when grade_code = '1' then '1학년' when grade_code = '2' then '2학년' when grade_code = '3' then '3학년' when grade_code = '3' then '4학년' when grade_code = '3' then '5학년' when grade_code = '3' then '6학년' else '없음' end) grade_code_desc FROM database_na.. 2021. 7. 30.