MySQL 31

SQL 쿼리의 일반적인 처리 순서

SQL 쿼리 실행 순서SQL 쿼리는 작성 순서와 실행 순서가 다릅니다. 아래는 쿼리가 실제로 처리되는 논리적 실행 순서입니다. 각 절의 역할과 처리 방식을 자세히 설명합니다.FROM 절쿼리의 첫 단계로, 데이터를 가져올 테이블(또는 뷰)을 지정합니다. 여러 테이블을 사용할 경우, 조인(JOIN)을 통해 결합 방식을 정의합니다. 이 단계에서 모든 행과 열을 포함하는 가상 테이블이 생성됩니다.ON 절조인(JOIN)이 사용될 때, 테이블 간 결합 조건을 정의합니다. 예를 들어, 두 테이블의 특정 열 값이 일치해야 결합되도록 조건을 설정합니다. 이 절은 조인된 행을 결정합니다.JOINFROM 절에서 지정된 테이블들을 ON 절의 조건에 따라 결합합니다. INNER JOIN, LEFT JOIN 등 조인 유형에 따라..

MySQL 2025.05.16

GROUP BY 와 HAVING 절

1. GROUP BY 절이란?GROUP BY 절은 SQL에서 특정 열의 값에 따라 행 집합을 요약된 그룹으로 나누는 데 사용됩니다. 주로 집계 함수(SUM, AVG, MAX, MIN, COUNT 등)와 함께 사용되어 각 그룹에 대한 요약 정보를 제공합니다.특징:데이터를 원하는 그룹으로 나눌 수 있음.그룹화할 컬럼명을 SELECT 절과 GROUP BY 절에 추가.집계 함수와 함께 사용되는 상수는 GROUP BY 절에 포함하지 않아도 됨.주의: 비집계 컬럼은 GROUP BY에 포함해야 하며, MySQL의 ONLY_FULL_GROUP_BY 모드에서 이를 위반하면 오류 발생.예시:SELECT class, AVG(score) AS AverageScoreFROM tb_studentGROUP BY class; 2. ..

MySQL 2025.05.16

MySQL ANSI SQL 표준과 주요 함수

ANSI SQL 표준이란?ANSI(미국국가표준협회, American National Standards Institute)는 데이터베이스 관리 시스템(DBMS)의 호환성, 일관성, 이식성을 보장하기 위해 SQL(Structured Query Language) 표준을 정의합니다. ANSI SQL은 SQL:1992, SQL:1999, SQL:2011, SQL:2016 등 버전으로 발전하며, 각 버전은 윈도우 함수, JSON 지원 등 새로운 기능을 추가했습니다.주요 목표:호환성: 다양한 DBMS 간 쿼리 호환성 보장.일관성: SQL 문법과 기능의 일관된 사용 제공.이식성: SQL 코드의 DBMS 간 이식성 향상.2. 주요 ANSI SQL 함수1. 집계 함수COUNT(): 특정 조건을 만족하는 행의 수 반환.SU..

MySQL 2025.05.16

테이블 복사 및 데이터 추가

데이터베이스에서 한 테이블의 구조나 데이터를 다른 테이블로 복사하는 작업은 여러 상황에서 유용하게 사용됩니다. 테이블의 구조만을 복사하거나, 구조와 데이터 모두를 복사할 수 있습니다. 테이블 구조만 복사하기테이블의 구조만을 새로운 테이블로 복사하고자 할 때, 데이터는 복사하지 않고 구조만 생성합니다.CREATE TABLE 새_테이블AS SELECT * FROM 기존_테이블 WHERE 1 = 0;-- AS는 CREATE TABLE과 SELECT 사이를 연결하는 역할을 합니다-- 즉, SELECT 쿼리의 결과(컬럼 구조와 데이터)를 새 테이블(새_테이블)의 정의로 사용하도록 지시합니다. -- 테스트 CREATE TABLE new_studentAS SELECT * FROM tb_student WHERE 1=0..

MySQL 2025.05.16

