mysql
-
Real MySQL - Global, Session, Dynamic, Static variableMySQL 2017. 8. 5. 11:43
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. - 포스팅에 포함된 Query 결과는 AWS EC2 FreeTier(CentOS7.2) 환경에 MySQL v5.7.17 에서 실행한 결과를 포함하였습니다. 실행환경에 따라 Query 실행시간이나 RDBMS 실행계획이 다를 수 있습니다. - 샘플 코드 dump 파일 적용안내 : http://cafe.naver.com/realmysql - 샘플 코드 dump 파일 경로 : http://github.com/wikibook/realmysql/archive/master.zip 서버 설정 - MySQL 서버는 단 하나의 설정 파일만 사용한다. (..
-
Real MySQL [7-1] 쿼리 작성 및 최적화 - SQL 모드, MySQL 예약어MySQL 2016. 12. 23. 20:36
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 쿼리 작성 및 최적화 애플리케이션에서 데이터를 저장 또는 조회하기 위해 데이터베이스와 통신할 때 데이터베이스 서버로 전달되는 것은 SQL 뿐이다. SQL은 어떠한 데이터를 요청하기 위한 언어이지, 어떻게 데이터를 읽을지를 표현하는 언어는 아니므로 C나 자바와 같은 언어와 비교했을 때 상당히 제한적으로 느껴질 수 있다. 하지만 쿼리가 빠르게 수행되게 하려면 쿼리가 어떻게 데이터를 가져올지 예측할 수 있어야 한다. 그래서 SQL을 작성하는 방법이나 규칙은 물론, 내부적인 처리 방식(옵티마이저)에 대해 어느 정도의 지식이 필요하다. SQL ..
-
RDBMS - 식별관계, 비식별관계MySQL 2016. 12. 20. 22:29
Exerd를 보다가 문득 테이블간의 Cardinality를 표현하는 선이 점선, 실선으로 구분되는 것을 보고 무엇을 의미하는지 구글링 찾은 내용을 정리해본다. 식별관계 (실선) 부모 테이블(학과)의 유니크 키나 기본키로 지정된 컬럼(학과번호)이 자식 테이블(학과강의실)의 기본키 컬럼(학과번호)과 연결된 경우 실선으로 표기되고 식별 관계라고 한다 비식별관계 (점선) 부모 테이블(학과)의 유니크 키나 기본키로 지정된 칼럼(학과번호)이 자식테이블(학생)의 일반 컬럼과 연결된 경우 점선으로 표기되고 비식별 관계라고 한다. 부모 컬럼을 참조하는 자식 컬럼이 식별(PK) 가능하면 식별 관계라고 하고 식별이 가능하지 않으면 비식별 관계라고 한다. 즉, 자식 컬럼이 PK 인지 아닌지에 따라 식별 관계, 비식별 관계로 ..
-
Real MySQL [6-8] 실행계획 - GROUP BYMySQL 2016. 12. 13. 23:29
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. GROUP BY 처리 GROUP BY 또한 ORDER BY와 같이 쿼리가 스트리밍된 처리를 할 수 없게 하는 요소 중 하나다. GROUP BY 절이 있는 쿼리에서는 HAVING 절을 사용할 수 있는데 HAVING 절은 GROUP BY 결과에 대해 필터링 역할을 수행한다. 일반적으로 GROUP BY 처리 결과는 임시 테이블이나 버퍼에 존재하는 값을 필터링하는 역할을 수행한다. GROUP BY 에 사용된 조건은 인덱스를 사용해서 처리될 수 없으므로 HAVING 절을 튜닝하려고 인덱스를 생성하거나 다른 방법을 고민할 필요가 없다. GROUP..
-
MySQL UnionMySQL 2016. 12. 5. 20:21
MySQL - UNION MySQL 과 같은 RDBMS에서 사용하는 Union 연산자는 여러 테이블에 존재하는 같은 성격의 값을 한번의 쿼리로 추출할 수 있도록 돕는다. Member 테이블에 회원 이메일이 있고, Newsletter 테이블에 구독자 이메일이 있는데, 모든 이메일로 메일을 보내고자 할 경우 두 번의 쿼리와 병합 프로그램을 만들어야 할 것이다. 이럴 때 union 연산자를 사용해 한번의 쿼리로 간단하게 정보를 추출할 수 있다. Union을 사용할 때 주의할 점 - 대응하는 필드의 이름이 같아야 한다. 같지 않다면 AS를 사용하여 같게 만든다. - 대응되는 각 필드의 타입이 같아야 한다. 예제 테이블 정보 위의 두 테이블에서 이메일을 추출해야 할 경우 union을 사용하면 간단하다. 중복되지 ..