데이터베이스구조_0331-내장함수

allzeroyou·2022년 3월 31일
0

데이터베이스

목록 보기
9/25

내장 함수

정의된 함수, 사용자가 임의로 정의한 함수

입력하는 조건: f라는 함수(정수만 받아들임 or 문자열만 받아들임)
상수, 속성 값이 들어감.

<단일행 함수>

단일행 함수는 값이 딱 하나 떨어진다는 말이다.

  • 숫자 함수

  • 문자 함수(문자, 숫자 반환)

  • 날짜, 시간 함수

  • 변환 함수

  • 정보 함수

  • NULL 관련 함수

  • 집계 함수

  • 윈도우 함수(분석 함수)

MYSQL에서는 SELECT FROM 중 FROM은 선택적으로 넣으면 된다.

문자 함수

  • LENGTH: 글자의 수를 세어주는 함수
    영어는 1byte, 한글은 3byte임.
    char_length: 문자의 수
    length: byte로 변환한 바이트 수

  • SUBSTR: 지정한 길이만큼의 문자열을 반환하는 함수

날짜/시간 함수

  • STR_TO_DATE(string, format)
    반환형: DATA
    설명: 문자열(string)데이터를 날짜형(date)로 반환

  • DATE_FORMAT(date, format)
    반환형: STRING
    설명: 날짜형(date) 데이터를 문자열(VARCHAR)로 반환

  • ADDDATE(date, interval)
    반환형: DATE
    설명: DATE 형의 날짜에서 INTERVAL 지정한 시간만큼 더함

...등등

format의 주요 지정자

%w: 요일 순서(0~6, Sunday = 0)
%W: 요일(Sunday ~ Saturday)
...등등

질의
마당서점은 주문일로부터 10일 후 매출을 확정한다. 각 주문의 확정일자를 구하시오.


order 테이블의 orderdate는 데이터 형식이 date임

그러나 이렇게 string으로 쿼리를 날려도 괜찮을까?
괜찮다!
mysql에서 date같은 건 처리해주기 때문이다.
그러나 이렇게 하는 건 좋지 않기에, 문자형으로 저장된 날짜를 날짜형으로 변환하는 함수를 이용하자.


이렇게 쿼리문을 날렸는데, 아무런 결과값이 반환이 안되어서 예제 쿼리문과 비교 해보니..


format의 지정자 중 m과 M이 따로 배정되어있기 때문에 대문자를 쓴 위의 경우는 결과가 안나온 것 같다.
%m의 경우는 월 순서를(01~12)
%M의 경우는 월 이름(January ~ December)을 의미한다.

  • SYSDATE: MySQL의 현재날짜와 시간을 반환하는 함수
    sleep(3)의 경우 3초후 시행하라는 뜻

NULL 값 처리

NULL 값에 대한 연산과 집계 함수

  1. mybook 테이블을 만들자.

    파란색 동그라미는 테이블을 추가하는 아이콘
  1. 테이블명을 적은 후 column name에 bookid와 price를 적는다. datatype에는 int형을 적자.
    그럼 자동으로 bookint가 pk, nn 설정이 되는데 그대로 하고 Apply를 누르자.
  1. schemas 에 만들어진 table 명을 확인하자.
    table 명에 마우스를 갖다대면 3개의 아이콘이 보이는데 맨 오른쪽 표 아이콘을 클릭하자

  2. 아래 'Result Grid'에 직접 값을 입력해 표를 채우자.
    이때 bookid가 3인 것은 null이므로 직접 NULL이라고 입력하지 않고, 그냥 값을 비워둔다.

  3. 마찬가지로 Apply를 누르게 되면 이러한 쿼리문이 생길 거라는 작업 창이 뜨게 되고 Apply를 눌러 적용시키자.

  1. 위에서 3개 뽑는 거를 교재에서는 변수를 통해 실행을 시켰는데, 이렇게 하는 건 적절치 않은 예제라고 하셨다.
  2. 이처럼 limit로 하는 것이 더 적절하다.
    만약 orderdate에서 최근 3건을 보여줘라는 질의가 있을 때는 desc(내림차순)으로 3건을 보여주도록 쿼리문을 작성하면 된다.
profile
모든 건 zero 부터, 차근차근 헛둘헛둘

0개의 댓글