sysdate()와 now()는 현재 시간, 날짜를 가져올 수 있는 편리한 함수입니다.

 

그런데 차이를 아시나요??

 

sysdate()는 문구가 나올 때 마나 조회를 해서 가지고 오는 것이고

now()는 쿼리가 실행했을 때 시간을 가지고 옵니다.

 

예를 들어 설명을 드리겠습니다.

 

pg_sleep()을 사용해서 함수의 차이를 보여 드리겠습니다.

 

먼저 sysdate()입니다.

 

sysdate() 함수

 

2초의 시간 차이가 나타났습니다.

 

 

now()입니다.

 

now() 함수

 

시간 차이가 없습니다.

 

그리고 now()함수가 sysdate()보다 빠르다고 합니다.

 

대량의 시간으로 조회하는 쿼리를 작성하시는 분들은 sysdate()보다 now()를 사용해서 작성하는 쿼리가 더 많습니다.

PostgresSQL에도 MySQL처럼 sleep() 함수가 pg_sleep()로 있습니다.

 

sleep()함수는 해당 시간 만큼 프로세스의 기동을 멈추는 역할을 하는 함수입니다.

 

사용법은

 

pg_sleep(2) : 2초 delay.

 

2초 딜레이 발생

 

b.date_completed >  a.dc::date + INTERVAL '1 DAY 7:20:00'

a.dc::date 처럼 나타 나 있는 절이 코드를 보면 가끔 있을 것이다.

 

::(double colon)은 CAST/CONVERT 함수와 같은 역활을 하고 있습니다.

 

CAST/CONVERT 함수는 데이터 형식끼리 실시간으로 변환하는 함수입니다.

 

사용법은 

 

CAST(abc AS type)

abc::type

CONVERT(type, abc)

 

세가지 전부 사용가능하며 abc를 type으로 데이터 형식을 변환합니다.

'▶Devel > DB' 카테고리의 다른 글

[MySQL] sysdate() / now() 함수  (0) 2020.06.11
[PostgresSQL] sleep() 함수  (0) 2020.06.11
[PostgreSQL] 집계 함수  (0) 2020.04.06
[PostgreSQL] JOIN(INNER, OUTER, SELF)  (0) 2020.04.06
[PostgreSQL] ROWNUM - 행의 수 / LIMIT - 행 갯수 제한  (0) 2020.04.06
  • 집계 함수 : 입력이 여러개 이고 출력이 하나인 것을 말합니다.
  • count : 행의 갯수를 세는 집계 함수
1
2
select count(*)
  from A;
cs

 

 

 

 

 

 

  • avg : 행의 평균을 구하는 집계 함수 
1
2
select avg(c) *c는 상수로 이루어진 항
  from A;
cs

 

 

 

 

 

 

  • sum : 행의 총합을 구하는 집계 함수
1
2
select sum(c) *c는 상수로 이루어진 항
  from A;
cs

 

 

 

 

 

 

  • max : 행 중에 최대값을 구하는 집계 함수
1
2
select max(c) *c는 상수로 이루어진 항
  from A;
cs

 

 

 

 

 

  • min : 행 중에 최솟값을 구하는 집계 함수
1
2
select min(c) *c는 상수로 이루어진 항
  from A;
cs

 

 

 

 

 

  • 집계 함수를 사용함으로 써 WHERE문을 사용하여 조건을 걸어 행을 줄여서 계산도 가능합니다.
1
2
3
select sum(c) *c는 상수로 이루어진 항
  from A
 where c < 10;
cs

 

 

 

 

 

  • GROUP BY/HAVING절 그룹을 짝지어서 나누어 사용도 가능합니다. 
1
2
3
4
select count(c)
  from A
 order by c
having count(c) < 10;
cs
  • JOIN의 기본 형태

    • 테이블을 같이 연결하여 자료를 뽑아내는 것을 JOIN이라고 합니다.

    • 기본 형태 (c는 A의 칼럼, d는 B의 칼럼)

1
2
3
select *
  from A, B
 where c = d;
cs

 

  • INNER JOIN

    -JOIN시 칼럼앞에 지정자를 사용하여 명시해주면 오류를 줄일 수 있습니다.

    • 형태
1
2
select *
  from A INNER JOIN B ON (A.c = B.d);
