MySQL 8.0 기초·응용 참고서

MySQL 명령어 모음

접속, 데이터베이스, 테이블, 조회, 수정, 집계, 조인, 권한, 트랜잭션 핵심 명령

권장 표기: SQL 키워드는 대문자, 데이터베이스·테이블·열 이름은 소문자로 작성하고 문장 끝에 ;을 붙입니다.

1. 접속 및 종료

MySQL 접속
mysql -u root -p

Windows CMD에서 root 계정으로 접속합니다.

MySQL 종료
EXIT;

QUIT;도 같은 기능을 합니다.

2. 데이터베이스

목록 확인
SHOW DATABASES;

서버의 데이터베이스 목록을 확인합니다.

생성
CREATE DATABASE school_db;

school_db를 생성합니다.

선택
USE school_db;

작업할 데이터베이스를 선택합니다.

현재 DB 확인
SELECT DATABASE();

현재 선택된 데이터베이스를 확인합니다.

삭제
DROP DATABASE school_db;

데이터베이스를 삭제합니다.

3. 테이블

목록 확인
SHOW TABLES;

현재 데이터베이스의 테이블 목록을 확인합니다.

생성
CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(20),
    score INT
);

학생 테이블을 생성합니다.

구조 확인
DESC student;

DESCRIBE student;와 같습니다.

생성문 확인
SHOW CREATE TABLE student;

테이블 생성 SQL을 확인합니다.

삭제
DROP TABLE student;

테이블 구조와 데이터를 삭제합니다.

4. 데이터 입력

한 행 입력
INSERT INTO student
VALUES (1, '홍길동', 95);

한 행을 추가합니다.

여러 행 입력
INSERT INTO student
VALUES
(2, '김철수', 88),
(3, '이영희', 91);

여러 행을 한 번에 추가합니다.

열 지정 입력
INSERT INTO student (id, name, score)
VALUES (4, '박민수', 99);

입력할 열을 명시합니다.

5. 조회와 조건

전체 조회
SELECT *
FROM student;

모든 열과 행을 조회합니다.

특정 열 조회
SELECT name, score
FROM student;

필요한 열만 조회합니다.

조건 조회
SELECT *
FROM student
WHERE score >= 90;

90점 이상인 학생을 조회합니다.

범위 검색
SELECT *
FROM student
WHERE score BETWEEN 80 AND 100;

80점 이상 100점 이하를 조회합니다.

목록 검색
SELECT *
FROM student
WHERE id IN (1, 3, 5);

지정한 값과 일치하는 행을 조회합니다.

문자 검색
SELECT *
FROM student
WHERE name LIKE '김%';

이름이 김으로 시작하는 학생을 조회합니다.

NULL 검색
SELECT *
FROM student
WHERE score IS NULL;

점수가 없는 행을 조회합니다.

정렬
SELECT *
FROM student
ORDER BY score DESC;

점수 내림차순으로 정렬합니다.

중복 제거
SELECT DISTINCT class
FROM student;

중복 값을 제거합니다.

개수 제한
SELECT *
FROM student
LIMIT 5;

앞의 5개 행만 조회합니다.

6. 수정과 삭제

수정
UPDATE student
SET score = 100
WHERE id = 1;

id가 1인 학생의 점수를 수정합니다.

특정 행 삭제
DELETE FROM student
WHERE id = 2;

id가 2인 행만 삭제합니다.

전체 행 삭제
DELETE FROM student;

구조는 남기고 모든 행을 삭제합니다.

7. 집계와 그룹

개수
SELECT COUNT(*)
FROM student;

행의 개수를 계산합니다.

평균
SELECT AVG(score)
FROM student;

점수 평균을 계산합니다.

합계·최대·최소
SELECT SUM(score), MAX(score), MIN(score)
FROM student;

합계, 최댓값, 최솟값을 계산합니다.

그룹화
SELECT class, AVG(score)
FROM student
GROUP BY class;

반별 평균을 계산합니다.

그룹 조건
SELECT class, AVG(score)
FROM student
GROUP BY class
HAVING AVG(score) >= 90;

평균이 90 이상인 그룹만 조회합니다.

8. 구조 변경

열 추가
ALTER TABLE student
ADD age INT;

age 열을 추가합니다.

열 삭제
ALTER TABLE student
DROP COLUMN age;

age 열을 삭제합니다.

열 이름 변경
ALTER TABLE student
CHANGE name student_name VARCHAR(30);

열 이름과 자료형을 변경합니다.

자동 증가
CREATE TABLE member (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30)
);

id가 자동 증가하는 테이블을 만듭니다.

9. JOIN·VIEW·INDEX

INNER JOIN
SELECT student.name, class.class_name
FROM student
INNER JOIN class
ON student.class_id = class.id;

두 테이블의 일치 행을 결합합니다.

VIEW 생성
CREATE VIEW high_score AS
SELECT * FROM student
WHERE score >= 90;

가상 테이블을 생성합니다.

INDEX 생성
CREATE INDEX idx_name
ON student(name);

검색 성능 향상을 위한 인덱스를 생성합니다.

10. 사용자와 권한

현재 사용자
SELECT USER(), CURRENT_USER();

접속 사용자와 인증 계정을 확인합니다.

비밀번호 변경
ALTER USER 'root'@'localhost'
IDENTIFIED BY '새비밀번호';

root 비밀번호를 변경합니다.

권한 다시 읽기
FLUSH PRIVILEGES;

권한 정보를 다시 읽습니다.

11. 트랜잭션

시작
START TRANSACTION;

트랜잭션을 시작합니다.

확정
COMMIT;

변경 내용을 확정합니다.

취소
ROLLBACK;

확정 전 변경을 취소합니다.