기록방

MySQL 기본 정리 : SELECT, FROM, WHERE, ORDER BY, LIMIT 본문

CS/DataBase

MySQL 기본 정리 : SELECT, FROM, WHERE, ORDER BY, LIMIT

Soom_1n 2024. 8. 18. 23:14

1. SELECT / FROM

목적 : 데이터베이스에서 특정 컬럼의 데이터를 조회

형태 : SELECT (속성1, 속성2, ...) FROM (테이블)

SELECT column1, column2, ...
FROM table_name;
  • column1, column2, ... : 조회할 컬럼
  • table_name : 데이터를 조회할 테이블의 이름

기타 사항

  • 전체 컬럼 조회 : SELECT * FROM (테이블)
  • 반환 값 모두 표시(기본설정) : SELECT ALL column1, column2, ... FROM (테이블)
  • 선택 컬럼 중복 값 제거 : SELECT DISTINCT column1, column2, ... FROM (테이블)
  • 컬럼에 별칭 부여 가능 :  SELECT column1 as A, column2 as "B" , column3 C FROM (테이블)
  • 컬럼에 함수 사용 가능 : SELECT COUNT(column1) FROM ~

예시

-- 예시 1: employees 테이블에서 모든 컬럼 조회
SELECT * 
FROM employees;

-- 예시 2: products 테이블에서 product_name과 price 컬럼 조회
SELECT product_name, price 
FROM products;

 

2. WHERE

목적 : 조회할 데이터에 대한 조건을 지정하여 특정 행만 조회

형태 : SELECT (속성1, 속성2, ...) FROM (테이블) WHERE (조건문)

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • condition: 데이터를 필터링하는 조건을 지정합니다.

기타 사항

  • 조건문에 활용 가능한 것
    • 비교 연산자 : =, <>, >, <, >=, <=
    • 논리 연산자 : AND, OR, NOT
    • BETWEEN : 범위 내의 값 검색
    • IN : 여러 값 중 하나와 일치
    • LIKE : 문자열 패턴 매칭
    • IS NULL / IS NOT NULL : NULL 값 확인
    • EXISTS : 서브쿼리의 결과 존재 여부 확인
    • ANY / SOME : 서브쿼리의 결과 중 하나와 일치 여부 확인

예시

더보기
-- 비교 연산자 예시

-- = : department가 'Sales'인 직원 선택
SELECT * FROM employees
WHERE department = 'Sales';

-- <> 또는 != : department가 'HR'이 아닌 직원 선택
SELECT * FROM employees
WHERE department <> 'HR';

-- > : price가 100보다 큰 제품 선택
SELECT * FROM products
WHERE price > 100;

-- < : quantity가 10보다 작은 주문 선택
SELECT * FROM orders
WHERE quantity < 10;

-- >= : salary가 50,000 이상인 직원 선택
SELECT * FROM employees
WHERE salary >= 50000;

-- <= : price가 50 이하인 제품 선택
SELECT * FROM products
WHERE price <= 50;

-- 논리 연산자 예시

-- AND : department가 'Sales'이고 salary가 50,000 이상인 직원 선택
SELECT * FROM employees
WHERE department = 'Sales' AND salary > 50000;

-- OR : department가 'Sales' 또는 'Marketing'인 직원 선택
SELECT * FROM employees
WHERE department = 'Sales' OR department = 'Marketing';

-- NOT : department가 'HR'이 아닌 직원 선택
SELECT * FROM employees
WHERE NOT department = 'HR';

-- BETWEEN : price가 50 이상 150 이하인 제품 선택
SELECT * FROM products
WHERE price BETWEEN 50 AND 150;

-- IN : department가 'Sales', 'Marketing', 또는 'HR'인 직원 선택
SELECT * FROM employees
WHERE department IN ('Sales', 'Marketing', 'HR');

-- LIKE : product_name이 'A'로 시작하는 제품 선택
SELECT * FROM products
WHERE product_name LIKE 'A%';

