일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- datetime
- 세그먼트 트리
- 네이밍
- 리스트 컴프리헨션
- itertools
- enumerate
- floor
- 딕셔너리
- convention
- SUM()
- ceil
- 큰 수 나누기
- python
- FOREIGN KEY
- 파이썬
- 자료구조
- 2557
- 에라토스테네스의 체
- flask
- BOJ
- project euler
- 소수
- SUM
- lower_case_table_names
- Dictionary
- mysql
- timestamp
- 외래키
- Codeforces
- list comprehension
- Today
- Total
목록DB 공부 기록 (11)
늒네 기록
kysely의 메인 사이트에 들어가보면 playground라는 곳이 있다. Playground | Kysely Playground | Kysely @wirekang has created a playground for Kysely. You can use it to quickly test stuff out and for creating code examples for your issues, PRs and Discord messages. kysely.dev 대충 이렇게 생긴 페이지가 로드된다. 사용 방법은 간단하다. 좌측 패널에 kysely를 사용한 코드를 작성하면 우측에 코드를 통해 생성된 쿼리를 보여준다. 여기서 중요한 것은, 이 playground에서 실제 코드를 작성할때 지원되는 기능들을 미리 살펴볼 ..
그래서 쿼리빌더 진형으로 넘어가서 쓸만한 프로젝트가 없는지 살펴보다가, 아래의 글 등을 발견하면서 zapatos라는 프로젝트를 알게 되었다. Running home on Typescript and Postgres with Zapatos | by Yasith Ariyasena | Nerd For Tech | Medium Running home on Typescript and Postgres with Zapatos A super alternative to heavy-weight ORMs for Typescript/Postgres medium.com zapatos도 짧게 찾아봤을 때는 꽤 매력적인 프로젝트였다. 'Zero-Abstraction Postgres for TypeScript' 라는 소개답게 타입을 ..
예전에 토이 프로젝트에서 nestjs를 사용하면서 mysql DB와 연결하기 위해 TypeORM을 사용했던 적이 있었다. 당시에는 DB를 먼저 설계하고 그 다음 DB를 서버와 연동했는데, 아래의 nestjs의 공식 문서에 TypeORM을 활용하는 방법이 친절하게 설명되어 있어서 이를 사용했었다. Database | NestJS - A progressive Node.js framework Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is b..
우리에게 json_field라는, json형식의 칼럼이 들어있는 mytable이라는 테이블이 주어져있다고 하자. 예시 상황이니 다른 칼럼들을 신경쓰지 말고, 아래 sql문이 에러 없이 돌아가는 테이블이라고 치자. 1 2 3 4 5 6 7 8 9 INSERT INTO mytable (json_field) VALUES ( '{ "title": "hello", "content": "never mind", "date": "2020-11-21", "tags": ["diary", "2020-11"] }' ); cs 대강 상황을 만들어보자면, 우리는 테이블에 제목, 내용, 날짜, 태그가 들어있는, 게시글 같은 걸 저장하려 한다고 해보자. 그렇다면, 여기서 제목을 "I'm here!" 같이, 작은 따옴표가 들어가도록 ..
mysql을 쓸때와 또 달랐던 점은, 한 번 만들어놓은 칼럼들이 순서가 마음에 안 들어서 바꾸려고 했더니 pgadmin 페이지에서 방법이 바로 제공되지 않는 것으로 보였던 것이다. 그래서 구글링을 해봤더니, 흥미로운 글을 찾을 수 있었다. https://stackoverflow.com/questions/285733/how-do-i-alter-the-position-of-a-column-in-a-postgresql-database-table How do I alter the position of a column in a PostgreSQL database table? I've tried the following, but I was unsuccessful: ALTER TABLE person ALTER COL..
postgresql을 처음 써보면서 신기했던 건, mysql에서 봤던 auto increment 조건을 바로 붙여주는 옵션이 없는 대신 serial이라는 타입이 존재했던 것. https://www.postgresql.org/docs/current/datatype-numeric.html PostgreSQL: Documentation: 13: 8.1. Numeric Types Numeric types consist of two-, four-, and eight-byte integers, four- and eight-byte floating-point numbers, and selectable-precision decimals. Table 8.2 lists the available types. Table 8...
[mysql] 테이블 네이밍 컨벤션 글에서 '테이블 이름 및 칼럼 이름 파스칼 케이스 사용'을 하겠다고 했었는데, MySQL Workbench로 로컬 인스턴스에 연결해서 'Project'라는 이름의 테이블을 생성하려고 했더니 다음과 같은 에러가 발생했다. 설정이 1로 되어있어서 Project 테이블 이름을 project 테이블로 바꿔서 생성하겠다고 한다. 파스칼 케이스를 사용하고 싶다면 해당 설정을 변경하면 그만이겠지만, 이런 설정이 존재하는 데에는 분명 이유가 있을 것이다. 해당 키워드를 가지고 검색을 하다보면, mysql 레퍼런스 매뉴얼 페이지가 나온다. In MySQL, databases correspond to directories within the data directory. Each tabl..
이전에 외래키를 설정하지 않고 테이블들을 관리하던 프로젝트에 참여했던 적이 있었다. 당시에는 별 생각이 없었는데, 다시 보니 이렇게 해서 얻는 이점이 있었을까? Insert 과정에서 빡빡하게 관리를 해주면, 그리고 특정 행을 delete할 일이 없다면 크게 문제될 것은 없을것 같은데, 실제로 다른 사람들도 프로젝트를 진행할때 외래키를 쓰지 않기도 하는지 궁금했다. 검색을 해보면서 흥미로운 링크를 둘 찾았는데, 하나는 여기. 질문자의 시니어도 프로젝트를 돌릴 때 FK를 사용하지 않았는데, 그 이유는 '급하게 INSERT, UPDATE, DELETE를 해야할 때 제약이 걸려있으면 이로 인해서 시간이 잡아먹히는 것도 코스트기 때문'. 이라고 했단다. 아래 달린 답변에도 읽어볼만한 내용이 있었는데, 'INSER..
특정 행을 입력할때 생성 시간을 자동으로 기록해두고 싶으면 데이터 타입에 TIMESTAMP를 넣고 Defalut/Expression에 CURRENT_TIMESTAMP()를 쓰면 된다. 혹은 CURRENT_TIMESTAMP, NOW() 모두 같은 값. 이렇게 하면 행을 생성할때 생성 시간이 자동으로 같이 입력된다. 이 링크 에 따르면 CREATE TABLE시 '{칼럼이름} DATETIME DEFAULT CURRENT_TIMESTAMP' 식으로 디폴트 값을 넣어줄 수 있고, ALTER TABLE시 'ALTER COLUMN {칼럼이름} SET DEFAULT CURRENT_TIMESTAMP'식으로 디폴트값을 수정해줄 수 있다. 위 예시와 같이 TIMESTAMP타입 대신 DATETIME을 사용하는 것도 가능하다...
관계 테이블의 이름을 짓는 것에 대해서도 재미있는 글들이 몇 있었다. 예를 들어, 이 링크 에서는 이런 테이블들을 다음의 이름으로 부른다고 설명해주고 있다. Association table Bridge table Cross-reference table Crosswalk Intermediary table Intersection table Join table Junction table Link table Linking table Many-to-many resolver Map table Mapping table Pivot Table Pairing table Relationship table Transition table 그래서 association table을 검색어로 이런 테이블들 네이밍을 어떻게 하는지 검..