[MySQL] Alias, 함수, 집합연산

Jaehyeong Kwon·2022년 8월 5일
0

데이터베이스

목록 보기
2/10

1. 별칭

AS 명령어로 별칭을 붙일 수 있습니다.
컬럼명이 길어서 바꾸고 싶은 경우 또는 테이블명을 바꾸고 싶을 경우 사용합니다.

별칭의 이름이 ASCII가 아닌 문자열일 경우 쌍 따옴표(")를 붙여야 합니다.
SELECT *,(컬럼1 * 컬럼2) AS "금액" FROM 테이블명;

만약 조건문(whre)에서 별칭을 사용한다면 에러가 발생합니다.

  • 쿼리의 명령어 순서가 where -> select이므로 별칭이 정의되기 이전에 사용됩니다.

반면, ORDER BY 절은 SELECT 명령어 순서 상 가장 마지막에 처리되므로 별칭을 사용할 수 있습니다.

SELECT *, (column1 * column2) As foo FROM 테이블명 ORDER BY foo DESC;

테이블에 또한 별칭 이용이 가능합니다.


2. 함수

MySQL 에서 사용자가 유용하게 사용할 수 있도록 제공하는 함수가 있습니다.
사용자가 함수를 직접 만들 수도 있는데, MySQL에서 제공하는 함수에 대해 알아보겠습니다.

  1. 수학 관련
  • 반올림 : ROUND
  • 올림 : CEIL
  • 내림 : FLOOR
  • 절댓값 : ABS
  • 삼각함수 : SIN, COS
  • 제곱근 : SQRT
  • 소숫점 버림 : TRUNCATE(N,n)

SELECT *, ROUND(amount) FROM products;

  1. 집계 관련
  • 합계 : SUM
  • 개수 : COUNT
  • 최소값 : MIN
  • 최대값 : MAX
  • 평균 : AVG
  • 중복 제거 : DISTINCT
  1. 문자열 관련
  • 문자열 결합 : CONCAT
  • 문자열 일부분 추출 : SUBSTR
  • 문자열 맨 끝 좌우의 공백 제거 : TRIM
  • 문자열 길이 : CHAR_LENGTH
  1. 시간 관련
  • 시스템 시간 : CURRENT_TIMESTAMP
  • 날짜 간의 차이 : DATEDIFF

reg-date 컬럼에 현재 시간으로 "YYYY-MM-DD HH-MM-SS" 포맷의 문자열 또는 "YYYYMMDDHHMMSS.uuuuuu" 포맷의 정수로 조회하여 추가하는 예제입니다.

  • 게시글의 등록 날짜, 회원 가입 날짜 등의 값으로 입력할 때 유용합니다.

집합 연산

  1. 합집합
    UNION 명령어는 두 테이블의 합집합을 연산하는 명령어입니다.
    아래는 products, items 테이블의 합집합을 연산해서 조회하는 쿼리입니다.

(SELECT * FROM products) UNION (SELECT * FROM items);

  • 이 때 합집합을 하고자 하는 두 SELECT 쿼리의 컬럼명이 일치해야 합니다.
  • SELECT 쿼리는 가독성을 위해 bracket으로 묶었습니다.
  • UNION 연산은 중복을 제거하며 정렬을 하지만 UNION ALL 은 중복된 값을 제거하지 않으며 정렬도 하지 않습니다.
  1. 합집합 연산에서 정렬

(SELECT products_no AS no FROM products) UNION (SELECT items_no AS no FROM items) ORDER BY no;

합집합 연산 외에도 교집합, 차집합이 있지만 MySQL에서는 따로 지원하는 명령어가 없다. JOIN을 이용해야한다.

profile
나무와 같이 성장하는 사람

0개의 댓글