728x90

DataBase/MySQL 10

MySQL 복제(레플리카) 설정하기

복제란?복제는 한 서버에서 다른 서버로 데이터가 동기화되는 것을 말한다.소스(Source) 서버: 원본 데이터를 가진 서버레플리카(Replica) 서버: 복제된 데이터를 가지는 서버소스 서버에서 데이터 및 스키마에 대한 변경이 최초로 발생한다. 레플리카 서버에서는 이러한 변경 내역을 소스 서버로부터 전달 받아 자신이 가지고 있는 데이터에 반영함으로써 소스 서버에 저장된 데이터와 동기화 시킨다. 복제의 목적은 주로 다음 4가지이다.스케일 아웃(Scale-out)데이터 백업레플리카 서버를 데이터 분석용 서버로 사용데이터의 지리적 분산복제 아키텍처복제 아키텍처를 이해하기 위해서두 가지 로그를 알아두어야 한다.바이너리 로그(Binary Log): MySQL 서버에서 발생하는 모든 변경 사항을 순서대로 기록한다...

DataBase/MySQL 2025.07.20

MySQL 콜레이션 (feat. 정렬, 비교)

회사 업무 중 MySQL5.7을 사용하던 당시 생성된 테이블과 이후 생성된 테이블의 COLLATION이 일치하지 않아,두 컬럼의 JOIN 시 에러가 발생하는 상황이 있었다. 둘 중 하나의 컬럼의 COLLATION을 명시적으로 변경하여야 JOIN이 가능했다. 이러한 이슈가 다시 발생하지 않도록 콜레이션에 대해 알아보자.콜레이션이란콜레이션은 문자열 컬럼의 값에 대한 비교나 정렬 순서를 위한 규칙을 의미한다.비교나 정렬 작업에서영어 대소문자를 같은 것으로 처리할지더 크거나 작은 것으로 판단할지에 대한 규칙을 정의하는 것이다. 따라서 각 문자열 컬럼의 값을 비교하거나 정렬할 때는문자 집합뿐 아니라 콜레이션의 일치 여부에 따라 결과가 달라지며쿼리의 성능 또한 상당한 영향을 받는다. 콜레이션의 특징하나의 문자 집합..

DataBase/MySQL 2025.06.22

[MySQL] 인덱스의 기본, B-Tree 인덱스 사용법

DBMS에서 쿼리를 효율적으로 사용하기 위해인덱스는 매우 중요하다. 그 중 가장 대표적인 B-Tree 인덱스에 대해 알아보자.인덱스란우선 인덱스가 무엇인지부터 살펴보자.인덱스는 컬럼의 값과 해당 레코드가 저장된 주소를키와 값의 쌍으로 만들어두는 것이다. 그리고 컬럼의 값을 주어진 순서로 미리 정렬하여 보관한다. 인덱스는 Sorted List의 구조를 가지고 있는데,Sorted List 자료 구조는 데이터가 변경/추가될 때마다 항상 값을 다시 정렬해야 하므로 저장하는 과정이 느리고 복잡하지만이미 정렬 되어 있기 때문에 원하는 값을 매우 빠르게 찾을 수 있다는 특징을 갖는다. 즉, 인덱스는 데이터의 저장(INSERT, UPDATE, DELETE) 성능을 희생하고읽기 성능을 높이는 기능이다. 그렇기에 마냥 인..

DataBase/MySQL 2024.11.24

[MySql] 조건 입력 순서

1. SELECT2. FROM3. WHERE4. GROUP BY5. HAVING6. ORDER BY7. LIMIT 참고한 블로그: https://dwbutter.com/entry/MySQL-SELECT-%EB%AC%B8-%EA%B0%81-%EC%A0%88%EB%93%A4%EC%9D%98-%EC%82%AC%EC%9A%A9-%EC%88%9C%EC%84%9C-%EC%8B%A4%EC%A0%9C-%EC%8B%A4%ED%96%89-%EB%90%98%EB%8A%94-%EC%88%9C%EC%84%9C [MySQL] SELECT 문 각 절들의 사용 순서, 실제 실행 되는 순서SELECT 문의 각 절들은 먼저 써야 하는 순서들이 정해져있다. 이 순서는 반드시 지켜야 함 더 앞에 나와야 하는 순서대로 보면 1. SELECT..

DataBase/MySQL 2023.04.27

[MySql] 이미 존재하는 row의 속성을 새로 입력하고 싶다면?

