CS/DataBase

SQL 기본 문법과 함수 정리

M00NPANG 2025. 1. 10. 14:12

데이터베이스 관련 쿼리문

-- 모든 데이터베이스 조회
SHOW DATABASES;

-- 데이터베이스 생성
CREATE DATABASE practice IF NOT EXISTS 데이터베이스명;

-- 데이터베이스 선택
USE데이터베이스명;

-- 데이터베이스 삭제
DROP DATABASE IF EXISTS 데이터베이스명;

테이블 관련 쿼리문

-- 테이블 조회하기(데이터베이스 선택 후 조회)
USE 데이터베이스명;
SHOW TABLES;

-- 테이블 구조 확인하기
DESC 테이블명;

-- 테이블 생성하기
CREATE DATABASE 테이블명;

CREATE TABLE 테이블명 (
    컬럼1 데이터_타입 제약조건,
    컬럼2 데이터_타입 제약조건,
    ...
);

-- 테이블 삭제하기 (테이블 자체가 삭제, 복구 불가)
DROP TABLE 테이블명;


-- 테이블 데이터 삭제
# 모든 데이터 삭제(테이블 구조는 유지, 복구 불가, 데이터 골라 삭제 불가)
TRUNCATE TABLE 테이블명;

# 조건 없이 데이터 삭제(원하는 데이터만 골라 삭제 가능, 복구 가능)
DELETE FROM 테이블명;


-- 테이블 복사
# 테이블 구조와 데이터를 복사
CREATE TABLE 새테이블명 AS
SELECT * FROM 기존테이블명;

# 테이블 구조만 복사
CREATE TABLE 새테이블명
LIKE 기존테이블명;  -- MySQL

컬럼 관련 쿼리문

-- 컬럼 추가
ALTER TABLE 테이블명
ADD 컬럼명 데이터_타입;

-- 컬럼 기본값 설정
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 SET DEFAULT 기본값;

-- 컬럼 기본값 제거
ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 DROP DEFAULT;

-- 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 컬럼명;

-- 컬럼 수정
# 컬럼 이름 변경
ALTER TABLE 테이블명
RENAME COLUMN 기존컬럼명 TO 새컬럼명;

# 컬럼 데이터 타입 변경
ALTER TABLE 테이블명
MODIFY COLUMN 컬럼명 새로운_데이터_타입;

ALTER TABLE 테이블명
ALTER COLUMN 컬럼명 SET DATA TYPE 새로운_데이터_타입;

데이터 관련 쿼리문

1.  SELECT : 데이터 조회

  • SQL에서 데이터를 조회하는 기본 명령어
# 기본 형식
SELECT 컬럼명 FROM 테이블명;

# 모든 열 조회
SELECT * FROM 테이블명;

 

  • SELECT SQL 각 구문별 실행순서
더보기
  1. FROM, JOIN
  2. ON, WHERE
  3. 2차 테이블 완성
  4. GROUP BY
  5. 그룹함수
  6. 3차 테이블 완성(그룹함수의 결과가 반영된 새로운 테이블이 생성됨)
  7. HAVING
  8. 4차 테이블 완성(HAVING작업이 있을 경우에만)
  9. ORDER BY
  10. LIMIT
  11. 고객(MySQL 클라이언트, 대표적으로 Sequel Pro, SQLYog, JDBC Driver 등)에게 전달

2.  WHERE: 조건 지정

  • 조건이 참인 데이터만 조회
  • 여러 조건 지정
    • AND : 모든 조건을 만족하는 경우
    • OR : 하나의 조건만 만족하는 경우
# 기본 형식
SELECT 컬럼명
FROM 테이블명
WHERE 조건;

# 여러 조건 지정
SELECT 컬럼명
FROM 테이블명
WHERE 조건1 AND 조건2;

3. ORDER BY: 정렬

      • 데이터를 특정 컬럼 기준으로 정렬
        • ASC: 오름차순(기본값)
        • DESC: 내림차순