트랜잭션 이란 & (COMMIT, ROLLBACK)

1. 트랜잭션이란?트랜잭션은 데이터베이스에서 여러 SQL 문을 하나의 작업 단위로 묶어 실행합니다. 모든 작업이 성공해야 적용되며, 하나라도 실패하면 전체가 취소됩니다.요약트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위입니다.여러 SQL 명령어를 묶어 "전부 성공"하거나 "전부 실패"하도록 보장합니다.실생활 예: 은행 송금A가 B에게 5만 원 송금: A 계좌에서 5만 원 감소, B 계좌에서 5만 원 증가두 작업이 모두 성공해야 데이터가 올바름트랜잭션의 중요성데이터 무결성 유지: 부분 성공/실패로 인한 오류 방지예: 송금 중 시스템 오류 발생 시, 돈이 사라지거나 중복 지급되지 않도록 보호 질문: 트랜잭션이 없다면 은행 송금에서 어떤 문제가 생길까? 트랜잭션이 없는 은행 송금의 문제부분 완료: 출금은..

MySQL 2025.05.16

MySQL 별칭, 변수 선언, IF 문

1. 별칭(Alias)에 대해서 살펴 보자. select 100, '반장' ; select 100 as student_id, 'captain' as title;MySQL에서 AS 키워드는 별칭(Alias)을 지정할 때 사용합니다.즉, 컬럼명이나 테이블명에 별명을 붙여 결과를 더 읽기 쉽게 하거나, 복잡한 표현식을 간단하게 만들 때 사용합니다. 컬럼에 별칭 주기select 100 as student_id, 'captain' as title;​테이블에 별칭 주기SELECT s.name FROM students AS s; AS 생략 가능SELECT 100 student_id, 'captain' title;2. 사용자 변수란?MySQL에서는 @ 기호를 사용하여 사용자 정의 변수를 선언하고 사용할 수 있습니다...

MySQL 2025.05.15

MySQL JOIN

테이블에 기준을 FROM 절에 나오는 테이블 기준입니다. JOIN은 두 개 이상의 테이블에서 관련된 데이터를 결합하여 새로운 결과를 생성하는 데이터베이스 연산입니다.1.1. JOIN이 필요한 이유데이터베이스는 중복을 최소화하기 위해 데이터를 여러 테이블에 나눠 저장합니다.실제 사용 시, 분산된 데이터를 통합해야 할 때가 많습니다.예: 학생 정보(tb_student)와 성적 등급 정보(tb_grade)를 결합하여 학생별 점수를 확인.1.2. JOIN의 기본 개념JOIN은 테이블 간 공통 열(예: 외래 키와 기본 키)을 기준으로 데이터를 결합합니다.MySQL에서는 INNER JOIN, LEFT JOIN, RIGHT JOIN을 지원하며, FULL OUTER JOIN은 지원하지 않습니다.2.1. 테이블 생성학생..

MySQL 2025.05.14

관계 차수란?

1. 관계 차수란?관계 차수(Relation Degree)는 관계형 데이터베이스에서 두 테이블 간의 관계 복잡성을 나타내는 개념입니다. 관계는 테이블 간의 데이터 연결 방식을 정의하며, 주로 1:1 (일대일), 1:N (일대다), N:M (다대다)로 나뉩니다.관계 유형설명실생활 예시1:1 (일대일)한 사람은 하나의 여권만 가질 수 있어요. 여권도 오직 한 사람만의 것이죠.사람 ↔ 여권1:N (일대다)한 고객은 여러 주문을 할 수 있어요. 하지만 한 주문은 한 고객의 것이죠.고객 ↔ 주문N:M(다대다)여러 학생이 여러 과목을 수강하고, 한 과목도 여러 학생이 수강할 수 있어요.학생 ↔ 수업 혼동 주의(용어 정리)테이블 차수: 테이블 내의 컬럼 수 (예: tb_user의 컬럼 수 = 3)관계 차수: 두 테이..

MySQL 2025.05.13