데이터베이스 SQL (기본 - 활용 3)

sungsimdangmascot·2026년 4월 20일

MySQL 전체 개념 정리


1. 데이터베이스 기본 명령어

백틱 ( ` )

  • 식별자 감쌀 때 사용한다.
  • 테이블 이름이나 컬럼 이름(식별자)를 감쌀 때 사용한다.
  • 예약어 사용시에 붙인다. - 컬럼/테이블명이 order, group, select 같은 SQL 예약어일때
  • 특수문자/공백 포함 시 - -, $ 같은 특수문자가 포함된 경우
  • 대소문자 구분할때 사용한다.

예시

SELECT `user name`, `order` FROM `member_list`;

세미콜론 ( ; )

  • 세미콜론은 하나의 SQL 문장이 끝났음을 제이터베이스에 알리는 문장 종결자이다.
  • 쿼리문이 완전히 끝났을 때 필수로 붙인다.
  • 하나의 스크립트 파이 내에서 여러 쿼리를 연속으로 실행할 떄 뭐릳들을 구분하기 위해 사용한다.
SELECT * FROM users;
UPDATE products SET price = 1000;

쉼표 (,)

  • 여러개의 컬럼이나 값을 나열할 떄 사용한다.
  • SELECT 절에서 컬럼을 나열할 때 - 조회하고 싶은 컬럼이 여러 개 일때, 컬럼명과 컬럼명 사이에 쉽표를 붙인다.

예시 ``SELECT column1, column2, column3 FROM table_name;

  • 쉼표를 앞에 붙일 때 - 주석 처리나 컬럼 추가 삭제가 잦을 떄 유용하여 분석가들이 선호하는 방식이다.
SELECT
    col1
  , col2
  , col3
FROM table;

데이터베이스 목록 보기

SHOW DATABASES;

현재 MySQL 서버에 존재하는 모든 데이터베이스 목록을 출력한다.


데이터베이스 생성

CREATE DATABASE `site1`;

site1이라는 이름의 새 데이터베이스를 생성한다.


데이터베이스 선택

USE site1;

이후 실행되는 쿼리들이 site1 데이터베이스를 기준으로 동작하도록 선택한다.


테이블 목록 보기

SHOW TABLES;

현재 선택된 데이터베이스 안에 존재하는 테이블 목록을 출력한다.

⚠️ 반드시 USE 데이터베이스명으로 데이터베이스를 선택한 후에 사용해야 한다.


테이블 만들기

CREATE TABLE article(
    title CHAR(100),
    `body` CHAR(100)
);

article이라는 테이블을 생성한다. titlebody 두 개의 컬럼을 가지며, 각각 최대 100자의 문자를 저장할 수 있다.

body는 MySQL 예약어이므로 백틱(`)으로 감싸서 사용한다.


2. 데이터 삽입 (INSERT)

INSERT INTO article
SET title = '제목1',
`body` = '내용1';

INSERT INTO article
SET title = '제목2',
`body` = '내용2';

article 테이블에 데이터를 한 행씩 삽입한다.


3. 데이터 조회 (SELECT)

전체 조회

SELECT *
FROM article;

article 테이블의 모든 컬럼, 모든 행을 조회한다. *는 "전체"를 의미한다.


특정 컬럼만 조회

-- title만 조회
SELECT title
FROM article;

-- body만 조회
SELECT `body`
FROM article;

-- title, body 순서로 조회
SELECT title, `body`
FROM article;

-- body, title 순서로 조회
SELECT `body`, title
FROM article;

SELECT 뒤에 원하는 컬럼 이름을 쓰면 그 컬럼만 조회되며, 작성한 순서대로 결과가 출력된다.


SELECT 기본 문법 구조

SELECT 필드이름
FROM 테이블이름
WHERE 조건
  • SELECT : 조회할 컬럼 지정
  • FROM : 어떤 테이블에서 가져올지 지정
  • WHERE : 조회할 조건 지정

4. 정렬 (ORDER BY)

특정 컬럼을 기준으로 행을 정렬한다.

ORDER BY 컬럼 ASC / DESC
  • ASC : 오름차순 (작은 값 → 큰 값)
  • DESC : 내림차순 (큰 값 → 작은 값)

예제 — Products 테이블에서 가격(Price)으로 오름차순, 제품번호(ProductId)로 내림차순 정렬:

SELECT *
FROM Products
ORDER BY Price ASC, ProductID DESC;

컬럼을 여러 개 지정하면 앞에 쓴 컬럼 기준으로 먼저 정렬하고, 값이 같을 경우 그 다음 컬럼으로 정렬한다.


5. 별명 (AS / ALIAS)

특정 컬럼에 새로운 이름을 붙여서 결과에 표시한다. 주로 연산이나 함수로 만들어진 새 컬럼에 붙인다.

컬럼 AS 별명

예제 — ProductId, SupplierId, CategoryId를 모두 더한 값을 NewId라는 컬럼으로 만들기:

SELECT ProductId, SupplierId, CategoryId,
       ProductId + SupplierId + CategoryId AS NewId
FROM Products;

6. 사칙연산

+, *, /, - 연산자를 사용한다.

규칙:

  • 숫자 + 숫자 → 산술 연산
  • 문자 + 숫자 → 문자는 0으로 취급
  • 컬럼1 + 컬럼2 → 해당 컬럼의 모든 행에 대해 연산 수행
SELECT 10 + 20;   -- 30
SELECT 10 * 20;   -- 200
SELECT 10 / 20;   -- 0.5
SELECT 10 - 20;   -- -10

7. 비교 연산

>, <, =, != 등을 사용하며, 결과는 1(참, TRUE) 또는 0(거짓, FALSE) 로 반환된다.

SELECT 10 = 20;   -- 0 (거짓)
SELECT 10 != 20;  -- 1 (참)
SELECT 10 > 20;   -- 0
SELECT 10 < 20;   -- 1
SELECT 10 >= 20;  -- 0
SELECT 10 <= 20;  -- 1

8. 논리 연산 (AND, OR)

조건이 여러 개일 때 사용한다.

  • AND : 모든 조건을 만족해야 참
  • OR : 하나라도 만족하면 참

AND 예제 — CustomerId가 10 이상이고 20 이하인 행 조회:

SELECT *
FROM Customers
WHERE CustomerID >= 10
AND CustomerId <= 20;

OR 예제 — CustomerId가 20 이하이거나 80 이상인 행 조회:

SELECT *
FROM Customers
WHERE CustomerID <= 20
OR CustomerId >= 80;

AND + OR 혼합 예제 — CustomerId가 20 이하이거나 80 이상인 행 중에서, city가 'London'인 행만 조회:

SELECT *
FROM Customers
WHERE (CustomerID <= 20
OR CustomerId >= 80)
AND city = 'London';

⚠️ AND와 OR를 혼합할 때는 괄호()로 우선순위를 명확하게 지정해야 한다.


9. 사잇값 (BETWEEN)

컬럼 BETWEEN A AND B

컬럼 값이 A 이상, B 이하인 행만 조회한다. (A와 B 경계값 포함)

예제 — CustomerId가 10과 20 사이인 행 조회:

SELECT *
FROM Customers
WHERE CustomerID BETWEEN 10 AND 20;

10. 포함 (IN)

컬럼 IN (A, B, C ...)

컬럼 값이 괄호 안의 목록 중 하나라도 일치하는 행을 조회한다.

예제 — city가 'London', 'Berlin', 'Madrid' 중 하나인 행 조회:

SELECT *
FROM Customers
WHERE City IN ('London', 'Berlin', 'Madrid');

11. LIKE / NOT LIKE

특정 문자로 시작하는지, 끝나는지, 포함하는지 여부를 검색할 때 사용한다.
% 기호는 나머지 문자(0개 이상)를 의미한다.

패턴의미
'A%'A로 시작하는 문자열
'%A'A로 끝나는 문자열
'%A%'A를 포함하는 문자열

LIKE 예제 — LastName이 D로 시작하는 행 조회:

SELECT * FROM Employees
WHERE LastName LIKE 'D%';

NOT LIKE 예제 — LastName이 D로 시작하지 않는 행 조회:

SELECT * FROM Employees
WHERE LastName NOT LIKE 'D%';

12. CEIL, ROUND, FLOOR (소수점 처리)

함수기능
CEIL()올림
ROUND()반올림
FLOOR()버림

예제 — 1.2를 반올림:

SELECT ROUND(1.2);  -- 결과: 1

예제 — Products 테이블의 Price 컬럼 값들을 모두 반올림:

SELECT ROUND(Price) FROM Products;