# 기본 형식
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ORDER BY 컬럼명 ASC/DESC;

# 다중 정렬
SELECT 컬럼명
FROM 테이블명
ORDER BY 컬럼1 ASC, 컬럼2 DESC;

4. LIMIT: 출력 행 제한

  • 조회할 데이터의 행 개수를 제한
# 기본 형식
SELECT 컬럼명
FROM 테이블명
LIMIT 개수;

# 예시
SELECT *
FROM employees
LIMIT 5; -- 상위 5개 행 출력

5. DISTINCT: 중복 제거

  • 중복된 데이터를 제거하고 유일한 값만 반환
SELECT DISTINCT 컬럼명
FROM 테이블명;

6. AS: 별칭 지정

  • 별칭을 사용해 컬럼이나 테이블명을 이해하기 쉽게 변경
SELECT 컬럼명 AS 별칭
FROM 테이블명;

# 예시
SELECT salary * 12 AS annual_salary
FROM employees;

7. IN: 특정 값 집합

  • 주어진 값 집합에 포함된 데이터를 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IN (값1, 값2, ...);

 

  • NOT IN: 집합 제외
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 NOT IN (값1, 값2, ...);

8. BETWEEN: 범위 조건

  • 특정 값의 범위를 지정하여 데이터를 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 BETWEEN 최소값 AND 최대값;

9. LIKE: 검색

  • 문자열 검색에 사용합니다.
    • %: 0개 이상의 모든 문자
    • _: 단일 문자
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 LIKE '%문자%';
  • 예시
    • %홍길%: "홍길"이 포함된 모든 데이터
    • 홍길%: "홍길"로 시작하는 데이터

10. IS NULL: NULL 값 조회

  • NULL 값을 조회하거나 제외
# NULL 값 조회
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NULL;

# NULL 값 제외
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 IS NOT NULL;

 

  • NULL값 조회 후 대체 값 반환
-- NULL 대체 1 : 가장 범용적인 함수
SELECT COALESCE(컬럼명, '기본값') AS 별칭
FROM 테이블명;


-- NULL 대체 2 (MySQL)
SELECT ISNULL(컬럼명, '기본값') AS 별칭
FROM 테이블명;


-- NULL 대체 3 (MySQL)
SELECT IFNULL(컬럼명, '기본값') AS 별칭
FROM 테이블명;

함수

집계 함수 (Aggregate Functions)

-- 합계
SELECT SUM(컬럼명) AS 총합
FROM 테이블명;

-- 평균
SELECT AVG(컬럼명) AS 평균값
FROM 테이블명;

-- 행 개수
SELECT COUNT(*) AS 총행수
FROM 테이블명;

-- 최대값
SELECT MAX(컬럼명) AS 최대값
FROM 테이블명;

-- 최소값
SELECT MIN(컬럼명) AS 최소값
FROM 테이블명;

 

문자열 함수 (String Functions)

-- 문자열 연결
SELECT CONCAT(컬럼명1, ' ', 컬럼명2) AS 연결값
FROM 테이블명;

-- 문자열 길이
SELECT LENGTH(컬럼명) AS 문자열길이
FROM 테이블명;

-- 부분 문자열
SELECT SUBSTRING(컬럼명, 시작위치, 길이) AS 부분문자열
FROM 테이블명;

-- 대소문자 변환
SELECT UPPER(컬럼명) AS 대문자값
FROM 테이블명;

SELECT LOWER(컬럼명) AS 소문자값
FROM 테이블명;

-- 공백 제거
SELECT TRIM(컬럼명) AS 공백제거값
FROM 테이블명;

 

수학 함수 (Math Functions)

-- 반올림
SELECT ROUND(컬럼명, 소수점자리수) AS 반올림값
FROM 테이블명;

-- 올림
SELECT CEIL(컬럼명) AS 올림값
FROM 테이블명;

-- 내림
SELECT FLOOR(컬럼명) AS 내림값
FROM 테이블명;

