Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

냥냠

[SQL] MySQL 기초 - (1) 본문

SQL

[SQL] MySQL 기초 - (1)

sueeee-e 2024. 7. 22. 13:57

https://youtu.be/dgpBXNa9vJc?feature=shared

갖고 노는  MySQL 데이터베이스 강좌 - 얄코

 

https://www.yalco.kr

실습환경 및 강좌내용 사이트 


 

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

 SELECT 

 FROM

 WHERE 조건

 

- AS 로 칼럼명 변경

- LIMIT 로 원하는 만큼

- ORDER BY

: ASC = 오름차순 

: DESC = 내림차순


각종 연산자들

 

연산자                                   의미

+, -, *, / 각각 더하기, 빼기, 곱하기, 나누기
%, 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 '... _ ...' _ 갯수만큼의 문자를 가진 패턴

숫자 관련 함수들 

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

 

MAX 가장 큰 값
MIN 가장 작은 값
COUNT 갯수 (NULL값 제외)
SUM 총합
AVG 평균 값
POW(A, B), POWER(A, B) A를 B만큼 제곱
SQRT 제곱근
TRUNCATE(N, n) N을 소숫점 n자리까지 선택

문자열 관련 함수들 

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
CAST(A AS T) A를 T 자료형으로 변환
CONVERT(A, T) A를 T 자료형으로 변환

시간/날짜 관련 함수들

CURRENT_DATE, CURDATE 현재 날짜 반환
CURRENT_TIME, CURTIME 현재 시간 반환
CURRENT_TIMESTAMP, NOW 현재 시간과 날짜 반환
DATE 문자열에 따라 날짜 생성
TIME 문자열에 따라 시간 생성
YEAR 주어진 DATETIME값의 년도 반환
MONTHNAME 주어진 DATETIME값의 월(영문) 반환
MONTH 주어진 DATETIME값의 월 반환
WEEKDAY 주어진 DATETIME값의 요일값 반환(월요일: 0)
DAYNAME 주어진 DATETIME값의 요일명 반환
DAYOFMONTH, DAY 주어진 DATETIME값의 날짜(일) 반환
HOUR 주어진 DATETIME의 시 반환
MINUTE 주어진 DATETIME의 분 반환
SECOND 주어진 DATETIME의 초 반환
ADDDATE, DATE_ADD 시간/날짜 더하기
SUBDATE, DATE_SUB 시간/날짜 빼기
DATE_DIFF 두 시간/날짜 간 일수차
TIME_DIFF 두 시간/날짜 간 시간차
LAST_DAY 해당 달의 마지막 날짜
DATE_FORMAT 시간/날짜를 지정한 형식으로 반환
STR _ TO _ DATE(S, F) S를 F형식으로 해석하여 시간/날짜 생성

기타 함수들              

IF(조건, T, F) 조건이 참이라면 T, 거짓이면 F 반환
IFNULL(A, B) A가 NULL일 시 B 출력
SELECT
CASE
  WHEN -1 > 0 THEN '-1은 양수다.'
  WHEN -1 = 0 THEN '-1은 0이다.'
  ELSE '-1은 음수다.'
END;

조건에 따라 그룹으로 묶기

 

GROUP BY (조건에 따라 집계된 값을 가져옴)

SELECT 
  Country, City,
  CONCAT_WS(', ', City, Country)
FROM Customers
GROUP BY Country, City;

 

WITH ROLLUP (전체의 집계값)

SELECT
  Country, COUNT(*)
FROM Suppliers
GROUP BY Country
WITH ROLLUP;

 

HAVING (그룹화된 데이터 걸러내기)

SELECT
  COUNT(*) AS Count, OrderDate
FROM Orders
WHERE OrderDate > DATE('1996-12-31')
GROUP BY OrderDate
HAVING Count > 2;

-- WHERE 은 그룹화하기 전의 데이터, HAVING 은 그룹 후 집계

 

DISTINCT

- GROUP BY 와 달리 집계함수가 사용되지 않는다 (COUNT 같은 거)

- GROUP BY와 달리 정렬하지 않아 빠르다( ORDER BY로 수동으로 정렬해줄 수 있음)

SELECT DISTINCT CategoryID
FROM Products;
-- 위의 GROUP BY를 사용한 쿼리와 결과 비교


-- GROUP BY와 함께 사용
SELECT
  Country,
  COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country;

'SQL' 카테고리의 다른 글

리텐션 (Retention)  (0) 2025.04.11
RFM 고객 세분화 분석  (0) 2025.03.13
[SQL] 데이터베이스 기초, RDBMS vs NoSQL  (0) 2024.08.05