postgresql에서 random 함수를 쓰면서 generate_series 함수를 썼습니다. 오늘 이 함수에 대해서 조금 더 자세히 알아보도록 하겠습니다. 먼저, 숫자형에 대해서는, 이렇게 2가지 인자를 줄 수 있습니다. 이 때에는 step이 1입니다. 1씩 증가한다는 의미입니다. start가 1이고, end가 10인데요. 1부터 10까지 순서대로 결과에 나타납니다. 1부터 10까지 출력됨을 볼 수 있어요. 그런데 4씩 증가하게 할 수 없을까요? 3번째 인자로 4를 주면 됩니다. start가 1이고, end가 10, step이 4이므로, 1, 5, 9만 출력됩니다. 9 다음에 13인데요. 13은 10보다 크기 때문에, 출력되지 않습니다. 결과를 보면 1, 5, 9만 나왔음을 알 수 있습니다. 반대로,..
코딩/Sql 검색 결과
안녕하세요. 이번 시간에는 postgresql에서 random 함수를 알아보겠습니다. random 함수는 꽤 간단하게 쓸 수 있습니다. 그냥 random(). 끝입니다. 결과를 보시면 0.1816107987이 나옵니다. 또 다시 호출해 보겠습니다. 이번에는 0.3785214382가 나오네요. 문서에 따르면 이 함수는 0 이상 1 미만인 실수를 돌려준다고 되어 있어요. 추가로 언급된 부분은, security한 랜덤을 원한다면 crypto를 알아보라고 되어 있어요. 그러면 위 쿼리는 무엇을 하는 것일까요? 일단 random()*100이면, 0이상 100미만인 랜덤 실수를 뽑습니다. 그런데 floor가 붙었네요. 바닥 함수이므로, [0, 99]의 랜덤한 정수를 뽑습니다. 70은 0이상 99이하의 정수이니, 해..
데이터베이스를 공부하는 방법 중에 하나는, 잘 구현된 라이브러리를 보고 어떤 구조로 데이터베이스를 설계했는지 보는 것이라고 생각합니다. 장고에서, 카데고리를 추가해야 할 일이 있었는데요. 저는 항상 하던 것과 같이 self Foreign key와 name만을 필드로 가지는 모델을 정의했습니다. 그런데, 찾다보니 mptt라는 것이 있었는데요. 간단하게 소개해 드리겠습니다. 먼저 계층형 쿼리에 대한 것부터 알아야 하는데요. 흔히 댓글, 대댓글이라던지 1차, 2차, 3차 카데고리와 같은 것들이 계층형 구조라고 할 수 있어요. 여기서 질문을 하나 던져볼게요. 대분류가 Game에 속하는 글은 어떤 것인가? 예를 들자면, 저는 btd5에 대해 썼는데요. btd5의 대분류 역시 Game입니다. 그러면 btd5는 Ga..
장고에서 many to many field를 써야 할 때가 종종 있습니다. 예를 들자면, 게시물 하나에 태그를 구현하는 것, 친구 관계 등이 있습니다. 이 글에서는 many to many field를 다룰려는 것은 아니고, 다대다 관계에서 어떤 식으로 테이블을 생성하는지만 간단하게 알아보겠습니다. 게시물 테이블이 있다고 해 보겠습니다. 보통 한 게시물의 작성자는 하나이므로, 게시물 테이블은 이런 식으로 설계해도 크게 문제는 없습니다. 1, 2, 3은 글을 쓴 작성자의 유저 id를 의미합니다. fk로, 유저의 id를 참조합니다. board에서 user 테이블을 참조하는 외래키 정도라고 생각하시면 편하겠습니다. 2번 유저의 이름을 GA에서 ga로 바꾸었을 때, 2번 게시물의 작성자가 ga라는 것을 알 수 있..
dbeaver에서 데이터베이스로부터, erd로 1분만에 떨어트리는 방법을 알아봅시다. 이전에 도서관 토이 프로젝트를 했었습니다. 거기서 library 데이터베이스를 생성했고, 3개의 테이블을 이용했는데요. erd 다이어그램으로 떨어트려 보겠습니다. 마우스 오른쪽 우클릭 후, Create 탭의 Other를 눌러보겠습니다. DBeaver를 눌러보면, ER 다이어그램이 하나 나오는데요. 이것을 클릭하겠습니다. 저는, library 데이터베이스에서, book, borrow, user 이렇게 3개의 테이블을 생성했는데요. 각각 책, 빌린 사람들, 그리고 유저 목록을 나타냅니다. 저는 이 중, 테이블 3개를 선택 할 겁니다. 제 토이 프로젝트에서 사용했던 것들이기 때문입니다. 이제, 확인을 누르시면, 잠시 후에 e..
최근댓글