[MySQL] SQL 기본 문법 정리

조애옹·2025년 6월 9일

✅ 데이터베이스 관련 명령어

  • 전체 DB 조회

    SHOW DATABASES;
  • DB 생성/선택/삭제

    CREATE DATABASE [IF NOT EXISTS] db_name;
    USE db_name;
    DROP DATABASE [IF EXISTS] db_name;

✅ 테이블 관련 명령어

  • 테이블 생성

    CREATE TABLE table_name (
      column_name data_type [constraints],
      ...
    );
  • 테이블 구조 확인

    DESC table_name;
  • 테이블 변경

    ALTER TABLE table_name ADD COLUMN col_name data_type [AFTER col];
    ALTER TABLE table_name DROP COLUMN col_name;
    ALTER TABLE table_name MODIFY COLUMN col_name new_type;
    ALTER TABLE table_name CHANGE old_name new_name new_type;
  • 기본키, AUTO_INCREMENT, UNIQUE

    ALTER TABLE table_name ADD PRIMARY KEY(column);
    ALTER TABLE table_name MODIFY column INT NOT NULL AUTO_INCREMENT;
    ALTER TABLE table_name MODIFY column INT UNSIGNED;
  • DEFAULT 값 지정

    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      nickname VARCHAR(100) NOT NULL,
      regDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
    );

✅ 데이터 조작 (DML)

  • 데이터 삽입

    INSERT INTO table_name SET column1 = value1, column2 = value2;
  • 데이터 조회

    SELECT * FROM table_name;
    SELECT column1, column2 FROM table_name;
    SELECT * FROM table_name WHERE 조건;
    SELECT * FROM table_name ORDER BY col DESC LIMIT 3;
    SELECT * FROM table_name LIMIT 10 OFFSET 20;  -- 페이징: 21-30번째 데이터 조회
  • 데이터 수정

    UPDATE table_name SET column = value WHERE 조건;
  • 데이터 삭제

    DELETE FROM table_name WHERE 조건;

✅ 조건 검색 (WHERE / 조건절)

  • 기본 조건절

    WHERE col = value;
    WHERE col != value;
    WHERE col >= value AND col <= value;
  • LIKE, BETWEEN, IN, NOT IN

    WHERE nickname LIKE '홍길%';
    WHERE hit BETWEEN 10 AND 50;
    WHERE nickname IN ('홍길동', '임꺽정');
  • IS NULL, IS NOT NULL

    WHERE col IS NULL;
  • IFNULL, COALESCE

    SELECT IFNULL(col, '기본값') FROM table;
    SELECT COALESCE(col1, col2, '기본값'); -- NULL이 아닌 첫 번째 값을 반환

✅ 정렬 / 제한 / 페이징

  • 정렬

    ORDER BY col [ASC|DESC];
  • 상위 n개만 조회

    LIMIT n;
  • 페이징

    LIMIT 10 OFFSET 20;

✅ 집계 함수 & 그룹핑 (GROUP BY)

  • 집계 함수 사용

    SELECT COUNT(*), AVG(hit), SUM(hit), MAX(hit), MIN(hit) FROM article;
  • 그룹 단위로 집계

    SELECT nickname, COUNT(*) AS 게시물수
    FROM article
    GROUP BY nickname;
  • 그룹 조건 지정 (HAVING)

    GROUP BY nickname
    HAVING 게시물수 >= 2;
  • 중복 제거

    SELECT DISTINCT nickname FROM article;

✅ 조인 (JOIN)

  • INNER JOIN 기본

    SELECT A.*, B.column
    FROM A
    INNER JOIN B
    ON A.key = B.key;
  • AS를 활용한 별칭

    SELECT emp.id AS '사원번호', dept.name AS '부서명'
    FROM emp INNER JOIN dept
    ON emp.deptId = dept.id;
  • 테이블 별칭도 지정 가능

    SELECT E.id, D.name
    FROM emp AS E
    INNER JOIN dept AS D
    ON E.deptId = D.id;

✅ 서브쿼리 (Subquery)

  • SELECT 안의 SELECT

    SELECT *
    FROM article
    WHERE hit > (
      SELECT AVG(hit) FROM article
    );
profile
아자잣

0개의 댓글