sql에서 with 절은 해당 쿼리 내에서 임시 결과를 정의하고 쓸 때 유용하게 사용됩니다. sql 코딩 테스트에서 꽤 어려운 문제가 나왔을 때, 잘 써먹으면 유용하지 않을까 싶어요. 사용 방법 보다는 문제 상황을 하나 정의하는 게 좋을 듯 싶네요. 그러면서 이해를 해 보도록 하겠습니다. 먼저 salaries를 보겠습니다. 이 테이블에는 1년마다 계약을 할 때 각 일꾼들의 연봉을 나타냅니다. 테이블을 조회해 보겠습니다. 그러면, 10001번 일꾼에 대해서, 각각 60117, 62102, 66074, ... 등의 근로 계약을 했음을 볼 수 있어요. 연봉 하니까 무슨 생각이 드나요? 해당 테이블에 근로자가 n년간 계약한 데이터가 있다고 해 봅시다. 그러면, 회사에 다니는 동안의 평균 연봉도 있을 겁니다. 이..
sql 검색 결과
jdbc를 사용할 때, connection을 close 해 주지 않으면 어떤 일이 벌어질까요? 파일을 열어놓고 close를 안 하면 fd가 낭비되는 것처럼 connection이 계속 쌓이다가, connection이 고갈될 겁니다. jdbc mysql과 연동했을 때, connection을 해제를 해 주지 않았을 때, mysql server에서는 어떤 일이 일어나는지 변수값과 status를 보면서 알아보겠습니다. 먼저, show variables like '%con%'을 쳐 보겠습니다. 이것은 variable name에 con이 들어가는 것을 모두 찾습니다. 이 중에 max_connections가 보이는데요. 이 값은 문서에 따르면, 허용하는 클라이언트 연결 수의 최댓값을 의미합니다. 그리고 이 문서를 보면..
안녕하세요. 이번 시간에는 postgresql serial permission 오류가 떴을 때, 어떻게 해결해야 하는지 알아보겠습니다. 저는 서버에 psql을 설치했고, 로컬에 dbeaver로 접속할 수 있는 환경을 구축해 놓은 상태입니다. 저는 도서관 api 프로젝트에서 책을 빌리고 반납하고, 어떤 책을 빌렸는지에 대한 api를 추가하는 작업을 하고 test 하는 중이였습니다. 이 중에서 POST /borrow는 책을 빌리는 api입니다. bookId와 userId를 넣으면, 2번 유저가 id가 2인 책을 빌리게 됩니다. 요청을 보내 보겠습니다. 그랬더니 500이 떨궈지는데요. 서버 내에서 문제가 발생했음을 의미합니다. 로그를 보니까 permission denied가 되어 있는데요. 권한 때문에 무엇인..
mysql에는 auto increment가 있었습니다. postgresql에는 없을까요? 문서의 8.1.4를 보시면, serial 시리즈가 비슷한 역할을 한다고 되어 있습니다. 저는 도서관 api를 구현하는 토이 프로젝트를 하고 있어요. 이 중에, book 관련한 api는 얼추 만들었으니, 책을 빌리고 반납하는 api를 만들겠습니다. 그러려면, user 테이블하고, borrow 테이블이 필요한데요. 아직, login 기능은 만들 생각이 없으니, 그냥 borrow 테이블만 만들도록 하겠습니다. 책을 빌리는데, 누가 빌리나요? 유저가 빌릴 겁니다. 즉, 책 아이디와, 유저 아이디가 필요합니다. 그리고 언제 빌렸는지 알기 위해서, 빌린 시각, borrow_time도 저장하겠습니다. 그런데, 빌린다. 요청에 가..
저번 시간에 유저를 생성하고, 비밀번호를 바꾸고, encryption 알고리즘을 md5에서 scram-sha-256으로 바꾸는 것까지 하였습니다. 이번 시간에는 유저 인증 정보를 보는 방법을 알아 봅시다. 먼저 인증 정보는 pg_authid에 있습니다. 이 문서에 대략적인 설명이 나와 있는데요. rolname은 gh와 같은 유저 이름이 됩니다. 그리고, rolpassword는 암호화된 비밀번호를 의미합니다. SCRAM-SHA-256은 너무 기니까, 대충 앞에서 40자만 뽑아서 가져왔습니다. 그러기 위해서, left 함수를 썼습니다. 이제 인증 방식과 암호화 방식을 md5로 바꿔 봅시다. pg_hba.conf 파일입니다. 이것은 postgresql.conf 파일입니다. 이렇게 설정하고, postgresql..
최근댓글