DB : MySQL | Oracle | MyBatis

MySQL 기본 (1) : SELECT 전반 기능 훑어보기 / 각종 연산자들 / 숫자와 문자열을 다루는 함수들

기매_ 2022. 9. 27. 17:59

https://youtu.be/dgpBXNa9vJc


[ Lesson 1. SELECT 전반 기능 훑어보기 ]

5. 원하는 만큼만 데이터 가져오기

LIMIT {가져올 갯수} 또는 LIMIT {건너뛸 갯수}, {가져올 갯수} 를 사용하여, 원하는 위치에서 원하는 만큼만 데이터를 가져올 수 있습니다.

SELECT * FROM Customers
LIMIT 30, 10;
SELECT
  CustomerID AS '아이디',
  CustomerName AS '고객명',
  City AS '도시',
  Country AS '국가'
FROM Customers
WHERE
  City = 'London' OR Country = 'Mexico'
ORDER BY CustomerName
LIMIT 0, 5;

[ Lesson 2. 각종 연산자들 ]

총정리

연산자                                                                                           의미

+, -, *, / 각각 더하기, 빼기, 곱하기, 나누기
%, MOD 나머지
IS 양쪽이 모두 TRUE 또는 FALSE
IS NOT 한쪽은 TRUE, 한쪽은 FALSE
AND, && 양쪽이 모두 TRUE일 때만 TRUE
OR, || 한쪽은 TRUE면 TRUE
= 양쪽 값이 같음
!=, <> 양쪽 값이 다름
>, < (왼쪽, 오른쪽) 값이 더 큼
>=, <= (왼쪽, 오른쪽) 값이 같거나 더 큼
BETWEEN {MIN} AND {MAX} 두 값 사이에 있음
NOT BETWEEN {MIN} AND {MAX} 두 값 사이가 아닌 곳에 있음
IN (...) 괄호 안의 값들 가운데 있음
NOT IN (...) 괄호 안의 값들 가운데 없음
LIKE '... % ...' 0~N개 문자를 가진 패턴
LIKE '... _ ...' _ 갯수만큼의 문자를 가진 패턴

 

❗ 문자열에 사칙연산을 가하면 0으로 인식

💡 MySQL에서는 TRUE는 1, FALSE는 0으로 저장됩니다.

❗ MySQL의 기본 사칙연산자는 대소문자 구분을 하지 않습니다.

 


[ Lesson 3. 숫자와 문자열을 다루는 함수들 ]

 

1. 숫자 관련 함수들

ROUND 반올림
CEIL 올림
FLOOR 내림
ABS 절대값
GREATEST (괄호 안에서) 가장 큰 값
LEAST (괄호 안에서) 가장 작은 값

=/ MAX, MIN : 여러 행들 중에서 최댓값과 최솟값을 구함

SELECT
  OrderDetailID, ProductID, Quantity,
  GREATEST(OrderDetailID, ProductID, Quantity),
  LEAST(OrderDetailID, ProductID, Quantity)
FROM OrderDetails;

 


💡 그룹 함수 - 조건에 따라 집계된 값을 가져옵니다.

MAX 가장 큰 값
MIN 가장 작은 값
COUNT 갯수 (NULL값 제외)
SUM 총합
AVG 평균 값

POW(A, B), POWER(A, B) A를 B만큼 제곱
SQRT 제곱근

SQRT(16) = POWER(16, 1/2) 

 

TRUNCATE(N, n) N을 소숫점 n자리까지 선택

: 반올림은 안됨

 

SELECT
  TRUNCATE(1234.5678, 1),
  TRUNCATE(1234.5678, 2),
  TRUNCATE(1234.5678, 3),
  TRUNCATE(1234.5678, -1),
  TRUNCATE(1234.5678, -2),
  TRUNCATE(1234.5678, -3);

SELECT Price FROM Products
WHERE TRUNCATE(Price, 0) = 12;

: Price가 12.xx인 것들만 뽑아냄


2. 문자열 관련 함수들

UCASE, UPPER 모두 대문자로
LCASE, LOWER 모두 소문자로

 

CONCAT(...) 괄호 안의 내용 이어붙임
CONCAT_WS(S, ...) 괄호 안의 내용 S로 이어붙임

 

SUBSTR, SUBSTRING 주어진 값에 따라 문자열 자름
LEFT 왼쪽부터 N글자
RIGHT 오른쪽부터 N글자

 

LENGTH 문자열의 바이트 길이
CHAR_LENGTH, CHARACTER_LEGNTH 문자열의 문자 길이 (우리가 일반적으로 생각하는 글자수)
TRIM 양쪽 공백 제거
LTRIM 왼쪽 공백 제거
RTRIM 오른쪽 공백 제거

 

LPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임
RPAD(S, N, P) S가 N글자가 될 때까지 P를 이어붙임

 

REPLACE(S, A, B) S중 A를 B로 변경

 

INSTR(S, s) S중 s의 첫 위치 반환, 없을 시 0

SELECT * FROM Customers
WHERE INSTR(CustomerName, ' ') BETWEEN 1 AND 6;
-- < 6으로 하면? => space가 아예 없는 것이 0이니까 없는것도 같이 출력됨 ㅠㅠ

 

CAST(A, T) A를 T 자료형으로 변환
SELECT
  '01' = '1',
  CONVERT('01', DECIMAL) = CONVERT('1', DECIMAL);