-- IS NULL : manager_id가 NULL인 직원 선택
SELECT * FROM employees
WHERE manager_id IS NULL;

-- IS NOT NULL : manager_id가 NULL이 아닌 직원 선택
SELECT * FROM employees
WHERE manager_id IS NOT NULL;

-- EXISTS : employees 테이블의 department_id가 departments 테이블에 존재하는 경우
SELECT * FROM employees e
WHERE EXISTS (
    SELECT 1
    FROM departments d
    WHERE d.department_id = e.department_id
);

-- ANY : salary가 'Sales' 부서의 직원 중 하나가 가진 salary보다 큰 직원 선택
SELECT * FROM employees
WHERE salary > ANY (
    SELECT salary
    FROM employees
    WHERE department = 'Sales'
);

 

3. ORDER BY

목적: 조회된 데이터를 정렬. 기본적으로 오름차순으로 정렬하며, 내림차순 정렬도 가능

형태 : SELECT (속성1, 속성2, ...) FROM (테이블) [ WHERE (조건문) ] ORDER BY (속성) (정렬방식)

SELECT column1, column2, ... 
FROM table_name 
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...;
  • ASC: 오름차순 정렬 (기본값).
  • DESC: 내림차순 정렬.

기타 사항

  • column1에 컬럼 명 대신, 컬럼 순서 사용 가능 : ORDER BY 1, 2 DESC
  • column1에 컬럼 명 대신, 별칭 사용 가능 : ORDER BY A, B
  • 랜덤 정렬 가능 : ORDER BY RAND()
  • 정렬 기준
    • 문자열 : ASCII 코드 또는 문자 집합 및 정렬 규칙에 따라 정렬
    • 숫자 : 수치 값을 기준으로 정렬
    • 날짜 및 시간 : 날짜와 시간의 순서에 따라 정렬
    • NULL 값 : 기본적으로 정렬 시 마지막에 위치

예시

-- 예시 1: employees 테이블에서 salary를 내림차순으로 정렬
SELECT * 
FROM employees 
ORDER BY salary DESC;

-- 예시 2: products 테이블에서 price를 오름차순으로 정렬, 그리고 product_name으로 다시 정렬
SELECT * 
FROM products 
ORDER BY price ASC, product_name ASC;

 

4. LIMIT

목적: 조회된 결과에서 반환할 행의 수를 제한

형태 : SELECT (속성1, 속성2, ...) FROM (테이블) [ WHERE ~ ] [ ORDER BY ~ ] LIMIT (나타낼 갯수)

SELECT column1, column2, ...
FROM table_name
LIMIT number;
  • number : 반환할 행의 수를 지정

기타 사항

  • 첫 행부터 몇 개의 행을 반환 할 것인지 지정
  • 값이 큰 5개 반환 : ORDER BY length DESC LIMIT 5
  • 최소값 반환 : ORDER BY length LIMIT 1

예시

-- 예시 1: products 테이블에서 상위 5개의 가장 비싼 제품 조회
SELECT * 
FROM products 
ORDER BY price DESC 
LIMIT 5;

-- 예시 2: orders 테이블에서 가장 오래된 3개의 주문 조회
SELECT * 
FROM orders 
ORDER BY order_date ASC 
LIMIT 3;

-- 예시 3: employees 테이블에서 department가 'HR'인 직원 중 상위 5명 조회
SELECT * 
FROM employees 
WHERE department = 'HR'
ORDER BY salary DESC 
LIMIT 5;

-- 예시 4: products 테이블에서 price가 50 이상인 제품 중 상위 10개 조회
SELECT * 
FROM products 
WHERE price >= 50 
ORDER BY price DESC 
LIMIT 10;

 

요약

  • SELECT: 조회할 컬럼을 지정
  • FROM: 데이터를 조회할 테이블을 지정
  • WHERE: 특정 조건을 만족하는 데이터만 조회
  • ORDER BY: 결과를 정렬
  • LIMIT: 결과의 행 수를 제한
728x90