본문 바로가기

분류 전체보기121

시간 데이터 유형 테이블과 데이터베이스를 설계하고 시간 데이터 유형을 선택할 때는 신중하게 고려해야 한다. 상황에 따라 전체 TIMESTAMPTZ 레벨이 필요하거나 필요하지 않을 수 있다. 타임존 확인 show timezone; 타임존 설정(변경) set timezone = 'America/Los_Angeles'; Date and Time 정보와 관련된 데이터 타입 TIME: 시간만 포함 15:03:30.484561 DATE: 날짜만 포함 2023-05-16 TIMESTAMP: 타임존을 명시하지 않은 날짜와 시간 2023-05-16 15:03:30.484561 TIMESTAMP는 타임존에 따른 시간 변경이 적용되지 않는다. TIMESTAMPTZ: 타임존을 명시한 날짜와 시간 2023-05-16 18:01:40.920477.. 2023. 5. 16.
GROUP BY와 집계 함수 GROUP BY는 데이터를 분류하여 데이터가 어떤 범주에 어떻게 분포되는지를 이해하기 위해 데이터를 집계하는데 사용된다. 집계 함수 https://www.postgresql.org/docs/current/functions-aggregate.html SQL은 다양한 집계 함수를 제공한다. 집계 함수의 주요 아이디어는 여러 입력값을 가져와 하나의 출력값을 반환하는 것이다. 가장 일반적인 집계 함수: AVG() : 평균값을 반환 COUNT() : 값의 개수를 반환 MAX() : 최대값을 반환 MIN() : 최소값을 반환 SUM() : 모든 값의 합계를 반환 집계 함수 호출은 SELECT 절이나 HAVING 절에서만 발생하낟. 주의사항 AVG()는 소수점 이하 많은 자릿수의부동 소수점 값을 반환한다. COUNT.. 2023. 5. 15.
비교 연산자 및 기타 연산자 우선 순위 괄호() NOT 연산자 비교 연산자, SQL 연산자 AND OR 비교 연산자 모든 자료형에 대해 적용 가능 NOT, AND, OR (우선순위: NOT > AND > OR) 다음 SQL문 중 실행 결과가 나머지 두 가지와 다른 것은? SELECT player_name, position, height FROM player WHERE position 'GK' AND height > 180; SELECT player_name, position, height FROM player WEHRE NOT(position = 'GK') AND height > 180; SELECT player_name, position, height FROM player WHERE NOT(position = 'GK' AN.. 2023. 5. 15.
SELECT SELECT은 가장 많이 사용되는 SQL 문장으로, 테이블에서 정보를 검색하는데 사용된다. SELECT 문 예제 SELECT column_name FROM table_name; SELECT * FROM table_1; SELECT c1, c2 FROM table_2; 일반적으로, 모든 열을 포함한 테이블의 전체 정보가 필요하지 않은 경우 *(asterisk)를 사용하지 않는 것이 좋다. 쿼리 서버와 응용 프로그램 간의 트래픽이 증가하여 검색 결과가 느려질 수 있기 때문에 필요한 컬럼만 조회하는 것이 좋다. 모든 열을 포함한 테이블의 전체 정보가 정말 필요한 경우에만 *(asterisk)를 사용한다. SELECT DISTINCT SELECT DISTINCT column FROM table; SELECT D.. 2023. 5. 15.
TDD, 클린 코드 - 로또 미션 2단계 - 로또 GitHub - oneny/java-lotto: 로또 게임 구현을 관리하는 저장소 로또 게임 구현을 관리하는 저장소. Contribute to oneny/java-lotto development by creating an account on GitHub. github.com 기능 목록 핵심 기능 로또 번호는 1 이상 45 이하 로또 티켓은 6개의 로또 번호를 가진다. 당첨 로또티켓과 비교하여 맞춘 개수에 따른 로또 순위들을 반환한다. 로또 순위들을 통해 수익률, 순위 당 몇 개씩 맞췄는지를 출력한다. LottoNumber 1 이상 45 이하의 숫자 그 외의 숫자가 입력되는 경우에는 IllegalArgumentException throw 정적 팩토리 메서드, 인스턴스 캐싱을 통해 같은.. 2023. 5. 14.
정적 팩토리 메서드, 인스턴스 캐싱 TDD, 클린 코드 with Java - 로또 미션 GitHub - oneny/java-lotto: 로또 게임 구현을 관리하는 저장소 로또 게임 구현을 관리하는 저장소. Contribute to oneny/java-lotto development by creating an account on GitHub. github.com 한 사람이 LottoTicket 10장을 산 경우 60개의 LottoNumber 객체가 생성된다. 여기서 문제점은 LottoNumber는 1 ~ 45의 고정된 값인데에도 불구하고 같은 번호라도 새로운 인스턴스를 생성하고, 가비지 컬렉션 등 부담이 될 수 있다. 즉, 로또를 사려는 사람이 1만명인 경우 10장씩 사면 서로 다른 LottoNumber 인스턴스 60만개가 생성되는 것은 너.. 2023. 4. 30.
TDD, 클린 코드 - 로또(자동) 로또 자동 LottoNumber public class LottoNumber { public static final int LOTTO_MINIMUM_NUMBER = 1; public static final int LOTTO_MAXIMUM_NUMBER = 45; private static final String ILLEGAL_LOTTO_NUMBER_MESSAGE = "올바른 로또 번호를 입력해주세요. 입력된 번호 : "; private final int number; public LottoNumber(int number) { this.number = validatedLottoNumber(number); } public int number() { return number; } private int valid.. 2023. 4. 23.
TDD, 클린코드 - 문자열 사칙연산 계산기 2번째 미션 - 로또, TDD 로또 미션 이전에 자동차 경주 5단계까지 마무리했는데 스프링이나 DB 공부나 과제 미션 클리어하는데 집중한다고 제대로 블로그를 작성하지 못했다.. 지금부터라도 제대로 작성해보자! 이번 첫 단계인 문자열 사칙연산 계산기는 좋은 피드백도 많이 받아서 기분이 좋다ㅎㅎ 문자열 사칙연산 계산기 Operand 클래스 public class Operand { private static final Pattern NUMBER_PATTERN = Pattern.compile("^[0-9]*$"); private static final String ILLEGAL_NUMBER_MESSAGE = "양수를 입력해주세요."; private final String operand; // 양수만 입력가능하다.. 2023. 4. 19.
함수형 인터페이스와 람다식 + 전략패턴 함수형 인터페이스(Functional Interface) 함수형 인터페이스란? 함수형 인터페이스(Fuctional Interface)란, 하나의 추상 메서드(abstract method)만을 갖는 인터페이스를 말한다. 그리고 람다식은 이러한 함수형 인터페이스를 기반으로 작성이 가능하다. 왜 생겼을까? 위에서 말한 것처럼 함수형 인터페이스를 사용하는 이유는 람다식은 함수형 인터페이스로만 접근이 가능하기 때문이다. 사진에서 위 메서드는 Comparator의 추상 메서드이다. 그리고 아래는 람다식인데 람다식의 매개변수는 연관된 인터페이스의 메서드, 즉 추상 메서드에 의해 결정된다. 따라서 보는 것과 같이 Comparator의 경우, compare 메서드를 사용하기 때문에 두 개의 인수가 있고, 람다식을 사용할.. 2023. 4. 19.