-- 절대값
SELECT ABS(컬럼명) AS 절대값
FROM 테이블명;

-- 거듭제곱
SELECT POWER(기본컬럼, 지수컬럼) AS 거듭제곱값
FROM 테이블명;

-- 나머지
SELECT MOD(컬럼명1, 컬럼명2) AS 나머지값
FROM 테이블명;

-- 2진수 변환
SELECT BIN(컬럼명) AS 반환이름;

 

날짜 및 시간 함수 (Date and Time Functions)

  • 형식 지정자
형식 지정자 설명 예시 (2025-01-12)
%Y 4자리 연도 2025
%y 2자리 연도 25
%M 월 이름 (영문) January
%b 월 이름 약어 (영문) Jan
%m 2자리 월 (01 ~ 12) 01
%c 월 (1 ~ 12) 1
%D 일  + 서수 접미사(1st, 2nd 등) 12th
%d 2자리 일(01 ~ 31) 12
%e 일 (1 ~ 31) 12
%W 요일 이름 (영문) Sunday
%a 요일 약어 (영문) Wed
%w 요일 번호 (0=일요일, 1=월요일) 0
%j 해당 연도의 몇 번째 날 (001 ~ 366) 012
%H 2자리 시간 (00~23) 14
%h 2자리 시간 (01~12, 12시간제) 02
%i 2자리 분 (00~59) 30
%s 2자리 초 (00~59) 45
%p AM 또는 PM PM

 

-- 현재 날짜
SELECT CURRENT_DATE() AS 현재날짜;

-- 현재 시간
SELECT CURRENT_TIME() AS 현재시간;

-- 현재 날짜와 시간
SELECT NOW() AS 현재날짜시간;

-- 날짜에 기간 추가
SELECT DATE_ADD(컬럼명, INTERVAL 추가값 단위) AS 조정된날짜
FROM 테이블명;

-- 날짜에서 기간 빼기
SELECT DATE_SUB(컬럼명, INTERVAL 차감값 단위) AS 조정된날짜
FROM 테이블명;

-- 날짜 차이 계산
# 컬럼명1 - 컬럼명2
SELECT DATEDIFF(컬럼명1, 컬럼명2) AS 날짜차이
FROM 테이블명;

-- 날짜에서 특정 부분 추출
SELECT YEAR(컬럼명) AS 연도,
       MONTH(컬럼명) AS 월,
       DAY(컬럼명) AS 일
FROM 테이블명;

-- 요일 추출
SELECT DAYNAME(컬럼명) AS 요일
FROM 테이블명;

-- 해당 월의 마지막 날
SELECT LAST_DAY(컬럼명) AS 마지막날짜
FROM 테이블명;

-- 날짜 형식 변환
SELECT DATE_FORMAT(컬럼명, '변환형식') AS 형식변환날짜
FROM 테이블명;

-- 날짜에서 특정 단위 추출
SELECT EXTRACT(단위 FROM 컬럼명) AS 값
FROM 테이블명;

 

조건부 함수 (Conditional Functions)

-- CASE 조건문
SELECT CASE
           WHEN 컬럼명 > 값 THEN '조건충족'
           WHEN 컬럼명 BETWEEN 최소값 AND 최대값 THEN '범위충족'
           ELSE '조건미충족'
       END AS 조건결과
FROM 테이블명;

 

형 변환 함수 (Conversion Functions)

-- 데이터 타입 변환
SELECT CAST(컬럼명 AS 데이터타입) AS 변환값
FROM 테이블명;

-- 날짜 변환 (MySQL)
SELECT CONVERT(컬럼명, 데이터타입) AS 변환값
FROM 테이블명;

 

'CS > DataBase' 카테고리의 다른 글

SQL과 NoSQL 비교  (0) 2025.04.01
DataBase Management System  (1) 2025.01.09
DataBase/DataBase System  (2) 2025.01.09
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/01   »
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
글 보관함