본문 바로가기

Database/MySQL

(7)
[MySQL] JOIN (INNER, OUTER[LEFT, RIGHT]) 정리 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] 두 개 이상의 Table을 조합하여 결과를 출력해야 할 때 사용되는 것이 JOIN이다. JOIN은 크게 INNER, OUTER JOIN으로 구분되며, OUTER JOIN에선 LEFT OUTER JOIN과 RIGHT OUTER JOIN으로 구분된다. OUTER JOIN에선 LEFT, RIGHT 말고도 추가로 FULL OUTER JOIN도 존재한다. 다만 MySQL에선 FULL OUTER JOIN이 지원이 되지 않기에 INNER JOIN과 OUTER JOIN을 활용해서 만들어야 한다. JOIN의 처리에서 어느 테이블을 먼저 읽을지를 결정하는 것은 상당..
[MySQL] Group By ~ Having 사용하기 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] Table 내에 데이터를 집계 내어 출력하고자 하는 일이 있을 때 사용 문법이 Group By다. Group By는 Where 절 다음에 사용할 수 있으며, 특정 Column을 기준으로 그룹으로 만든다. SELECT 컬럼 FROM 테이블 WHERE condition GROUP BY 컬럼 HAVING condition; Column을 Group으로 잡으면 해당의 UNIQUE한 값에 따라서 데이터를 Group로 만들고, 중복된 열은 제거가 된다. 다음의 쿼리를 입력하여 예제를 실습해보자. create database ldhTest; use ldhTes..
[MySQL] MySQL 테이블 [생성/수정/삭제] 실습 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] 이번 MySQL를 통해 Database 생성, Table CRUD를 처리하는 방법에 대해 정리해보자. MySQL이 설치된 환경은 AWS CentOS로 버전은 5.7을 사용한다. Database 조회 및 생성 다음의 명령어를 통해 데이터베이스 조회가 가능하다. SHOW DATABASES; 이번엔 새로운 데이터베이스를 생성하여 이용해보도록 하자. 다음의 명령어를 통해 새로운 데이터베이스를 생성하자. CREATE DATABASE 데이터베이스 이름; 성공적으로 데이터베이스가 실행된 것을 볼 수 있다. 이번엔 새로 생성한 데이터베이스에 접속하기 위해 다음의..
[MySQL] Table에 한글로 입력된 데이터가 삽입되지 않을 때 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] 특정 테이블에 한글로 입력된 데이터를 삽입해야 할 필요가 있을 수 있다. 그러나 기본 테이블은 UTF8이 설정이 되어있지 않기에 한글이 깨져서 나오는 문제가 발생한다. 다음과 같은 에러가 대표적인 케이스이다. mysql> ERROR 1366 (HY000) : incorrect string value : ''\x9A\xB1\xEC...' for column 'user_name' at row 1 이러한 문제를 해결하기 위해 다음의 2단계를 거쳐야한다. 1. Database설정 파일에서 default character-set을 UTF8로 설정하기 설정 ..
[MySQL] 특정 IP 대역 개방하여 외부에서 MySQL 접속 / 사용자 권한 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] 특정 IP 대역 개방하여 외부에서 MySQL 접속 localhost가 아닌 외부에서 DB에 접근하기 위해선 권한을 줘야 한다. 특정 IP대역에서 접속이 필요한 경우 다음과 같은 명령어를 통해 권한을 주도록 하자. GRANT ALL PRIVILEGES ON *.* TO 'root'@'IP Address' IDENTIFIED BY '비밀번호'; 굳이 모든 권한과 root 계정을 부여할 필요는 없다. 필요 권한을 제한하고자 할 땐 Grant ~ to 명령어를 통해 권한을 축소시켜 부여할 수 있다. 사용자 권한 Grant 명령어의 기본 문법은 다음과 같다..
[MySQL] MySQL 초기 설치시 Access denied가 뜰 경우 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] CentOS에서 최신 버전의 MySQL 최초 실행 시 Access denied for user 'root'@'localhost' (using password: NO)라는 에러 메시지가 나올 수 있다. root 계정의 패스워드가 틀력 접속이 거부되는 현상인데, 설치하고 패스워드를 설정하지 않았는데도 이러한 문제가 발생한다. MySQL은 최초 설치후 root 비밀번호는 임시로 자동 생성된다. 임시 비밀번호는 다음 경로의 로그파일에서 확인이 가능하다. /var/log/mysqld.log vi나 vim으로 편집기를 열어 들어가면 여러 가지 로그가 남아있을..
[MySQL] AWS CentOS MySQL 설치 [해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] 이번에 AWS에서 DB를 설치해야 할 일이 있었기에 간단하게 정리하고자 한다. 설치 환경은 AWS CentOS로, MySQL 버전은 5.7 버전을 설치한다. CentOS가 지원하는 yum을 통해 설치한다. 1. rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm -> MySQL 5.7 버전에 대한 repository를 추가한다. 2. yum install mysql-community-server -> MySQL 5.7 버전을 설치한다. 3. systemctl ..