[DATABASE/POSTGRESQL] “SSL 중지 연결에 대한 설정이 pg_hba.conf 파일에 없습니다” 오류시 조치 사항
■ "SSL 중지 연결에 대한 설정이 pg_hba.conf 파일에 없습니다" 오류시 조치하는 방법을 보여준다. 1. 메모장에서 아래 경로 파일을 연다. ▶ 실행 명령
■ "SSL 중지 연결에 대한 설정이 pg_hba.conf 파일에 없습니다" 오류시 조치하는 방법을 보여준다. 1. 메모장에서 아래 경로 파일을 연다. ▶ 실행 명령
■ 컬럼을 추가하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 |
ALTER TABLE LIBRARY_DATA_SETTING ADD COLUMN USE_SECURE INTEGER NOT NULL DEFAULT 0; ALTER TABLE LIBRARY_DATA_SETTING ADD COLUMN USE_LARGE_DATA INTEGER NOT NULL DEFAULT 0; |
■ COPY 명령을 사용해 CSV 파일 데이터를 테이블에 복사하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 |
COPY PUBLIC.COM_USER FROM 'd:/export.csv'; |
※ export.csv 파일 데이터를 COM_USER 테이블에
■ COPY 명령을 사용해 테이블 데이터를 CSV 파일로 복사하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 |
COPY (SELECT * FROM PUBLIC.COM_USER) TO 'd:/export.csv'; |
※ COM_USER 테이블 데이터를 export.csv 파일로
■ INSERT ON CONFLICT 명령을 사용해 데이터를 추가 또는 수정하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
DROP TABLE IF EXISTS TEST_CUSTOMER; CREATE TABLE TEST_CUSTOMER ( CUSTOMER_ID SERIAL PRIMARY KEY ,NAME VARCHAR UNIQUE ,EMAIL VARCHAR NOT NULL ,ACTIVE BOOL NOT NULL DEFAULT TRUE ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('IBM' , 'contact@ibm.com' ), ('Microsoft', 'contact@microsoft.com'), ('Intel' , 'contact@intel.com' ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('Microsoft', 'hotline@microsoft.com') ON CONFLICT (NAME) DO UPDATE SET EMAIL = EXCLUDED.EMAIL || ';' || TEST_CUSTOMER.EMAIL; SELECT * FROM PUBLIC.TEST_CUSTOMER; |
■ INSERT ON CONFLICT 명령을 사용해 제약 조건 위반시 예외 발생을 무시하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
DROP TABLE IF EXISTS TEST_CUSTOMER; CREATE TABLE TEST_CUSTOMER ( CUSTOMER_ID SERIAL PRIMARY KEY ,NAME VARCHAR UNIQUE ,EMAIL VARCHAR NOT NULL ,ACTIVE BOOL NOT NULL DEFAULT TRUE ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('IBM' , 'contact@ibm.com' ), ('Microsoft', 'contact@microsoft.com'), ('Intel' , 'contact@intel.com' ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('Microsoft','hotline@microsoft.com') ON CONFLICT (NAME) DO NOTHING; |
■ INSERT ON CONFLICT 명령을 사용해 제약 조건 위반시 예외 발생을 무시하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
DROP TABLE IF EXISTS TEST_CUSTOMER; CREATE TABLE TEST_CUSTOMER ( CUSTOMER_ID SERIAL PRIMARY KEY ,NAME VARCHAR UNIQUE ,EMAIL VARCHAR NOT NULL ,ACTIVE BOOL NOT NULL DEFAULT TRUE ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('IBM' , 'contact@ibm.com' ), ('Microsoft', 'contact@microsoft.com'), ('Intel' , 'contact@intel.com' ); INSERT INTO TEST_CUSTOMER (NAME, EMAIL) VALUES ('Microsoft', 'hotline@microsoft.com') ON CONFLICT ON CONSTRAINT TEST_CUSTOMER_NAME_KEY DO NOTHING; |
■ ROW_NUMBER 함수를 사용해 행 번호를 표시하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 |
SELECT (ROW_NUMBER() OVER()) AS ROWNUM, SUBJECT FROM PUBLIC.LIBRARY_DATA LIMIT 10; |
■ COALESCE 함수를 사용해 특정 값이 NULL인 경우 지정 값을 반환하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 |
SELECT COALESCE(DESCRIPTION, '(Empty)') FROM PUBLIC.CUSTOMER; |
■ GROUP BY문 사용시 소계/비율/총계를 구하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
SELECT ISNULL(SalesGroup, 'TOTAL') AS [판매 그룹] ,SUM(SalesAmount) AS [소계] ,SUM(SalesAmount) * 100 * 2 / SUM(SUM(SalesAmount)) OVER() AS [비율] ,SUM(SUM(SalesAmount)) OVER() AS [총계] FROM ( SELECT 10 AS SalesAmount, '영업1팀' AS SalesGroup UNION ALL SELECT 10 AS SalesAmount, '영업1팀' AS SalesGroup UNION ALL SELECT 60 AS SalesAmount, '영업2팀' AS SalesGroup UNION ALL SELECT 40 AS SalesAmount, '영업2팀' AS SalesGroup UNION ALL SELECT 40 AS SalesAmount, '영업3팀' AS SalesGroup UNION ALL SELECT 25 AS SalesAmount, '영업3팀' AS SalesGroup UNION ALL SELECT 15 AS SalesAmount, '영업3팀' AS SalesGroup ) A GROUP BY SalesGroup WITH ROLLUP; |
■ GROUP BY문 사용시 소계/비율/총계를 구하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
SELECT SalesGroup AS [판매 그룹] ,SUM(SalesAmount) AS [소계] ,SUM(SalesAmount) * 100 / SUM(SUM(SalesAmount)) OVER() AS [비율] ,SUM(SUM(SalesAmount)) OVER() AS [총계] FROM ( SELECT 10 AS SalesAmount, '영업1팀' AS SalesGroup UNION ALL SELECT 10 AS SalesAmount, '영업1팀' AS SalesGroup UNION ALL SELECT 60 AS SalesAmount, '영업2팀' AS SalesGroup UNION ALL SELECT 40 AS SalesAmount, '영업2팀' AS SalesGroup UNION ALL SELECT 40 AS SalesAmount, '영업3팀' AS SalesGroup UNION ALL SELECT 25 AS SalesAmount, '영업3팀' AS SalesGroup UNION ALL SELECT 15 AS SalesAmount, '영업3팀' AS SalesGroup ) A GROUP BY SalesGroup; |
■ 데이터 디렉토리를 변경하는 방법을 보여준다. 1. [SQL Shell (psql)] 프로그램을 실행한다. 2. 아래와 같이 접속한다. ▶ 실행 명령
1 2 3 4 5 6 7 8 9 10 11 |
Server [localhost]: Database [postgres]: Port [5432]: Username [postgres]: postgres 사용자의 암호: psql (11.10) 도움말을 보려면 "help"를 입력하십시오. postgres=# |
3. show
■ sqllocaldb info 명령을 사용해 SQL Server LocalDB 정보를 조회하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. [명령 프롬프트]에서 아래 명령을 실행한다.
■ 해당 월 달력을 조회하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
SELECT CASE WHEN (LEVEL * 7 - 6 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 6 - WEEK) ELSE '' END AS 일 ,CASE WHEN (LEVEL * 7 - 5 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 5 - WEEK) ELSE '' END AS 월 ,CASE WHEN (LEVEL * 7 - 4 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 4 - WEEK) ELSE '' END AS 화 ,CASE WHEN (LEVEL * 7 - 3 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 3 - WEEK) ELSE '' END AS 수 ,CASE WHEN (LEVEL * 7 - 2 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 2 - WEEK) ELSE '' END AS 목 ,CASE WHEN (LEVEL * 7 - 1 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 1 - WEEK) ELSE '' END AS 금 ,CASE WHEN (LEVEL * 7 - 0 - WEEK) BETWEEN 1 AND LAST THEN TO_CHAR(LEVEL * 7 - 0 - WEEK) ELSE '' END AS 토 FROM DUAL ,(SELECT TO_CHAR(LAST_DAY(TO_DATE('202002', 'YYYYMM')), 'DD') AS LAST FROM DUAL) ,(SELECT TO_CHAR(TO_DATE('202002', 'YYYYMM'), 'D') - 1 AS WEEK FROM DUAL) CONNECT BY LEVEL <= CEIL((WEEK + LAST) / 7); |
■ INDEX 힌트를 사용해 테이블의 인덱스를 사용하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 |
SELECT /*+ INDEX(EMP EMPNO_INDEX) */ EMPNO ,ENAME FROM SCOTT.EMP WHERE DEPTNO = 10; |
※ /*+ INDEX(테이블명 인덱스명) */
■ FULL 힌트를 사용해 테이블을 FULL SCAN 하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 |
SELECT /*+ FULL(ORDERS) */ ORDER_ID ,ORDER_DATE ,ORDER_AMOUNT FROM ORDERS WHERE ORDER_DATE BETWEEN TO_CHAR('2020-01-01', 'YYYY-MM-DD') AND TO_CHAR('2020-01-31', 'YYYY-MM-DD') ORDER BY ORDER_ID; |
※ /*+ FULL(테이블명) */
■ USE_HASH 힌트를 사용해 해시 함수를 이용해 테이블 간 접근하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT /*+ USE_HASH(B) */ A.DEPARTMENT_NAME ,A.DEPARTMENT_ID ,SUM(B.SALES_AMOUNT) FROM DEPARTMENT A, SALES B WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID AND A.BUSINESS_NAME = '가전사업부' AND B.SALES_YM = '202001' GROUP BY A.DEPARTMENT_NAME ,A.DEPARTMENT_ID |
※ /*+ USE_HASH(테이블명 [테이블명 …])
■ USE_NL 힌트를 사용해 순차적인 루프에 의한 테이블 간 접근하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 |
SELECT /*+ USE_NL(B) */ A.CUSTOMER_ID ,A.CUSTOMER_NAME ,B.ORDER_DATE ,B.ORDER_NAME FROM CUSTOMER A, ORDER B WHERE A.CUSTOMER_ID = B.CUSTOMER_ID AND A.CUSTOMER_NAME = '홍길동' AND B.ORDER_DATE = '20200201' |
※ /*+ USE_NL(테이블명 [테이블명 …])
■ LEADING 힌트를 사용해 테이블 접근 순서를 설정하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 |
SELECT /*+ LEADING(B A) */ A.CUSTOMER_ID ,A.CUSTOMER_NAME ,B.ORDER_DATE ,B.ORDER_NAME FROM CUSTOMER A, ORDER B WHERE A.CUSTOMER_ID = B.CUSTOMER_ID AND A.CUSTOMER_NAME = '홍길동' AND B.ORDER_DATE = '20200201' |
※ /*+ LEADING(테이블명 [테이블명 …]) */
■ ORDERED 힌트를 사용해 FROM절의 테이블 순서대로 접근하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 6 7 8 9 10 11 |
SELECT /*+ ORDERED */ A.CUSTOMER_ID ,A.CUSTOMER_NAME ,B.ORDER_DATE ,B.ORDER_NAME FROM CUSTOMER A, ORDER B WHERE A.CUSTOMER_ID = B.CUSTOMER_ID AND A.CUSTOMER_NAME = '홍길동' AND B.ORDER_DATE = '20200201' |
■ 힌트 분류표를 보여준다. ▶ 힌트 분류표
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
──────────────────────────────── 구분 힌트 ───────────────── ────────────── Optimization Goals and Approaches ALL_ROWS 혹은 FIRST_ROWS CHOOSE RULE Acess Method Hints AND_EQUAL CLUSTER FULL HASH INDEX 혹은 NO_INDEX INDEX_ASC 혹은 INDEX_DESC INDEX_COMBINE INDEX_FFS ROWID Join Order Hints ORDERED STAR Join Operation Hints DRIVING_SITE HASH_SJ, MERGE_SJ 혹은 NL_SJ LEADING USE_HASH 혹은 USE_MERGE USE_NL Parallel Execution Hints PARALLEL 혹은 NOPARALLEL PARALLEL_INDEX PQ_DISTRIBUTE NOPARALLEL_INDEX Query Transformation Hints EXPAND_GSET_TO_UNION FACT 혹은 NOFACT MERGE NO_EXPAND NO_MERGE REWIRTE 혹은 NOREWRITE STAR_TRANSFORMATION USE_CONCAT Other Hints APPEND 혹은 NOAPPEND CACHE 혹은 NOCACHE CURSOR_SHARED_EXACT DYNAMIC_SAMPLING NESTED_TABLE_GET_REFS UNNEST 혹은 NO_UNNEST ORDERED_PREDICATES ──────────────────────────────── |
■ CREATE TABLESPACE 명령을 사용해 테이블 스페이스를 생성하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 |
CREATE TABLESPACE ARCA DATAFILE 'C:\app\king\oradata\orcl\ARCA.dbf' SIZE 500M; ---- ----------------------------------- ----- 명칭 파일 경로 파일 크기 |
■ CREATE USER 명령을 사용해 오라클 계정을 생성하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 |
CREATE USER SCOTT IDENTIFIED BY passw0rd DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; ----- -------- ----- ---- 계정명 패스워드 테이블 스페이스 테이블 스페이스 |
■ ALTER USER 명령을 사용해 계정 잠금을 해제하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 |
ALTER USER SCOTT ACCOUNT UNLOCK; ----- 계정명 |
■ GRANT 명령을 사용해 계정 권한을 부여하는 방법을 보여준다. ▶ 예제 코드 (SQL)
1 2 3 4 5 |
GRANT CONNECT, DBA, RESOURCE TO SCOTT; ---------------------- ----- 접근 권한 계정명 |