cs

 

 

  • OUTER JOIN

  • LEFT OUTER JOIN은 왼쪽자료를 기준으로 오른쪽 자료가 만족하는 것이 없으면 그 값을 null로 출력합니다.

    • RIGHT OUTER JOIN은 LEFT와 반대로 오른쪽 자료를 기준으로 왼쪽 자료에 만족하는 것이 없으면 그 값을 null로 출력합니다.

    • FULL OUTER JOIN은 LEFT OUTER JOIN / RIGHT OUTER JOIN을 합쳐 놓은 조인형태를 보여준다.

1
2
select A.c, A.g, B.k
  from A (left/right/full) outer join B on (A.c = B.d);
cs
  • SELF JOIN

    • 자기 자신을 JOIN하여 사용하는 형태
1
2
3
4
select A.c, A.g, B.k
  from A A1, A A2
 where A1.g < A2.g
   and A1.h > A2.h;
cs
  • MySQL과 같이 LIMIT를 사용

      WHERE 구문 다음에 LIMIT 문구를 사용한다.

     맨 마지막에 들어가야 된다.

      item_box에서 상위 5개만 출력하기 위한 SQL 

1
2
3
select *
  from item_box
 limit 5;
cs

      

 

 

  • 해당 행에 ROWNUM 출력하기
1
2
3
select (row_number() over()) as rownum, 
       *
  from item_box
cs

 

 

 

 

  • LIMIT는 LOWNUM과 상관없이 정해진 행만큼 자른다.

     LIMIT 5일시 상위 5행만 출력된다.

'▶Devel > DB' 카테고리의 다른 글

[PostgresSQL] sleep() 함수  (0) 2020.06.11
[PostgreSQL] ::(double colon)의 의미  (0) 2020.06.11
[PostgreSQL] 집계 함수  (0) 2020.04.06
[PostgreSQL] JOIN(INNER, OUTER, SELF)  (0) 2020.04.06
[PostgreSQL] Table / Row 정보조회 SQL  (0) 2020.04.06

DB의 TABLE 목록(Table의 이름)을 출력한다.

 

 

Table의 열을 검색한다.

1
2
3
4
5
SELECT * 
  FROM INFORMATION_SCHEMA.COLUMNS 
 WHERE TABLE_CATALOG = '데이터베이스명' 
       AND TABLE_NAME = '테이블명' 
 ORDER BY ORDINAL_POSITION;
cs

 

 

Table의 기본키 값 조회

1
2
3
4
5
6
7
8
9
SELECT CC.COLUMN_NAME AS COLUMN_NAME 
  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ,INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CC 
 WHERE TC.TABLE_CATALOG = '데이터베이스명' 
   AND TC.TABLE_NAME = '테이블명' 
   AND TC.CONSTRAINT_TYPE = 'PRIMARY KEY' 
   AND TC.TABLE_CATALOG = CC.TABLE_CATALOG 
   AND TC.TABLE_SCHEMA = CC.TABLE_SCHEMA 
   AND TC.TABLE_NAME = CC.TABLE_NAME 
   AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME;
cs

 

 

 

테이블의 COMMENT(설명) 조회

1
2
3
4
5
6
SELECT PS.RELNAME    AS TABLE_NAME,
       PD.DESCRIPTION AS TABLE_COMMENT
  FROM PG_STAT_USER_TABLES PS,
       PG_DESCRIPTION      PD
 WHERE PS.RELID   = PD.OBJOID
   AND PD.OBJSUBID  = 0;
cs

 

 

 

 

 

테이블 열(ROW/항복) COMMENT(설명) 조회

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT PS.RELNAME    AS TABLE_NAME,
       PA.ATTNAME     AS COLUMN_NAME,
       PD.DESCRIPTION AS COLUMN_COMMENT
  FROM PG_STAT_ALL_TABLES PS,
       PG_DESCRIPTION     PD,
       PG_ATTRIBUTE       PA
 WHERE PS.SCHEMANAME = (SELECT SCHEMANAME
                            FROM PG_STAT_USER_TABLES
                           WHERE RELNAME = '테이블명')
   AND PS.RELNAME  = '테이블명'
   AND PS.RELID   = PD.OBJOID
   AND PD.OBJSUBID &lt;&gt; 0
   AND PD.OBJOID    = PA.ATTRELID
   AND PD.OBJSUBID  = PA.ATTNUM
 ORDER BY PS.RELNAME, PD.OBJSUBID
cs

+ Recent posts