ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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')
     =>    1

    FIELD()
    - FIELD(pattern, str1 ,str2,...)
    - 목록에서 문자열의 인덱스 위치를 반환한다.

    FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo')
     =>    2

    FIND_IN_SET()
    - FIND_IN_SET(pattern, strlist)
    - 문자열 집합에서 문자열의 위치를 반환한다.
    - ' ' 안에 다 넣음. 띄어쓰기 주의

    FIND_IN_SET ( 'b' , 'a,b,c,d' )
     =>    2

    INSTR()
    - INSTR(str, substr)
    - 문자열 str 에서 substring substr 이 처음 나타나는 위치를 반환한다 .
    - 인수 순서를 제외하면 locate() 와 동일하다.
    - 인수가 null이면 null을 반환한다.

    INSTR ( 'foobarbar' ,  'bar' );
     =>    4

    LOCATE()
    - LOCATE(substr,str)
    - string 에서 부분 문자열이 처음 나타나는 위치를 반환한다.
    - 인수 순서를 제외하면 INSTR () 와 동일하다.
    - 인수가 null이면 null을 반환한다.


    LOCATE ( 'bar' ,  'foobarbar' );
     =>    4

    SUBSTRING()
    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
Designed by Tistory.