JSON_EXTRACT, [- >>] mysql 내에 배열 값을 저장했는데 배열 값 내의 특정 값을 산출해서 결과값을 뽑아내야 하는 상황이 생겼다. 물론 실질적으로 mysql은 배열을 저장할 수 있도록 도와주지는 않는다. 하지만 배열을 문자열처럼 저장해서 파싱해 사용하는 식으로 사용하는 경우가 있기에 기록을 남겨두려고 한다. 방법은 위의 함수나 연산자를 사용해서 인덱스 값을 뽑을 수 있다. CREATE TABLE example_table ( id INT AUTO_INCREMENT PRIMARY KEY, data JSON);INSERT INTO example_table (data) VALUES('[{"select": 1, "value": "a"}, {"select": 2, "value": "b"}, {"select": 3, "val.. 2024. 6. 26. CTE 사내에서 대시보드 관련 집계 쿼리를 짜면서 단순한 테이블 조회가 아닌 필요한 데이터를 뽑아 그 내에서 또 추출하는 작업을 진행했다. 이를 진행하면서 서브쿼리가 아닌 CTE를 활용했는데 이를 정리하려고 한다. 정의CTE, Common Table Expression의 줄임말이다. 파생 테이블이라는 개념으로 생각하면 된다. CTE를 비교하려면 서브쿼리보다는 데이터베이스의 뷰와 비교를 해볼 수 있는데 뷰는 사전에 정의해서 권한을 부여하고 작성하는 반면에 CTE는 1회성으로 권한이 필요하지 않고 쿼리문이 끝날 때까지 지속되는 일회성 테이블이다. 활용 예시사내에서 작성했던 코드말고 내가 자주했던 게임의 데이터를 서버장으로부터 받았던 적이 있어 이를 가지고 비교해보겠다. WITH map_players_counts A.. 2024. 6. 19. dump한 데이터베이스가 실행 안될 때 회사에서 개발용 데이터베이스가 존재하긴 하지만 프론트엔드 개발자도 다 같이 사용하고 있다보니 테이블을 지우거나 하는 부분에서 오류가 날 것 같아 내 로컬에서만 동작하도록 환경을 바꾸고 업무를 진행하기 위해 데이터베이스를 덤프시켰다. 덤프시킨 이후로 설정을 변경해 프로젝트를 실행시켰을 때, 데이터베이스와 프레임워크 간의 연결을 잘 되었지만 이상하게 일부 쿼리에서 오류가 발생했다. 오류 메시지는 단순히 사내 코드에서의 콜백 리턴이었어서 정확한 이유를 찾을 수가 없었다. 수석님께 말씀드렸을 때, mysql 설정 쪽이 문제일 것 같다고 말씀해주셨고 설정 관련해서 이것저것 삽질하며 찾아갔고 어떤 부분을 고쳐주어야 하는지 남겨두려고 한다. 설정이 문제였다고 확신설정이 문제였다고 나 또한 확신할 수 있었던 것은 my.. 2024. 5. 22. mysql dump mysql을 통해 데이터베이스를 덤프 띄워서 로컬에 따로 저장하여 개발하는 환경을 구축해야될 이유가 생겨 덤프하는 과정을 적어두려고 한다. Mysql 설정현재 mac을 사용하는 환경으로 Homebrew를 사용해 mysql을 설치했다. 설치 과정에서 기본적인 설정 값을 입력하지 않아 root 계정이 존재하지 않았고 이 부분을 추가해주었다. brew install mysql만약 mysql을 삭제하고 다시 시작하는 사람은 아래 과정을 먼저 진행한다. brew services stop mysqlbrew uninstall mysql이 과정을 먼저 진행해주고 mysql을 재설치한다. mysql.server startmysql을 실행시킨다. mysql_secure_installation다음 명령어를 실행시킨다. 실행.. 2024. 5. 13. 이전 1 다음