본문 바로가기
데이터/Database

[데이터베이스] MySQL 기초 문법 정리 (정렬과 연산)

by dwoi 2023. 4. 19.

MySQL로 데이터베이스를 관리하는 기본적인 개념에 대해서 살펴보자.

 

목차

     


    데이터베이스(Database)


    1. 정렬 order by

    1.1. Order by로 검색 결과 정렬하기

    select 컬럼 from 테이블 where 조건식 order 컬럼;
    •  
    • order by는 기본적으로 오름 차순으로 정렬하지만 desc를 붙이면 내림 차순으로 정렬
    •  오름 차순을 명시적으로 하기 위해서는 asc로 지정
    • desc : descendant
    •  asc : ascendant

    1.1.1. 대소관계

    • 수치형 데이터
      • 숫자의 크기로 대소관계 구분
    • 날짜형 데이터
      • 날짜와 시간의 크기로 대소관계 구분
    • 문자형 데이터
      • 사전식 순서의 크기로 대소관계 구

     

    ◆ Order by는 테이블에 영향을 주지 않는다.

    • 출력 레코드의 순서를 변경하는 것
    • 서버에 있는 데이터를 순서를 변환하는 게 아니라 클라이언트에게 그 결과를 반환하는 것
    • RDBMS의 컬럼과 레코드의 순서는 저장 순서로 순위가 결정

     

    1.2. 복수의 컬럼을 지정해 정렬하기

    select * from sample23 order by a,b desc;

     

    ◆ Null 값의 정렬순서

    • null은 기본적으로 대소를 비교할 수 없음
    • 따라서 order by에서 null 값이 있는 레코드는 가장 먼저 또는 가장 끝에 표시
    •  null의 대소비교는 표준 SQL에도 규정화되어 있지 않음
    •  MySQL에서는 null 값이 asc(오름차순)에서는 가장 먼저
    • desc(내림차순)에서는 null값이 가장 나중에 표시

    1.3. 결과 레코드 제한하기 limit

    select 컬럼 from sample232 where 조건식 limit 레코드 수 [offset 시작레코드];
    • limit는 SQL표준이 아님
    • limit 구는 select 명령의 마지막에 지정하는 것으로 where 구나 order by 구의 뒤에 지정
    • limit 다음에서는 최대 출력 레코드 수를 지정

     

    1.3.1. Offset 지정

    한 페이지에 limit을 설정하여 최대 출력 레코드를 성정하고 offset으로 출력 시작 레코드를 결정할 수 음

    첫 레코드가 0부터 시작하는 거 주

     


    2. SQL를 이용한 연산

    2.1. 수치연산

    연산자 연산 비고
    + 덧셈 1 + 2 > 3  
    - 뺄셈 1 - 2 > -1  
    * 곱셈 1*2 > 2  
    / 나눗셈 1/2 > 0.5  
    %,mod 나머지 1 % 2 > 1 mod(1,2)
    div 1 div 2 > 0  

    로 덧셈 뺄셈 곱셈 나눗셈 나머지 몫을 구할 수 있음

    ◆ 우선 순위

    1순위 : * / mod, dev

    2순위: + -

    2.1.1. Select  구로 연산하기

    ◆ 컬럼명의 별명(Alias)

    • select 구에는 컬럼명은 임의로 변경가능
    • select 식 as 별명 from 테이블;
    • 여기서 as 키워드는 생략 가능하지만 사용을 권장

    ◆ where 구 내에서도 연산해서 사용 가능 하지만 별명 사용은 에러 발생할 수 있으니 유의

    ◆ Null 값의 연산 : 뭘하던 Null

    ◆ Order by 구에서 연산도 가능

     

    ◆ 함수

    • 연산자 외에 함수를 사용해 연산 가능
    • 함수(인수1, 인수2, …)
    • 연사자는 연산기호(+, -, *, / 등)에 따라 연산 방법이 결정되지만 함수는 함수명에 따라 연산 방법이 결정
    • 함수는 연산대상을 인수(Parameter)로 전달
    • 함수는 인수를 이용하여 연산 후 반환 값을 전달

    2.1.2. Round 함수

    • 실수의 정수와 소수부분에 대하여 반올림 처리

    2.2. 문자열 함수

    2.2.2. 문자열 결합

    MySQL : concat() 함

     

    2.2.3. Substring 함수 - 문자열 일부 추출

    • substring은 문자열에서 일부를 추출하여 문자를 반환하는 함수
    • 날짜가 문자형으로 되어 있는 경우 년월일 등을 substring을 이용하여 추출
    • substring(문자열, 시작 위치, 길이)

     

    2.2.4. Trim 함수 - 스페이스 제거 함수

    •  trim 함수는 문자열의 앞뒤의 스페이스를 제거하는 함수
    • char 형은 고정길이 문자열인데 문자이외의 빈 공간은 스페이스로 채워짐

     

    2.2.5. Char_length 함수 - 문자열의 길이를 반환하는 함수

    •  octet_length 함수는 문자열의 바이트 수를 반환

     

    2.3. 날짜 관련 함수

    • 날짜와 시간을 저장하는 방법은 DBMS 제품에 따라 다양
    • 날짜를 모두 문자형으로 처리하는 경우도 있고, MySQL는 날짜는 data형, 시간은 time형, 날짜와 시간은 datatime형으로 세분화되어 있음

    날짜와 시간 데이터는 사칙연산이 가능

     

    • current_timestamp
    • current_date, current_time

     

     

    2.4. Case 문으로 데이터 변환하기

    •  case 문은 조건에 따라 데이터를 변환
    • 함수를 이용하여 데이터를 특정 형태로 변환이 가능하지만 임의 조건에 따라 데이터를 변한하기 위해서는 case문이 적정

     

    case
    	when 조건식1 then 식1
        when 조건식2 then 식2
        else 식3
    end

     

    사용 시 주의점

    • case 문은 select 구만이 아니라 where 구, order by 구에서 사용
    • case 문에서 else를 생략하면 else null로 처리
    • 따라서 되도록 else 사용을 권장
    • when 에서 null 식에 주의

     


    마무리

    SQL로 정렬을 어떻게 하는지 연산은 어떤 방식으로 이루어지는지

    그 외 여러 함수들에 대해 알아봄

    case문은 수치데이터를 decode encode하는 방법으로 활용 가능하다는 걸 잊지 말자!


     

     

    댓글