postgresql에서 유저 정보를 출력하는 방법을 알아봅시다. postgresql을 깔았습니다. 어떻게 접속하면 될까요? psql을 치면, postgres에 접속합니다. 그런데, role "cho"가 존재하지 않는다고 뜹니다. role. 이게 무엇을 하는 지 대략적으로 감이 오시나요? user U에게 역할을 주고, 해당 역할만을 수행할 수 있게 하는 것이 롤이라고 할 수 있어요. 예를 들어서, A는 login을 할 수 있다던지. 문서를 보면 간략하게 나와 있습니다. cho에는 아무런 규칙도, 역할도 주어져 있지 않습니다. default로 생성된 것은 없을까요? 리눅스의 계정 정보를 살펴 봅시다. post 패턴을 찾으면, 떡하니 보이는 것은 postgres입니다. 이 유저로 접속을 하면 왠지 될 거 같습..
코딩/Sql 검색 결과
제가 개최한 코테 문제 중에서는, 시각 처리 문제가 있었습니다. 생각보다 많이 쓰일 법 하니 알아두면 좋을 듯 해요. 특정 날짜로부터 1일 전, 1달 전, 1년 전, 1년 후의 날짜를 구해야 합니다. 어떻게 해야 할까요? YYYY-MM-DD로 표현되는 date를 어떻게 연산하는지 알아봅시다. mysql에 있는 DATE_ADD와 DATE_SUB를 알아볼 건데요. 첫 번째 인자에는 date가 들어갑니다. 두 번째 기간에는 INTERVAL이 들어가는데요. 예제를 보도록 하겠습니다. 위 예제는 2004-02-29부터 1 YEAR만큼 지난 날짜를 출력합니다. 뭔가 이상하게 나오는데요. 365일을 기준으로 해서 그런 건지는 아리송 하네요. 윤년이 낀 경우는 조심해야 합니다. 1 DAY만큼 지난 날짜를 출력하려면, ..
large database를 import 해 보면서, 어떤 식으로 mysql에 dump 파일을 db에 반영하는지 알아보겠습니다. 문제의 데이터 베이스는, 깃헙의 이 저장소에 들어 있습니다. test_db라고 다운을 받아보시면, dump 파일들이 있고, sql 파일이 있는데요. 이 중에, employees.sql을 열어보면 코드가 좀 길다는 것을 알 수 있습니다. 그런데, 이것을 해석해 보면 크게 2 부분으로 나눌 수 있습니다. 테이블과 view를 create 하는 문장이 있습니다. 이 중에서, create or replace view는 뷰를 없으면 생성하고, 있으면 대체합니다. 그런데, table은 생성하는 것만 있는데요. 해당 쿼리문 위에 drop table이 있습니다. 이것은 테이블이 존재하면 삭제하..
외부에서 mysql에 접속이 가능하게끔 하고 싶습니다. 어떻게 하면 좋을까요? 제 디비 서버는 172.30.1.36에 있고, 172.30.1.8에서 접근을 하려고 합니다. 클라이언트에는 dbeaver가 깔려 있습니다. 제가 접속하려는 계정은 cho입니다. host가 %인 것으로 보아서는 외부에서도 접근이 가능하게끔 하려던 모양입니다. 해당 계정으로 접속해 보겠습니다. 그러면, 뜬금없이 이런 메세지가 나옵니다. 영어를 해석해 보면, last packet이 서버에 갔지만, 드라이버가 어떠한 패킷을 응답받지 않았다고 합니다. 가는 건 문제가 없었다면, 오는 게 문제였을까요? 아니면, 중간에 차단이 일어났을까요? 방화벽이 의심스러우니, 방화벽부터 보겠습니다. 이미 172.30.1.0/24에 대해서 3306으로 ..
예전에 게시판을 구현했을 때 페이징 처리를 해야 할 일이 있었습니다. 어떻게 처리할 지 고민하다가, limit와 offset 조합으로 처리하였던 기억이 납니다. 컬럼 수가 그리 많지 않다면, 시도해 보아도 괜찮은 방법 중 하나입니다. 실제로, 해커랭크나, 다른 사이트 sql 문제들을 풀고 나서, 다른 분들의 코드를 보면 limit는 정말 많이 볼 수 있음을 알 수 있습니다. 특히 rank 관련해서요. 예를 들어서, 모든 사람들의 score 값이 다 다를 때, k위를 한 사람을 구하는 쿼리를 쓸 때, 정렬하고 offset, limit 조합을 쓰면 너무 쉽게 처리할 수 있습니다. 예제 상황을 가지고 오겠습니다. dbeaver의 예제 데이터 베이스에는, Album 테이블이 있습니다. 그리고, Track이 있습..
최근댓글