MySQL(8)
-
EXPLAIN 사용법 찍먹 해보기
MySql의 옵티마이저가 항상 최적의 쿼리 최적화를 하는 것은 아니기 때문에 EXPLAIN을 사용해 실행 계획을 확인하는 것은 중요하다. 부끄럽게도 나는 DB를 잘 사용하고 다루는 것에 많이 부족하다.최근 Real Mysql 8.0이라는 좋은 책을 읽었지만 내용도 많고 나에게는 어려운 부분이 많지만 그 중에서도 특히 EXAPLIN 활용에 대한 부분은 요약해서 기록하는게 필요 할 것 같다는 생각에 포스트로 작성하게 되었다.EXAPLIN 이란?SQL 데이터베이스에서 EXPLAIN은 쿼리의 실행 계획(execution plan)을 보여주는 명령어로, 개발자와 DBA가 쿼리의 성능을 분석하고 최적화하는 데 사용된다. 이 명령어는 쿼리를 실제로 실행하지 않고, 데이터베이스가 어떻게 쿼리를 처리할지 계획을 보여준다..
2025.03.26 -
JSON_ARRAYAGG와 JSON_OBJECTAGG 차이 (Mysql 8.0)
JSON_ARRAYAGG() 함수와 JSON_OBJECTAGG() 함수는 MySQL에서 JSON 데이터를 집계하는 데 사용되는 함수로, 각각 다른 형태의 JSON 구조를 생성한다. 이 두 함수의 차이점은 생성되는 JSON 데이터의 형태에 있다.1. JSON_ARRAYAGG()JSON_ARRAYAGG() 함수는 JSON 배열을 생성, 여러 개의 값을 한 배열로 묶어서 JSON 형태로 반환할 때 사용된다. 쉽게 말해, 특정 컬럼의 값을 순차적으로 모아서 하나의 배열을 만드는 역할을 한다.예제:다음과 같은 테이블이 있다고 가정id name1John2Jane3Smith이 데이터를 JSON_ARRAYAGG()로 집계하면:SELECT JSON_ARRAYAGG(name) AS names_arrayFROM employ..
2025.02.12 -
조인 테이블이 있으면 다대다 관계다?
회사에서 ORM을 사용하고 있는데 내가 보기에는 @ManyToMany를 사용하는게 적절해 1대다 관계를 양측에 만들고 중간테이블을 엔티티로 만들어 놓을 것을 보면서 다대다 관계에 대한 이야기를 나누었는데 상대방이 생각하는 다대다 테이블과 내가 생각하는 다대다 관계 테이블이 달라서 이야기를 나누다가 작성하게 되었다.결론만 간략하게 이야기 한다면 나의 의견은 중간테이블(User_Project)이 존재하는 User 테이블과 Project 테이블이 존재 한다면 User 테이블과 Proejct 테이블은 서로 N:M 관계 즉 다대다 관계라고 보는것이 내 생각이였고 상대방은 User테이블에 Project테이블의 FK 값이 직접적으로 존재하지 않으니 다대다 관계가 아니라는 것이다. 중간테이블을 만들게 되면 User테이..
2024.12.28 -
AWS 접속 및 RDS 설정하기 (Springboot)
AWS 접속 설정하기 ssh 접속하기 (MAC or LINUX) 매번 ssh -i pem키위치 ip주소 이런식으로 접속하기 귀찮으므로 키 위치를 복사한다. cp pem키위치 ~/.ssh/ cp ~/Documents/pem/example-directory/example.pem ~/.ssh/ 키가 잘 복사되었는지 확인해본다 cd ~/.ssh/ ll // 디렉토리 확인 복사된 키의 권한을 변경한다. chmod 600 ~./ssh/pem키이름 ~/ssh 디렉토리에서 config파일을 생성한다.(확장자 없음) vim ~/.ssh/config 이후 config파일에 아래와 같이 작성 # 주석 Host "서비스명" HostName "EC2 IP주소" User ec2-user IdentityFile ~/.ssh/pem..
2024.01.03 -
Mybatis 간단 사용법 익히기
Mybatis란? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와 파라미터 설정및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. Mybatis 적용해 보기 application.properties에 mybatis 등록 #mybatis - mybatis/mapper 하위에 있는 모든 디렉토리에 모든 xml파일을 사용한다는 의미, 대신 @Mapper와 namespace가 자기이름과 같은것을 매핑한다. mybatis.mapper-locations=classpath:myb..
2023.11.21 -
MySQL 기초
참고 자료 생활코딩 - 데이터베이스 2012.04.04 생활코딩 - DATABASE 1&2 - MySQL 2018.02.11 개인의 공부 내용을 기억하고 기록하기 위한 목적이 크기에 일부 설명이 생략 되거나 예제의 오류가 있을 수 있습니다. CRUD 생성: CREATE DATABASE ; 조회: SHOW DATABASES; 사용: USE ; 삭제: DROP DATABASE ; # 삽입 insert into `student` values(id, "taylor", "man", "경기도 용인시", "2020-02-11 00:00:00"); # 업데이트 update `student` set address="경기도 용인시" where id=9; # 삭제 delete from `student` where id=0;..
2023.11.17