1_데이터유형
- 전체 데이터 유형
데이터 유형 |
---|
ARRAY |
BIGUMERIC |
BOOL |
BYTES |
DATE |
DATETIME |
FLOAT64 |
GEOGRAPHY |
INT64 |
INTERVAL |
JSON |
NUMERIC |
STRING |
STRUCT |
TIME |
TIMESTAMP |
바이트 = 8비트
비트 = 0 또는 1
정렬 ORDER
그룹화 GROUP BY, DISTINCT, PARTITION BY
정렬 및 그룹화 불가 데이터 유형 : ARRAY, STRUCT, GEOGRAPHY, JSON
비교 불가 데이터 유형 : GEOGRAPHY, JSON
- GEOGRAPHY 비교하기 위해선 ST_Equals 사용
NULL, NAN, -INF, -INT, 0, INT, INF 순서
- ARRAY(배열) 유형
- 데이터 유형이 동일한 값으로 구성된 목록
- LIST와 비슷한 특성
- NULL 값을 가질 수 있음 (NULL 요소가 포함된 ARRAY는 CAST나 FORMAT을 사용해야 함)
- 간단한 데이터 유형(INT64)와 복합 데이터 유형(ex.
STRUCT
)
- Array의 Array는 생성할 수 없음으로 복합 데이터는
SELECT AS STRUCT
를 이용하여 STRUCT를 ARRAY에 넣어야 함
- BOOL 유형
- TIMESTAMP 유형
- TIMESTAMP는 DATE 유형과는 달리 절대적 시간, 전 세계적으로 동일한 순간을 나타냄
- '2020-01-01 00:00:00 UTC' = '2019-12-31 19:00:00 America/New_York = '2020-01-01 05:30:00 Asia/Kolkata'
2. 어휘구조 & 구문
- Literal
1) 원시 문자열
R"abc+"
r'''abc+'''
R"""abc+"""
원시 문자열 리터럴 프리픽스(r 또는 R)가 있는 따옴표 또는 삼중따옴표 붙은 리터럴은 원시/정규식 문자열로 해석됩니다.
- 쿼리 매개변수
- 쿼리문이 길어지면 변수명에 원하는 값을 담아두고 사용
1) 이름이 지정된 쿼리 매개변수
SELECT * FROM X WHERE LastName = @x
2) 위치 쿼리 매개변수
?
을 사용
- 위치 쿼리 매개변수는 이름이 지정된 쿼리 매개변수와 함께 사용할 수 X
SELECT * FROM X WHERE LastName = ? and FirstName = ?
3. 변환 규칙
참고페이지
CAST 변환, 강제 변환, 상위 유형 변환
- CAST 변환
- 오류나더라도 결과값에 문제없으려면
SAFE CAST
사용
-
강제 변환
-
상위 유형 변환
- 2개 이상의 표현식을 강제 변환할 수 있는 공통 유형
4. 형식 요소
참고페이지
- 날짜 및 시간
FORMAT_DATE
FORMAT_DATETIME
FORMAT_TIME
FORMAT_TIMESTAMP
PARSE_DATE
PARSE_DATETIME
PARSE_TIME
PARSE_TIMESTAMP
5. 대조
COLLATE
- 문자열의 정렬 및 비교 방법을 결정
-CI : 대/소문자 구분 X (Case Insensitive)
- CS : 대/소문자를 구분 O (Case Sensitive)
- AS : 악센트(언어의 높낮이) 구분 X (Accent Insensitive)
COLLATE('orange1', 'und:ci')