ㅇ 일 자 : 2026년 7월 8일(수)
ㅇ 주 제 : MySQL 기본, 고급문법 정리 및 Workbench 예제 실습
1. MySQL 핵심 문법 정리
| 구분 | 명령어 (구문) | 기본 문법 및 형식 | 주요 설명 | |
| DML (데이터 조작) | SELECT | 조회 | SELECT 컬럼1, 컬럼2 FROM 테이블이름 WHERE 조건; | 특정 테이블에서 원하는 조건의 데이터를 조회 |
| INSERT | 입력 | INSERT INTO 테이블이름 (컬럼1, 컬럼2) VALUES (값1, 값2); | 테이블에 새로운 행(데이터)을 삽입 | |
| UPDATE | 기본적 미허용 "수정" | UPDATE 테이블이름 SET 컬럼1 = 값1 WHERE 조건; | 조건에 맞는 기존 데이터를 수정 (WHERE 생략 시 전체 변경 주의) | |
| DELETE | 기본적 미허용 "삭제" | DELETE FROM 테이블이름 WHERE 조건; | 조건에 맞는 기존 데이터를 삭제 (행 단위 삭제, 복구 가능) . 특정 툴에서 실행한다 | |
| DDL (데이터 정의) | CREATE | 생성 | CREATE TABLE 테이블이름 (컬럼1 데이터타입, ...); | 새로운 테이블이나 데이터베이스를 생성 |
| ALTER | 수정 | ALTER TABLE 테이블이름 ADD 컬럼명 데이터타입; | 기존 테이블의 구조(컬럼 추가, 수정, 삭제 등)를 변경 | |
| DROP | 삭제 | DROP TABLE 테이블이름; | 테이블 자체를 완전히 삭제 (구조와 데이터 모두 삭제) | |
| TRUNCATE | 초기화 | TRUNCATE TABLE 테이블이름; | 테이블의 모든 데이터를 최초 생성 상태로 초기화 (구조는 남기고 데이터만 고속 삭제, 복구 불가) | |
| DCL (데이터 제어) | GRANT | 권한부여 | GRANT 권한 ON 대상 TO 사용자; | 특정 사용자에게 데이터베이스 객체에 대한 권한부여 (예: SELECT, INSERT 등) |
| REVOKE | 권한회수 | REVOKE 권한 ON 대상 FROM 사용자; | 특정 사용자에게 부여했던 *권한을 회수(취소)* | |
| TCL (트랜잭션 제어) | COMMIT | 작업완료 | COMMIT; | 트랜잭션의 변경 내용을 데이터베이스에 최종 반영 |
| ROLLBACK | 작업취소 | ROLLBACK; | 트랜잭션의 변경 내용을 취소, 이전 상태로 되돌리기 | |
| 고급 문법 | 윈도우 함수 (Window Functions) | ROW_NUMBER(), RANK(), DENSE_RANK() | SELECT 행번_함수() OVER (PARTITION BY 그룹컬럼 ORDER BY 정렬컬럼) FROM 테이블명; | 행과 행 간의 관계를 정의하여 순위를 매기거나 집계를 수행합니다. PARTITION BY로 그룹을 나누고 ORDER BY로 순서대로 정렬하여 계산합니다. |
| CTE (공통 테이블 식) | WITH | WITH 임시테이블명 AS (SELECT ... ) SELECT * FROM 임시테이블명; | 복잡한 쿼리를 단순화하기 위해 서브쿼리를 마치 하나의 임시 테이블처럼 정의해 사용하는 문법입니다. 재귀적(Recursive) 호출도 가능합니다. | |
| 서브쿼리 확장 | ANY, ALL | SELECT * FROM 테이블명 WHERE 컬럼 > ANY / ALL (서브쿼리); | ANY는 서브쿼리의 결과 중 하나라도 만족하면 참(OR 조건), ALL은 서브쿼리의 모든 결과를 만족해야 참(AND 조건)이 됩니다. | |
| 인덱스 제어 | FORCE INDEX | SELECT * FROM 테이블명 FORCE INDEX (인덱스명) WHERE 조건; | MySQL 옵티마이저가 다른 실행 계획을 세우더라도, 개발자가 지정한 특정 인덱스를 강제로 사용하도록 지정합니다. | |
| 피벗 변환 (행을 열로) | CASE WHEN | SELECT 행컬럼, MAX(CASE WHEN 열컬럼 = '값' THEN 데이터 END) FROM 테이블명 GROUP BY 행컬럼; | MySQL은 공식 PIVOT 명령어가 없으므로, 집계 함수(MAX, SUM)와 CASE WHEN 문을 결합하여 행 데이터를 열 데이터로 전환합니다. | |
| 동적 SQL | PREPARE, EXECUTE | PREPARE 템플릿명 FROM '쿼리문'; EXECUTE 템플릿명 USING @변수; | 쿼리 문장을 문자열 형태로 준비해 두고, 실행 시점에 변수를 바인딩하여 동적으로 쿼리를 실행할 수 있게 합니다. | |
| 프로시저 | CREATE PROCEDURE | DELIMITER // CREATE PROCEDURE 이름(IN/OUT 파라미터) BEGIN 쿼리... END // DELIMITER ; | 여러 개의 SQL 문을 하나의 함수처럼 묶어서 서버에 저장하고, CALL 프로시저명()으로 호출하여 실행하는 객체입니다. | |
| 트리거 | CREATE TRIGGER | CREATE TRIGGER 트리거명 BEFORE/AFTER INSERT/UPDATE/DELETE ON 테이블명 FOR EACH ROW BEGIN ... END; | 특정 테이블에 데이터가 추가, 수정, 삭제될 때 자동으로 연쇄 실행되는 로직을 정의합니다. (OLD, NEW 키워드로 변경 전후 데이터 접근 가능) |
쿼리핵심문법_260708.ods
0.03MB
2.MySQLWorkbench 예제 실습
2. 1. 새로운 쿼리를 작성후 리프레시를 하여 좌측 메뉴에서 Schemas 목록을 확인 한다.

2. 2. 실습 문제 : SELECT DB 조회


'학습 로그 > c# c++' 카테고리의 다른 글
| D+66[C+MySQl] 회원가입/로그인을 MySQL서버와 연동하기 과제 (0) | 2026.07.12 |
|---|---|
| D+65[C+MySQL] SQL 예제 문제 실습 (0) | 2026.07.09 |
| D+62[C+MySQL] Workbench 예제 실습을 통한 이해 (0) | 2026.07.06 |
| D+62[C+MySQL] DataBase, EED 에 대한 이해 (0) | 2026.07.06 |
| D+21 [C+Unix] 명령어 실습 및 예습 (0) | 2026.05.06 |