mysql 버전 확인

1
2
SELECT
version()

mysql 현재시간 구하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

-- 현재시간 구하기
SELECT
curtime()
-- 07:35:51


-- 시간 값만 가져오기 ; %H ; 00~23
SELECT
date_format(curtime(), '%H')
-- 07


-- 앞에 0 패딩 없애기 1 ; 숫자를 더해서 캐스팅
SELECT
date_format(curtime(), '%H') + 0
-- 7


-- 앞에 0 패딩 없애기 2 ; k로 가져오면 0~23
SELECT
date_format(curtime(), '%k')
-- 7
  • 현재 시간을 얻는 법

참고

insert, update시 자동갱신 TIMESTAMP

1
2
3
4
5
6
7
8
9
CREATE TABLE LOG
(
`idx` INT NOT NULL AUTO_INCREMENT,
`ip` VARCHAR(45) NOT NULL,
`method` VARCHAR(45) NOT NULL,
`url` VARCHAR(45) NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (idx)
);
  • CURRENT_TIMESTAMP은 현재 시각을 의미한다
  • DEFAULT CURRENT_TIMESTAMP ; insert 시 자동으로 현재 시각이 들어간다
  • ON UPDATE CURRENT_TIMESTAMP ; update 시 자동으로 현재 시각으로 갱신된다

이미 만든 칼럼에 적용하기

1
2
3
ALTER TABLE LOG
MODIFY
`date` datetime DEFAULT CURRENT_TIMESTAMP

참고

connection vs connection pool

  • connection pool를 써보자

Connection pool

  • 기존 connection은 데이터베이스에 동시 접속 허용량을 초과하는 연결을 할 경우 에러 발생
  • connection pool을 사용하면 대기상태가 되었다가 수행됨
  • pool 에 여러 미리 생성되어 있는 connection을 가져가 쓴다
  • connection이 미리 생성되어있기 때문에 생성시간 소모되지 않음
  • 따라서 속도 빨라짐. 쉽게 다운되지 않음

참고

게시판 페이지네이션 SQL

sql
1
2
3
4
5
6
const page = 1;

const query = `SELECT * FROM notice WHERE use_flag='Y' ORDER BY idx DESC LIMIT ?,?`;
const queryArgs = [10 * (page - 1), 10];

return client.query(query, queryArgs);
  • notice 테이블에서 page값에 따라 게시글 10개를 가져오는 쿼리이다
  • limit 을 이용해서 구현하였다

SELECT * FROM notice LIMIT 0,10
// 0번째부터 10개를 가져온다는 의미이다

SELECT * FROM notice LIMIT 20,10
// 20번째부터 10개를 가져온다는 의미이다

참고