◈ mysql 내장함수
1. null값 비교 및 대체 (ifnull, isnull)
2. 현재시각 조회(now, sysdate), sleep(2) <- 2초간 대기하는 함수
now는 sysdate와달리 호출될때마다 같은값을 항당받아서 사용되기때문에 실행 위치나 시점에 관계없이 항상 같은값 보장.
- date_format(날짜 문자형으로 변환 (%y -%m-%d), str_to_date(%y -%m-%d %h:%i:%s)
- 날짜와 시간의 연산(date_add, date_sub)
ex) date_add(now(), interval -1 day) (year, month, day, hour, minute, second, quarter, week)
- 타임스탬프연산(unix_timestamp, from_unixtime)
- unix_timestamp : '1970-01-01 00:00:00'으로부터 경과된 초의수 반환 함수
- from_unixtime : 인자로 전달한 타임스탬프값을 datetime타입으로 변환하는 함수
◈ 문자열처리(rpad, lpad / rtrim, ltrim, trim)
1. 문자열결합(concat)
- concat (문자 , cast(숫자 등)) --타입전환해서 붙이는편이 안전하다.
- concat_ws() : 첫번째 인자를 구분자로 사용할 문자로 인식하고 두번째 인자부턴는 연결할 문자로 인식한다.
ex) concat_ws(',', 'goergi','christian') as name; -- goergi,christian
2. group by 문자열결합(group_concat)
- 값들을 먼저 정렬한 후 연결하거나 각 값의 구분자 설정도가능하며 여러값 중 중복을 제거하고 연결하는것도 가능하다.
- group by concat의 결과가 지정 버퍼크기를 초과하지않도록 주의해야함
3. case when (case (when then) end)
◈ 타입의변환(cast, convert)
- cast('text' as 전환할인자명)
- convert('abc' using 'utf-8') -- 타입을 변환하는 용도와 문자열의 문자집할을 변환하는 두가지용도로 사용
◈ 이진값과 16진수(hex string) 문자열변환(hex, unhex)
- hex: 2진 -> 16진수
- unhex: 16진수 -> 2진
- 암호화 및 해시함수(md5, sha)
◈ 처리대기(sleep)
- ex> sleep(2) -- 처리대기 2초의 간격을 준다
◈ 벤치마크(bench mark)
- benchmark(반복해서 수행할 횟수, 반복해서 실행할 표현식= 반드시 스칼라값 반환하는 표현식이어야한다.)
- select expr X 10번 vs select benchmark(10,expr)
: 후자는 한번의 요청으로 expr이 실행되는것이므로 이미 할당받은 메모리 자원까지 공유되므로 전자에 비해 1/10밖에 자워소모가 되지 않는다. 사실 큰의미있는 함수는 아니며 기능비교분석용도고 사용할것을 권장한다.
- ip주소변환(inet_aton --문자열로 구성된 ip주소를 정수형으로 변환, inet_ntoa -- ip 주소를 사람이 읽을수있는 형태의 '.'으로 변환하는 함수)
◈ mysql 전용 암호화
(password --맨앞에 '*'가 붙음, old_password-- 맨앞에 '*'가 붙지않음)
◈ values()
-- insert 문장에서 저장하려고했던 컬럼의 이름으 입력
◈ count(*)
= count(primary_key_column) = count(1) 모두 같은 성능
- left join, order by 와같이 count와 무관한 작업을 하는경우 제거하는것이 성능상 좋다.
- myisam이외의 스토리지 엔진을 사용하는 테이블(inno db 등) 직접 데이터나 인덱스를 읽어야만 레코드 건수를 가져올 수 있기 때문에 큰테이블의 count(1) 은 가급적 주의해야한다.
- count(column1) 이라고 사용하면 null 이 아닌 레코드 건수만 반환하므로 쿼리작동을 확인하는것이 좋다.
◈ 주석
-- 이것은 단일행 주석
/* 이것은 블록 주석 */
= 기타 프로그래밍 언어와 유사
'SQL > Mysql' 카테고리의 다른 글
MYSQL all about Select절 (REAL MY SQL 정리) (0) | 2021.02.15 |
---|---|
MYSQL 연산자/like연산자/between연산자/in연산자 (REAL MY SQL 정리) (0) | 2021.02.14 |
MYSQL 리터럴 모음 (REAL MY SQL 정리) (0) | 2021.02.12 |
MYSQL 매뉴얼(Document)읽는 방법 (REAL MY SQL 정리) (0) | 2021.02.11 |
MYSQL 쿼리 작성 및 최적화 관련 (REAL MY SQL 정리) (1) | 2021.02.05 |