본문 바로가기

데이터베이스(DB)
(45)
[PostgreSQL] UUID 생성하기 // UUID 생성하기 데이터들을 식별할 수 있는 식별자로 sequence를 사용할 수도 있지만, 순차적인 숫자는 충돌의 위험이 높기 때문에 다른 방법을 찾고 싶었다. Mongo DB에서 '_id' 필드에 자동으로 할당되는 ObjectID와 유사한 역할을 할 방법을 찾아보다가 UUID를 적용하기로 했다. 1. UUID 확장 모듈 설치 CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; 2. UUID 타입을 default로 사용하여 컬럼 추가 CREATE TABLE 테이블명 ( id UUID PRIMARY KEY DEFAULT uuid_generate_v4(), .... );
[PostgreSQL] Node.js와 연결하기 // Node.js와 PostgreSQL 연결하기 1. node.js에서 'pg' 패키지 설치 npm install pg 2. 데이터베이스 연결 정보 저장 DATABASE_USER=설정한 name DATABASE_HOST=localhost DATABASE_NAME=설정한 database DATABASE_PASSWORD=설정한 password DATABASE_PORT=5432 - 중요한 정보이기 때문에 .env 파일에 선언해서 관리한다. 3. 데이터베이스 연결 구성 import { Pool } from 'pg'; const pool = new Pool({ user: process.env.DATABASE_USER, host: process.env.DATABASE_HOST, database: process.e..
[PostgreSQL] INTERVAL // INTERVAL - 시간 간격을 나타내는 DATA TYPE - 날짜 및 시간 연산에 활용 - 날짜(DATE), 시간(TIME), 타임스탬프(TIMESTAMP) 타입의 데이터 연산이 가능하다. - INTERVAL '크기 단위' 형식으로 표현한다. INTERVAL '20 days' INTERVAL '1 year' INTERVAL '1 hours' INTERVAL '30 minutes' - 여러 단위를 이어서 사용할 수 있다. INTERVAL '1 year 1 months 7 days' INTERVAL '3hours 5minutes' 쿼리를 짜다 보면, 날짜를 연장하고자 할 때가 있을 것이다. 나는 사용자가 비밀번호를 3개월 뒤 변경하겠다고 선택했을 때, 비밀번호 변경 제한일자를 90일 연장하기 위해 I..
스프링 부트와 PostgreSQL 연동 // 스프링 부트와 연동하기 - 스프링 부트 프로젝트를 생성할 때 dependency로 추가해주었더라도, 추가 설정이 필요하다. 1. application.properties spring.datasource.driver-class-name=org.postgresql.Driver spring.datasource.url=jdbc:postgresql://localhost:5432/DB명 spring.datasource.username=사용자명 spring.datasource.password=비밀번호 나는 postgreSql 을 사용하기 때문에 위처럼 설정했다. 다른 데이터베이스를 사용하는 사람은 driver-class-name과 url을 변경해주면 된다. mybatis.mapper-locations=class..
PostgreSQL 설치 및 환경설정 // PostgreSQL - https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Community DL Page Note: EDB no longer provides Linux installers for PostgreSQL 11 and later versions, and users are encouraged to use the platform-native packages. Version 10.x and below will be supported until their end of life. For more information, please see this blog p www.enterprisedb.com - 입력한 패스워드는 꼭 기억해..
[Oracle] 인덱스 // 데이터베이스 상태 - 테이블 내의 레코드 순서는 개발자가 원하는 정렬 상태가 아니다. - order by 필요 - 어떤 데이터 검색 > 처음 ~ 끝까지 차례대로 검색 > Table full scan - 특정 컬럼 선택 > 별도의 테이블에 복사 > 미리 정렬★★★ > 인덱스 // 인덱스, Index - 검색을 빠른 속도로 하기 위해서 사용하는 도구 - 도서의 색인과 동일한 역할 > 수많은 내용 중 원하는 것을 빠르게 찾기 위한 도구 - SQL 명령 처리 속도를 빠르게 하기 위해서, 특정 컬럼에 대해 생성되는 도구 ~ create index 인덱스명 on 테이블명(컬럼명); - 장점: 검색 처리 속도를 향상시킨다. - 단점: 너무 많은 인덱스 사용은 전체적인 DB 성능을 저하시킨다. - 자동으로 인덱스..
[Oracle] 참조 레코드 삭제 // 레코드 삭제 > 관계 맺은 자식 테이블에서 참조가 있는 경우.. 1. 취소 2. 삭제 a. 본인 삭제 + 자식 삭제 b. 본인 삭제 + 자식 보존 > 완전완전 비권장 c. 본인 변형 + 자식 보존 > 보통 사용됨 d. 자식 테이블을 만들 때 외래키에 CASCADE 옵션 걸기 ~ create table tblScore( seq number references tblStudent(seq) on delete cascase ) - 2.-a. 본인 삭제 + 자식 삭제 delete from tblBonus where num = 1001; delete from tblInsa where name = '홍길동'; select * from tblInsa; - 2-c. 본인 변형 + 자식 보존 > 보통 사용됨 upda..
[Oracle] 일련번호 // 계층형 쿼리를 이용하여 일련번호 만들기 - 숫자 만들기 select level from dual connect by level