[SQL] PostgreSQL -> MySQL

ieed0205·2021년 3월 4일
0

SQL

목록 보기
8/9
post-thumbnail

PostgreSQL -> MySQL


기존에 개발된 SQL 코드는 PostgreSQL 기반으로 만들어졌지만,
새로운 프로젝트에서는 MySQL을 요구하였다.
그래서 해당 문법들의 차이와 MySQL에 대한 함수를 익힐 필요가 생겨 메모하였다.

♐ MySQL

특정 함수

✔ IF 함수

PostgreSQL의 CASE WHEN 대신에 사용하면 매우 효율적일 것이다.

-- MySQL
SELECT IF( 5-3 > 0, 'TRUE', 'FALSE' );

-- PostgreSQL
SELECT CASE WHEN 5-3 > 0 THEN 'TRUE' ELSE 'FALSE' END;

✔ IFNULL 함수

NULL 대신 다른 문구를 리턴해줄 수 함수이다.
PostgreSQL의 COALESCE 보다 직관적인 명칭의 함수이다.

-- MySQL
SELECT IFNULL( NULL, 'IS NULL');

-- PostgreSQL
SELECT COALESCE( NULL, 'IS NULL');

✔ 그밖의 함수

IFNULL( ) : 칼럼이나 표현식 값이 NULL인지 비교하고, NULL이면 다른 값으로 대체하는 용도로 사용된다. NULL(null, 1) #1
ISNULL( ) : 인자를 전달한 표현식이나 칼럼의 값이 NULL이면 1, 아니면 0을 반환한다
SYSDATE( ) : 함수가 호출될 때마다 그 시각을 반환한다 → 그때그때 다른 값 반환
NOW( ) : 쿼리가 실행되는 시점에 실행되고 값을 할당받아 그 값을 SQL 문장의 모든 부분에서 사용하게 한다
DATE_FORMAT( ) : DATETIME 타입의 칼럼이나 값을 원하는 형태의 문자열로 변환
DATE_ADD(NOW( ), INTERVAL 1 DAY) : 지금 시간에서 하루를 더한다. 1대신 -1을 넣으면 하루를 뺀다.
UNIX_TIMESTAMP( ) : '1970-01-01 00:00:00'으로부터 경과된 초의 수를 반환
FROM_UNIXTIME( ) : 인자로 전달한 타임스탬프 값을 DATETIME으로 변환
RPAD( ) LPAD( ) : 문자열의 좌측 또는 우측에 문자를 덧붙여 지정된 길이의 문자열로 만든다
RTRIM( ) LTRIM( ) : 문자열의 우측 또는 좌측에 연속된 공백 문자를 제거하는 함수
TRIM( ) : RTRIM( )과 LTRIM( )을 동시에 수행
CONCAT( ) : 여러 개의 문자열을 하나의 문자열로 변환하는 함수
GROUP_CONCAT( ) : 값들을 먼저 정렬한 후 연결하거나 각 값의 구분자 설정, 중복제거 연결 등을 할 수 있는 함수
CASE WHEN THEN END : if else 느낌, WHEN column < value 처럼 조건도 넣을 수 있다
CAST( ) : 타입을 변환할 수 있는 함수
CONVERT( ) : CAST( )를 포함하며, 문자열의 문자집합(utf8)을 변환할 수 있다
HEX( ) : 이진값을 사람이 읽을 수 있는 16 진수 문자열로 변환한다
UNHEX( ) : 16진수의 문자열을 이진값으로 변환한다
SHA( ) : SHA-1 암호화 알고리즘을 사용하여 160비트의 해시 값을 반환한다
MD5( ) : Message Digest 알고리즘을 사용해 128비트의 값을 반환한다
SLEEP( ) : 말 그대로 sleep ^^;
BENCHMARK( ) : 간단한 함수 성능 테스트로 유용한 함수
INET_ATON( ) : 문자열로 구성된 IP 주소를 정수형으로 변환
INET_NTOA( ) : 정수를 문자열 IP 주소로 변환
PASSWORD( ), OLD_PASSWORD( ) : 쓰지마라
COUNT( ) : count(*) 표기나 count(1)이나 다를게 없다. 혹시 column을 count안에 넣었는데 NULL이면 그 값을 제외하고 counting하니 주의해야 한다
profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글