SQL 문법정리 : 데이터타입Boolean,Character,Numeric,Time, Arrays, JSON
Boolean
참과 거짓의 값을 저장한다.
참 | 거짓 |
TRUE | FALSE |
't' | 'f' |
'true' | 'false' |
'y' | 'n' |
'yes' | 'no' |
'1' | '0' |
CREATE TABLE STOCK_AVAILABILITY
(
PRDOCUT_ID INT NOT NJLL PRIMARY KEY
,AVAILABLE BOOLEAN NOT NULL
);
INSERT INTO STOCK_AVAILABLITY (PRODUCT_ID, AVAILABLE)
VALUES
(100, TRUE),
(200, FALSE),
(300, 't'),
(400, '1').
(500, 'y'),
(600, 'yes'),
(700, 'no'),
(800, '0');
SELECT * FROM STOCK_AVAILABILITY;
WHERE
AVALIABLE
;
SELECT * FROM STOCK_AVAILABILITY
WHERE
AVAILABLE = 'YES';
Character
. CHAR
고정형 길이의 문자열을 저정한다.
만약 CHAR(10)인데 'ABCDE'만 입력할 경우 실제로는 'ABCDE '로 뒤에 공백을 붙여 저장한다.
. VARCHAR
가변형 길이의 문자열을 저장한다.
만약 VARCHAR(10)인데 'ABCDE'만 입력할 경우 실제로 'ABCDE'만 저장한다.(뒤에 공백을 붙이지 않는다.)
. TEXT
대용량의 문자데이터를 저장한다.
Numeric
. INT
정수형 데이터를 저장한다. 크기는 4BYTE이다.
(범위는 -2,147,486,648 to 2,147,483,647)
. SMALLINT
정수형 데이터를 저장한다. 크기는 2BYTE이다.
(범위는 -32,768 to 32,767)
. float
부동 소수점의 데이터를 저장한다. 크기는 8BYTE이다.
. numeric
NUMERIC(15,2)와 같이 전체 크기와 소수점의 자리를 지정할 수있다.
CREATE TABLE
DATA_TYPE_TEST_1
(
A_BOOLEAN BOOLEAN
,B_CHAR CHAR(10)
,C_VARCHAR VARCHAR(10)
,D_TEXT TEXT
,E_INT INT
,F_SMALLINT SMALLINT
,G_FLOAT FLOAT
,H_NUMERIC NUMERIC(15,2)
);
INSERT INTO
DATA_TYPE_TEST1
VALUES
(
TRUE
,'ABCED'
,'ABCED'
,'TEXT'
,1000
,10.12345
,10.25
);
Time, Arrays, JSON
Time
. DATE
일자 데이터를 저장한다.
SQL문 | 결과 | 설명 |
SELECT NOW()::DATE; | 2019-05-07 | 데이터 베이스 기준 현재 일자를 가져온다. |
SELECT CURRENT_DATE; | 2019-05-07 | 데이터 베이스 기준 현재 일자를 가져온다. |
SELECT TO_CHAR(NOW()::DATE,'dd/mm/yyyy'); | 07/05/2019 | TO_CHAR를 이용하여 다른 형태의 포맷으로 가져올수 있다. |
SELECT TO_CHAR(NOW()::DATE,'Mon dd, yyyy'); | May 07,2019 | TO_CHAR를 이용하여 다른 형태의 포맷으로 가져올수 있다. |
* 다양한 일자 계산
SELECT
FIRST_NAME
,LAST_NAME
,NOW() - CREATE_DATE AS DIFF
FROM
CUSTOMER;
SELECT
FIRST_NAME
, LAST_NAME
,AGE(CREATE_DATE) AS DIFF
FROM
CUSTOMER;
* AGE함수로 나이 계산도 가능하다.
SELECT
FIRST_NAME
,LAST_NAME
,EXTRACT(YEAR FROM CREATE_DATE) AS YEAR
,EXTRACT(MONTH FROM CREATE_DATE) AS MONTH
,EXTRACT(DAY FROM CREATE_DATE) AS DAY
FROM
CUSTOMER;
* EXTRACT함수로 년,월, 일을 추출할수 있다.
. TIME
시간 데이터를 저장한다.
SQL문 | 결과 | 설명 |
SELECT CURRENT_TIME; | 22:07:30.584992+09 | 데이터 베이스 기준 현재 시간을 가져온다. |
SELECT LOCALTIME; | 22:07:40.792433 | 데이터 베이스 기준 현재 시간을 가져온다. |
SELECT
LOCALTIME,
EXTRACT(HOUR FROM LOCALTIME) AS HOUR,
EXTRACT(MINUTE FROM LOCALTIME) AS MINUTE,
EXTRACT(SECOND FROM LOCALTIME) AS SECOND
;
* EXTRACT함수로 시, 분, 초를 추출할 수 있다
시간계산
SELECT TIME '10:00' - TIME '02:00' AS DIFF;
SELECT TIME '10:59' - TIME '02:01' AS DIFF;
SELECT TIME '10:59:59' - TIME '02:01:01' AS DIFF;
SELECT
LOCALTIME
,LOCALTIME + INTERVAL '2 HOURS' AS PLUS_2HOURS
,LOCALTIME + INTERVAL '2 HOURS' AS MINUS_2HOURS
*INTERVAL을 이용하여 시간 계산이 가능하다.
. TIMESTAMP
일자와 시간 데이터를 모두 저장한다.
SQL문 | 결과 | 설명 |
SELECT NOW(); | 2019-05-08 22:13:08.075995+09 | 데이터 베이스 기준 현재 일자 및 시간을 가져온다. |
SELECT CURRENT_TIMESTAMP; | 2019-05-08 22:14:30.917515+09 | 데이터 베이스 기준 현재 일자 및 시간을 가져온다. |
SELECT TIMEOFDAY(); | Wed May 08:22:15:17/864659 2019KST | 데이터 베이스 기준 현재 일자 및 시간에 요일까지 가져온다. |
* 다양한 형태의 시간 포맷을 문자열 출력
SELECT
TO_CHAR(current_timestamp, 'YYYY')
,TO_CHAR(current_timestamp, 'YYYY-MM')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.MS')
,TO_CHAR(current_timestamp, 'YYYY-MM-DD HH24:MI:SS.US')
;
Arrays
. arrary
배열 형식의 데이터를 저장한다.
한개의 컬럼의 여러개의 데이터를 동시에 저장할수 있으며 저장한 데이터의 순서로 조회할 수 있다.
JSON
. JSON
JSON형식의 데이터를 저장한다.
JSON형식의 데이터를 입력해서 JSON형식대로 각 LEVEL의 데이터를 저장 할 수 있다.
CREATE TABLE DATA_TYPE_TEST_2
(
A_DATE DATE
,B_TIME TIME
,C_TIMESTAMP TIMESTAMP
,D_ARRAY TEXT[]
,E_JSON JSON
);
INSERT INTO DATA_TYPE_TEST_2
VALUES
(
CURRENT _DATE
,LOCALTIME
,CURRENT_TIMESTAMP
,ARRAY[' 010 -1234-1234','010-2345-2345']
, '{'customer':'John Doe','itmes:{'prdocut':'Beer','qty',6}}
)
;
'SQL' 카테고리의 다른 글
SQL 문법 정리 : 데이블관리(CTAS,테이블구조 &이름 변경,컬럼추가,컬럼제거,컬럼 테이터 타입변경,테이블제거,임시테이블,TRUNCATE) (0) | 2021.02.24 |
---|---|
SQL 문법정리 : 테이블생성 (0) | 2021.02.22 |
SQL 문법 정리 : 데이터조작 (0) | 2021.02.22 |
SQL 문법 정리 : SQL의 종류(DDL,DML,DCL,TCL) (0) | 2021.02.19 |
SQL 문법 정리 : 서브커리(중첩 서브쿼리,인라인 뷰,스칼라서브쿼리, ALL,ANY,EXISTS) (0) | 2021.02.19 |