13. 집계 함수 (AVG, MAX, MIN, SUM, COUNT)

함수기능
AVG(컬럼)컬럼의 모든 행의 평균값
MAX(컬럼)컬럼의 모든 행 중 최대값
MIN(컬럼)컬럼의 모든 행 중 최소값
SUM(컬럼)컬럼의 모든 행의 합계
COUNT(컬럼)컬럼의 모든 행의 개수 (NULL은 제외)

예제 — Categories 테이블에서 CategoryName 컬럼의 행 개수 구하기:

SELECT COUNT(CategoryName) FROM Categories;

14. CONCAT (문자 이어붙이기)

CONCAT(문자1, 문자2, 문자3 ...)

여러 문자열을 하나로 이어 붙인다.

예제 — 'giyeon'과 'kim' 이어붙이기:

SELECT CONCAT('giyeon', 'kim') AS name;

예제 — LastName과 FirstName을 공백을 사이에 두고 이어붙여 FullName 컬럼으로 만들기:

SELECT EmployeeId, BirthDate, Photo, Notes,
       CONCAT(LastName, ' ', FirstName) AS FullName
FROM Employees;

15. SUBSTR (문자열 자르기)

SUBSTR(대상문자, 시작위치, 자르는길이)

문자열을 지정한 위치부터 지정한 길이만큼 잘라낸다.

시작 위치는 1부터 시작한다.

예제 — 'giyeonkim'을 1번째 문자부터 6글자 자르기:

SELECT SUBSTR('giyeonkim', 1, 6) AS firstName;
-- 결과: giyeon

예제 — BirthDate에서 연도(앞 4자리)만 추출하기:

SELECT SUBSTR(BirthDate, 1, 4) AS `year`
FROM Employees;

16. REPLACE (문자 치환)

REPLACE(대상문자(컬럼), 문자열1, 문자열2)

대상 문자(컬럼)에서 문자열1을 찾아 문자열2로 바꾼다.

예제 — city 컬럼에서 'B'를 'b'로 바꾸기:

SELECT REPLACE(city, 'B', 'b') FROM Customers;

17. 날짜 함수

CURDATE() / NOW()

오늘 날짜를 반환한다.

함수반환 형식
CURDATE()연-월-일
NOW()연-월-일 시:분:초

ADDDATE() / SUBDATE()

ADDDATE(기준날짜, INTERVAL n DAY)
SUBDATE(기준날짜, INTERVAL n DAY)

기준 날짜로부터 n일만큼 더하거나(ADDDATE) 빼서(SUBDATE) 날짜를 구한다.


DATEDIFF()

DATEDIFF(날짜1, 날짜2)

날짜1과 날짜2의 차이(일수)를 구한다.

예제:

SELECT DATEDIFF('2022-03-21', '2021-03-21');
-- 결과: 365

18. DISTINCT (중복 제거)

조회 결과에서 중복되는 행을 제거한다.

예제 — Suppliers 테이블에서 Country를 중복 제거하여 조회:

SELECT DISTINCT Country
FROM Suppliers;

19. IFNULL

컬럼 값이 NULL일 경우 대체 값을 지정할 수 있다.

IFNULL(컬럼, 대체값)

컬럼 값이 NULL이면 대체값을 반환하고, NULL이 아니면 원래 값을 반환한다.


20. WHERE 절 조건 여러 개 명시

WHERE 절에는 조건을 여러 개 쓸 수 있으며, ANDOR 연산자를 이용해 조건들을 조합한다.

SELECT *
FROM 테이블
WHERE 조건1
AND 조건2
OR 조건3;

전체 요약 정리

분류주요 키워드
DB/테이블 관리SHOW, CREATE, USE
데이터 삽입INSERT INTO ... SET
데이터 조회SELECT ... FROM ... WHERE
정렬ORDER BY ... ASC/DESC
별명AS
사칙연산+, -, *, /
비교/논리=, !=, >, <, AND, OR
범위/포함BETWEEN, IN
문자 검색LIKE, NOT LIKE, %
소수점CEIL, ROUND, FLOOR
집계AVG, MAX, MIN, SUM, COUNT
문자열 함수CONCAT, SUBSTR, REPLACE
날짜 함수CURDATE, NOW, ADDDATE, SUBDATE, DATEDIFF
중복 제거DISTINCT
NULL 처리IFNULL
profile
성심당마스코트

0개의 댓글