DB/MySQL 11

[MySQL] B+tree

1. B+tree 란?   - B+tree는 데이터베이스와 파일 시스템에서 널리 사용되는 균형 잡힌 트리 자료 구조   - B+트리는 B-트리(B-tree)를 개선한 것( 인접한 자식 노드 끼리 링크드 리스트로 연결 )   - 큰 데이터 세트를 효율적으로 관리하는 데 유용  2. B+tree 특징   - 모든 실제 데이터는 리프 노드에만 저장, 내부 노드는 경로 탐색을 위한 인덱스 키 저장   - 리프 노드는 서로 링크드 리스트 형태로 연결( 범위 검색과 순차 접근이 효율적 )   - 트리는 삽입 및 삭제 시 자동으로 균형을 유지하여 검색, 삽입, 삭제의 시간 복잡도를 O(log n)으로 보장  3. B+tree 작동 방식   - 검색 : 루트 노드에서 시작하여 리프 노드까지 내려감, 내부 노드에서 키를..

DB/MySQL 2024.06.27

[MySQL] 인덱스

1. 인덱스란?   - 인덱스(index)는 데이터베이스 테이블의 열(또는 열의 집합)에 대해 검색 성능을 향상시키기 위해 사용 되는 데이터 구조   - 인덱스는 데이터를 보다 빠르게 검색하고 정렬하는 데 도움을 줌   - 인덱스는 책의 색인처럼 동작   - 특정 컬럼에 인덱스를 생성하면, MySQL은 그 컬럼의 값을 정렬된 데이터 구조(B+트리)로 저장   2. 인덱스의 종류   - PRIMARY KEY : 기본 키 인덱스, 테이블의 각 행을 고유하게 식별하는 데 사용( 테이블당 하나의 기본 키만 존재 )   - UNIQUE : 고유 인덱스, 해당 열의 모든 값이 고유함을 보장( 중복된 값을 허용하지 않음 )   - INDEX (또는 KEY) : 일반 인덱스, 검색 속도를 향상시키는 데 사용( 중복된 ..

DB/MySQL 2024.06.27

[MySQL] 스토어드 프로시저

1. 스토어드 프로시저란?   - 스토어드 프로시저(Stored Procedure)는 데이터베이스 관리 시스템(DBMS) 내에서 실행되는 하나 이상의 SQL 문장을 포함하는 프로그램   - 토어드 프로시저는 데이터베이스 작업을 더 효율적이고 안전하게 처리할 수 있는 강력한 도구   - 연산, 반복문, 조건문 등 다양하게 사용 가능  2. 스토어드 프로시저 장점    - 성능 향상    > 네트워크 트래픽 감소: 클라이언트와 서버 간의 통신이 줄어듭니다.    > 한 번의 호출로 여러 작업을 서버에서 수행   - 캐싱    > DBMS가 프로시저를 컴파일하고 캐시할 수 있어 반복 호출 시 성능이 향상   - 재사용성 및 유지보수성    > 재사용 가능 코드    > 데이터베이스 내에서 비즈니스 로직을 중앙..

DB/MySQL 2024.06.26

[MySQL] 함수

1. 함수란?   - MySQL에서 기본적으로 제공되는 내장 함수와 사용자 정의 함수로 나뉨   - 내장 함수는 문자열 함수, 수학 함수, 날짜 및 시간 함수 등으로 나눌 수 있음   - 사용자 정의 함수는 사용자가 직접 정의한 함수  2. 문자열 함수   - CONCAT() : 두 개 이상의 문자열을 하나로 연결     - CONCAT_WS() : 두 개 이상의 문자열을 구분자를 적용하여 하나로 연결     - LENGTH() : 문자열의 길이를 반환  3. 수학 함수   - ABS() : 주어진 숫자의 절대값을 반환     - ROUND() : 주어진 숫자를 지정된 소수점 자리로 반올림   4. 날짜 및 시간 함수  - NOW() : 현재 날짜와 시간을 반환     - DATEDIFF() : 두 날짜..

DB/MySQL 2024.06.26

[MySQL] 서브쿼리

1. 서브쿼리(Subquery) 란?   - 하나의 SQL 쿼리 내에 포함된 또 다른 쿼리를 의미  2. 서브쿼리의 종류   - 스칼라 서브쿼리 (Scalar Subquery)    > SELECT, WHERE, HAVING 절에서 사용    > 하나의 값만 반환     EX> SELECT      EX> WHERE      EX> HAVING    - 행 서브쿼리 (Row Subquery)    > WHERE, HAVING 절에서 사용    > 하나의 행을 반환     EX> WHERE      EX> HAVING    - 테이블 서브쿼리 (Table Subquery)    > WHERE, HAVING 절에서 사용    > 하나 이상의 행과 열을 반환     EX> WHERE      EX> HAVIN..

DB/MySQL 2024.06.25

[MySQL] 테이블 조인

1. 테이블 조인이란?   - 두 개 이상의 테이블을 결합하여 관련 데이터를 검색하는 데 사용  2. INNERJOIN 내부 조인   - 검색 조건에 해당하는 2개의 테이블의 공통적인 행을 출력   3. LEFT JOIN 왼쪽 외부 조인   - FROM에 해당하는 TABLE을 기준으로 SELECT 한 정보가 합쳐진다.   4. RIGHT JOIN 오른쪽 외부 조인   - JOIN에 해당하는 TABLE을 기준으로 SELECT 한 정보가 합쳐진다.   5. FULL JOIN    - MySQL에서는 FULL JOIN을 직접 지원하지 않으므로 LEFT JOIN과 RIGHT JOIN을 결합하여 사용

DB/MySQL 2024.06.21

[MySQL] 데이터 그룹화(묶기)

1. 데이터 그룹화란?  - GROUP BY 를 이용하여 데이터를 그룹화 할 수 있다.  - 또한, HAVING 을 이용하여 그룹화된 데이터를 조건에 따라 필터링 할 수 있다.  - GROUP BY, HAVING을 이용하여 데이터를 요약하고 집계 결과를 보다 세부적으로 제어할 수 있음.  2. GROUP BY  - 동일한 값을 가지는 행들을 그룹화하는 데 사용  - 집계 함수(COUNT, SUM, AVG, MAX, MIN 등)와 함께 사용하여 각 그룹에 대한 집계 결과를 계산 할 수 있다.  - GROUP BY 사용 예시 ( 국가별 사는 사람 수 조회 )  > SELECT country, COUNT(*) as user_count FROM users GROUP BY country;   3.  HAVING ..

DB/MySQL 2024.06.20

[MySQL] 데이터 조회

1. 데이터 조회  - SQL 에서는 SELECT 문을 사용하여 특정한 조건의 데이터를 조회할 수 있다.  2. 사용 예시   - 모든 열 조회  > SELECT * FROM users;   - 모든 특정  조회  > SELECT username, email FROM users;   - 조건을 사용 조회  > SELECT * FROM users WHERE username = 'kim';   - 다중 조건을 사용 조회  > SELECT * FROM users WHERE age > 25 AND username = 'kim';    - 특정 열로 정렬 조회  > SELECT * FROM users ORDER BY created_at DESC;    - 조회 결과 열의 갯수 제한  > SELECT * FROM ..

DB/MySQL 2024.06.20

[MySQL] 데이터 베이스 모델링

1. 데이터베이스 모델링(Database Modeling) 이란?   - 데이터베이스를 설계하는 과정   - 데이터를 어떻게 저장하고, 접근하고, 관리할지를 결정하는 데 중요한 역할   - 데이터베이스의 논리적 구조를 정의   - 데이터의 저장소와 데이터 간의 관계 설계  2. 데이터베이스 모델링의 주요 단계    - 요구사항 분석(Requirement Analysis)   - 개념적 설계(Conceptual Design)   - 논리적 설계(Logical Design)   - 물리적 설계(Physical Design)   - 정규화(Normalization)   - 최적화(Optimization)  3. ERD DIAGRAM

DB/MySQL 2024.06.20

[MySQL] DDL 과 DML

1. DDL(Data Definition Language) 이란?   - 데이터베이스, 테이블, 인덱스, 뷰 등을 생성, 수정, 삭제하는 데 사용   - DDL 명령은 자동으로 커밋됨(작업 완료 후 롤백 불가).  2. 주요 DDL 명령어   - CREATE : 데이터베이스 객체 생성   > CREATE DATABASE DB명;   > CREATE TABLE 테이블명;   > CREATE INDEX 인덱스명 ON 테이블명( 컬럼명 );  - ALTER: 기존의 데이터베이스 객체 수정   > 추가 : ALTER TABLE  테이블명 ADD 컬럼명 데이터타입;   > 수정 : ALTER TABLE  테이블명 MODIFY 컬럼명 데이터타입;   > 삭제 : ALTER TABLE  테이블명 DROP COLUMN..

DB/MySQL 2024.06.20