본문 바로가기

728x90

Programming/postgreSQL

(6)
postgreSQL 데이터 타입 bool boolean char character varchar text int integer float double serial boolean, bool1 bytetrue, false, null 의 값을 가질 수 있음Boolean 열에 아래의 문자를 삽입하면 대소문자 구분 없이 '1', 'yes, 'y', 't', 'true' 는 true로 '0', 'no', 'n', 'f', 'false' 는 false로 변환됨 char(n)고정 길이 문자열, n보다 짧은 문자열을 삽입하면 우측 공백이 생김 varchar(n)가변 길이 문자열 text변수 길이 문자열smallint2 bytes정수 -32,768 ~ 32,767int4 bytes정수 -2,147,483,648 ~ 2,147,483,647bigint8 bytes정수  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807decimal(p,..
postgreSQL upsert insert update INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...)ON CONFLICT (conflict_column)DO NOTHING | DO UPDATE SET column1 = value1, column2 = value2, ...INSERT INTO ITEM (ID, NAME, PRICE)VALUES (1, 'Water', 600) , (2, 'Ice Cream', 1100)ON CONFLICT(ID)DO UPDATE SET PRICE = EXCLUDED.PRICEON CONFLICT(ID)충돌하면 아래 구문 실행DO NOTHING아무것도 안 함DO UPDATE업데이트 함EXCLUDED충돌돼서 제외된 행
postgreSQL recursive 재귀함수 WITH RECURSIVE cte_name (column1, column2, ...)AS( -- anchor member SELECT select_list FROM table1 WHERE condition UNION [ALL] -- recursive term SELECT select_list FROM cte_name WHERE recursive_condition)SELECT * FROM cte_nameWITH RECURSIVE SUBORDINATES AS ( SELECT EMPLOYEE_ID , MANAGER_ID , NAME FROM EMPLOYEES WHERE EMPLOYEE_ID = 1 UNION SELECT E.EMPLOYEE_ID , E.MANAGER..
postgreSQL GROUPING CUBE ROLLUP SQL 실행 순서 SELECT BRAND , PRODUCT , SUM(SALES)FROM COMPANYGROUP BY GROUPING SETS( (BRAND, PRODUCT) , (BRAND) , (PRODUCT) , ())ORDER BY BRAND , PRODUCT ..GROUP BY CUBE(BRAND, PRODUCT)....GROUP BY GROUPING SETS( (BRAND, PRODUCT) , (BRAND) , ())....GROUP BY ROLLUP(BRAND, PRODUCT)..첫 번째, 두 번째는 동일한 결과이고 세 번째, 네 번째도 동일한 결과GROUPING SETS는 괄호 안에 지정한 형식으로 GROUP을 설정하여 통계CUBE는 괄호 안의 파라미터로 모든 가능한 GROUPING ..
postgreSQL true false null SELECT TRUE AND NULL AS RESULT; -- nullSELECT FALSE AND NULL AS RESULT; -- falseSELECT NULL AND NULL AS RESULT; -- nullSELECT TRUE OR NULL AS RESULT; -- trueSELECT FALSE OR NULL AS RESULT; -- nullSELECT NULL OR NULL AS RESULT; -- null우선순위 TRUE > NULL > FALSEAND 하면 우선순위 낮을 걸로OR 하면 우선순위 높은 걸로※true, false 대신 쓸 수 있는 boolean으로 인정되는 문자열true'true''t''yes''y''1'false'false''f''no''n''0'
postgreSQL LIMIT OFFSET FETCH SELECT NAME , BIRTH_YEARFROM PERSONORDER BY BIRTH_YEARLIMIT 3 OFFSET 1..ORDER BY BIRTH_YEAROFFSET 1FETCH NEXT 3 ROW ONLY1개의 row를 상쇄, 3개의 row 가지고 오다.쿼리 2개 다 동일한 결과OFFSET row_to_skip { ROW | ROWS }FETCH { FIRST | NEXT } [ row_count ] { ROW | ROWS } ONLYFIRST와 NEXT 그리고 ROW와 ROWS 다 동의어LIMIT는 SQL 표준이 아니므로 OFFSET을 권장

728x90