-
221228. DB 6. 함수, (트랜잭션)스타터스 백엔드 3기 2022. 12. 28. 17:50
하루입니다.
함수 : 주어진 언어 내부의 연산자에서 제공되지 않는 기능을 구현한다.
결과 1개를 리턴한다.
집계함수 : 여러개의 레코드를 모아서 1개의 결과를 리턴한다.
SCALAR함수 : 1개 레코드에서 1개 결과를 리턴한다.
숫자함수

1. ROUND( ) : 반올림함수


2. TRUNCATE() : 버림함수

3. MOD() : 나머지

4. MOD, case when then else end 사용한 자근 로직

5. REPLACE() : 교체

6. CONCAT() : 합치기

7. CHAR, DECIMAL, TEXT, VARCHAR

- CHAR, DECIMAL, TEXT, VARCHAR의 차이점
- DECIMAL : 실수
- CHAR : 255자까지, 부동
- TEXT : 6nnnn자까지, 유동
- VARCHAR : 255자까지, 유동
8. ASCII()

9. LENGTH(), BIT_LENGTH(), CHAR_LENGTH


- LENGTH() : BYTE 기준 (한글은 1글자당 3바이트)
- BIT_LENGTH() : BIT 기준 (1바이트당 8비트)
- CHAR_LENGTH : 글자수 기준
10. 문자 찾는 함수들
- DB의 index는 1부터 시작한다.
ELT()
- ELT(N, str1, str2, str3 ...)
- 주어진 숫자 위치에 해당하는 문자열을 반환
- 만약 index 2번째를 찾는데 없다면 NULL을 반환한다.
ELT(1, 'ej', 'Heja', 'hej', 'foo')
=> 1FIELD()
- FIELD(pattern, str1 ,str2,...)
- 목록에서 문자열의 인덱스 위치를 반환한다.
FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo')
=> 2FIND_IN_SET()
- FIND_IN_SET(pattern, strlist)
- 문자열 집합에서 문자열의 위치를 반환한다.
- ' ' 안에 다 넣음. 띄어쓰기 주의
FIND_IN_SET ( 'b' , 'a,b,c,d' )
=> 2INSTR()
- INSTR(str, substr)
- 문자열 str 에서 substring substr 이 처음 나타나는 위치를 반환한다 .
- 인수 순서를 제외하면 locate() 와 동일하다.
- 인수가 null이면 null을 반환한다.
INSTR ( 'foobarbar' , 'bar' );
=> 4LOCATE()
- LOCATE(substr,str)
- string 에서 부분 문자열이 처음 나타나는 위치를 반환한다.
- 인수 순서를 제외하면 INSTR () 와 동일하다.
- 인수가 null이면 null을 반환한다.
LOCATE ( 'bar' , 'foobarbar' );
=> 4SUBSTRING()
SUBSTR()
- SUBSTRING(str,pos)
- SUBSTRING(str,pos,len)
- 인수가 null이면 null을 반환한다.
SELECT SUBSTRING('12345 7890', 3);
SELECT SUBSTRING('12345 7890', 3, 5);
SELECT SUBSTRING('12345 7890', -3);
SELECT SUBSTRING('12345 7890', -3, 1);

11. now(), substr()

12. insert(), repeat(), ****으로 암호 지정
- 여기의 insert()는 ... insert into가 아니라 ... insert() 함수이다 ... !!!
insert()
- INSERT(str,pos,len,newstr)
- INSERT(@pw, 2, 4, '****')
- str위치에서 시작하는 하위 문자열과 문자열로 대체된 긴 문자를 사용하여 pos 문자열 len을 반환한다.repeat()
- REPEAT(str,count)
- str반복 되는 문자열로 구성된 문자열을 반환합니다


13. 대소문자 변경 : UPPER(), LOWER()

14. pad() : 없던 문자를 채운다


15. trim() : 있는 문자를 자른다
- LEADING : 시작하는 쪽의(오른쪽의) 문자를 자른다.
- TRAILING : 끝쪽의 (왼쪽의) 문자열을 자른다.
- BOTH : 양쪽의 문자열을 자른다.

15. cast, convert, format : 실수를 정수로 만들기
- CAST('[변환하려는 데이터]' AS [데이터형식])
- CONVERT([데이터형식], '[변환하려는 데이터]')


16. IFNULL, NULLIF
- IFNULL (컬럼명, 컬럼이 NULL일시 대체값)
- NULLIF(값1, 값2) IS NULL
17. IF(T/F, T, F)

18. CASE WHEN THEN ELSE END

날짜 함수
1. CURDATE(), CURRENT_DATE, CURTIME(), NOW(), SYSDATE()

2. DATE_FORMAT


3. 다양한 방법으로 2006년도 입사자 조회

4. 요일 조회
방법 1.

방법 2, 방법 3

5. 날짜 사이 계산 SUBDATE(), ADDDATE(), DATEDIFF(), PERIOD_DIFF()

트랜잭션 맛보기
- 트랜잭션이란 여러개의 작업 논리를 결합한 것이다.
- 만약 계좌이체를 한다고 하자.
- a계좌에서 b계좌로 이체한다.
- a계좌에서 출금 - b계좌로 이체하려는 순간 네트워크가 끊겨 송금이 끊겼다. 이 경우, a계좌에서 출금한 것을 되돌려야 한다(rollback). 만약 입금이 정상적으로 이루어진다면 2개 sql에 모두 반영한다(commit).
- all or nothing!
- tcl : transaction control language
- commit / rollback


'스타터스 백엔드 3기' 카테고리의 다른 글
221229. DB 8. JDBC (0) 2022.12.29 221229. DB 7. 트랜잭션 (0) 2022.12.29 221227. DB 5. 조인 (0) 2022.12.27 221226. DB 4. 서브쿼리 (0) 2022.12.26 221226. DB 3. DML, 제약조건, ALTER TABLE (0) 2022.12.26