예를 들어 name, email, phone_number 칼럼이 있는 users 테이블에서 당신이 이미 name, email을 넣어 한 명의 user를 아래와 같이 입력했다고 해보자.id (PK)nameemailphone_number1왈왈이walwalwal@tistory.comNULL...   phone_number는 입력하지 않았으므로, NULL값일 것이다. 이 상태에서 phone_number를 입력하고자 할 때INSERT INTO 구문을 사용하여 데이터를 넣어야겠다고 생각할 수 있다. 하 지 만데이터 관점에서 INSERT INTO는 새로운 행(새로운 user)를 추가하는 행위이므로이미 존재하는 행(user)의 속성(column)을 새로이 입력하고자 할 때는 UPDATE ~ SET ~구문을 사용해줘야 ..

DataBase/MySQL 2023.04.06

[MySql] GROUP BY, max()를 활용한 문제 풀이

문제: 페이지 하단 참고자료의 SQL 키워드들과 MySQL의DQL(Data Query Language)를 사용하여, 아래 결과가 출력될 수 있는 쿼리문을 작성해주세요. 특정 배급사(Nolan Unlimited)의 영화 중 가장 높은 평점을 받은 영화의 모든 정보와 출연 배우 목록을 다음과 같은 형태로 출력해주세요.(문제 출처: 위코드 (wecode)) 내가 작성한 쿼리문 SELECT m.title, m.rate, m.open_date, d.business_name, JSON_ARRAYAGG( JSON_OBJECT( "name", a.name , "actorId", a.id)) actor_listFROM movies mJO..

DataBase/MySQL 2023.03.25

[MySql] mysql을 실행하려고 했을 때 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) 에러 문구가 나온다면

mysql은 컴퓨터를 종료시키면 데이터베이스 서버가 꺼진다.따라서 컴퓨터를 재시작할 때마다 서버를 다시 실행시켜 줘야 한다. 서버 실행 명령어 없이 바로  mysql -u root -p 를 입력해서 데이터베이스로 들어가려 한다면아래와 같은 에러 메시지를 보았을 것이다.ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)이럴 때는 mysql 서버를 시작하는 명령어를 아래와 같이 입력해주자 mysql.server start그 후 다시 mysql -u root -p 명령어를 입력해주면 mysql이 잘 실행된다.mysql -u root -p

DataBase/MySQL 2023.03.25

[MySql] 명령어 정리 - DDL (Data Definition Language) 쿼리문

관계형 데이터베이스에서 테이블의 데이터를 다루기 전에테이블 그 자체, 테이블의 구조와 각 칼럼의 속성 등을 다루는DDL (Data Definition Language) 쿼리문에 대해 알아보자.DDL (Data Definition Language) 쿼리문명령어설명활용법CREATE새로운 테이블을 각 칼럼(열)의 [칼럼명, 자료형, 제약 조건]을 입력하여 생성CREATE TABLE [테이블명] ([칼럼 이름] [자료형] [제약 조건]...(칼럼만큼 반복));ALTER테이블의 열을 추가/수정/삭제할 수 있는 명령어변경하고자 하는 테이블의 [테이블명] [행위] [열이름] [자료형] [제약 조건] 순서로 지정(수정 시 변경하지 않을 요소도 모두 기입해줘야 함)추가: ALTER TABLE [테이블명] ADD [열 이..

DataBase/MySQL 2023.03.24

[MySql] 2개 이상 여러 Table을 Join하기 - 개념 정리

sql의 DQL문을 사용하면서아래와 같이 여러 테이블들을 계속해서 JOIN하는 경우가 있다.SELECT ~ FROM ~JOIN ~ ON ~JOIN ~ ON ~...  여기서 JOIN이 FROM의 대상이 되는 바탕 table에 새로운 table을 하나씩 옆으로 붙여나가는 것이라고 생각하면 이해가 쉽다.그래서 예를 들어 JOIN을 2개의 테이블에 대해 적용했다면, 두 번째 JOIN문의 ON 조건에서 첫 번째에 이미 join된 table의 field를 사용할 수 있다.join을 통해 field를 이어 붙이며 하나의 거대한 table을 만들어 간다고 이해해보자.

DataBase/MySQL 2023.03.21

[MySql] DQL SELECT문에서 subquery 활용법

Query 안에 또 다른 query를 넣는 것을 subquery라고 한다.예를 들어, SELECT 문 안에 중첩되어 SELECT 문이 들어가는 경우. SELECT 문은 크게 보았을 때, SELECT의 대상이 되는 칼럼 (field)와 FROM 혹은 JOIN 뒤에 붙는 테이블이 있다.이에 따라 subquery 사용 경우의 수를 두 가지로 나눠 볼 수 있다. 1. SELECT (SELECT ~ FROM~) FROM ~Subquery를 칼럼 중 하나로 넣어 줄 때에는 Subquery로 SELECT한 칼럼은 1개여야 하고 subquery안에 바깥 액자 역할을 하는 table과 연결 (link) 될 수 있도록 하는 where문을 넣어줘야 한다. 예시는 아래와 같음.SELECT     m.id movie_id,  ..

DataBase/MySQL 2023.03.21
728x90