DATETIME
시간과 날짜를 다뤄보자.
지금 야구 데이터베이스에서는 debut 날짜를 문자열로 저장하고 있다. 문자열로 저장하는 것이 장점이 있을 수도 있지만 단점이 더 많다. 왜냐하면 만약 문자열로 저장된 날짜에 6개월을 더하는경우는 처리하기가 어렵다.
그렇기 때문에 문자열 타입이 아닌 다른 타입이 필요하다.
크게 3개로 나뉜다.
- DATE - 연/월/일
- TIME - 시/분/초
- DATETIME - 연/월/일/시/분/초
대부분의 경우 게임에선 DATETIME을 이용한다.
한번 테스트를 해보자. 테이블을 하나 생성한다.
다음 양식을 통해 문자열을 DATETIME으로 캐스팅 할 수 있다.
현재 시간을 추출하는것은 다음과 같다.
GETDATE는 SQL 표준은 아니기에 밑에 버전을 사용하면 된다.
단점이 있는데 GETDATE 같은 경우는 머신의 시간에 의존적이다. 즉 컴퓨터마다 시간이 다르기 때문에 문제가 될 수 있다.
이걸 사용해서 표준 시간을 사용할 수 있다.
CASE
만약 사람 데이터에 계절을 추가하고 싶다고 해보자.
그리고 그 계절은 태어난 달을 기준으로 한다고 해보자.
그렇다면 C#이나 C++에서는 if문이나 switch문 같은 걸로 코딩을 할것이다.
그러면 SQL에서는 어떻게 할까
집계
집계와 관련되는 함수는 총 5가지가 있다.
- COUNT
- SUM
- AVG
- MIN
- MAX
이름만 봐도 기능을 어느정도 유추할 수 있을 것이다. 이 집계 함수는 집합이 NULL 이라면 무시하는 것을 원칙으로 한다.
유일하게 COUNT 만이 *를 쓸 수 있다.
또한 집계함수에서 DISTINCT를 사용해 중복을 제외하고 추출할 수 있다. 나머지는 따로 하진 않겠다.
연습문제
베팅 테이블에서 연습을 해보자.
- playerID - 선수 ID
- yearID - 시즌 년도
- teamID - 팀 명칭 , 'BOS' = 보스턴
- G_batting - 출전 경기 + 타석
- AB - 타수
- H - 안타
- R - 출루
- 2B - 2루타
- 3B - 3루타
- HR - 홈런
- BB - 볼넷
문제 1 : 보스턴 소속 선수들의 정보들만 모두 출력
문제 2 : 보스턴 소속 선수들의 수는 몇 명?(단, 중복 제거)
문제 3 : 보스턴 팀이 2004년도에 친 홈런 개수
문제 4 : 보스턴 팀 소속으로 단일 년도 최다 홈런을 친 사람의 정보
'Unity > 온라인 RPG' 카테고리의 다른 글
[데이터베이스] SQL 입문 - 정규화, INDEX, UNION, JOIN... (0) | 2024.02.20 |
---|---|
[데이터베이스] SQL 입문 - Group, 추가 삭제 갱신, subquery (0) | 2024.02.16 |
[데이터베이스] SQL 입문 - SSMS 다루기와 각종 문법 (1) | 2024.02.14 |
[데이터베이스] SQL 입문 - 세팅 (0) | 2024.02.13 |
[게임 서버] Unity와 서버 연동 (1) | 2024.02.06 |