본문 바로가기

반응형

SQL

(5)
[MySQL] 그룹별 최대 or 최소 select하기 들어가며 SQL에서 제공하는 그룹 함수인 max(), min()을 이용하면 테이블에서 가장 큰 값과 작은 값을 쉽게 구할 수 있다. 하지만 각 그룹당 최대값과 최소값은 어떻게 구할 수 있을까? 예를 들면, 각 플레이어의 최고 점수는 얼마인가? 각 장르별 가장 인기있는 영화는? 이번 포스트에서는 각 항목에서 상위 1개 행을 구하는 방법에서 시작하여 N개 행을 선택하는 방법 까지 다뤄 보도록 하겠다. 본격적인 내용으로 들어가기 전에 이번 포스트에서 사용할 예제 테이블은 아래와 같다. CREATE TABLE `fruits` ( `type` VARCHAR(50) NOT NULL COMMENT '과일 종류/그룹', `variety` VARCHAR(50) NOT NULL COMMENT '과일 품종', `price`..
SQL 쿼리 프로파일링 심심 풀이로 쿼리를 '발'로 짜다 보니 이중 삼중의 조인쿼리와 서브쿼리가 한데 어우러진 아주 복잡 미묘한 쿼리를 만들게 되었습니다. 암튼 중요한 것은 바롤 짠 쿼리가 아니라 이 쿼리가 과연 정상적인 성능을 낼 수 있을까 하는 의문이 들더군요. MySQL을 대상으로 만들긴 했지만, MySQL에서 사실 쿼리가 어떤 순서로 실행 되는지도 모르고(쿼리 계획 이라고 하는 것 같던데..) 내부 구조에도 아는 바가 없어 고민하며 프로파일링 툴을 찾다가 몇 가지 재미있는 링크들을 찾아 간만에 포스팅을 하나 올립니다. 일단 explain 이라는 쿼리 플랜을 보여주는 명령어가 있더군요. SQL 표준이 아닌지라, MySQL에서는 select 절만 지원한다고 하는데, 오라클이나 좀 빵빵한 DB들은 explain을 update..
[MySQL] 서브(Sub) 쿼리 서브쿼리란? 하나의 테이블에서 검색한 결과를 다른 테이블에 전달하여 새로운 결과를 검색하는 것입니다. 예를 들어 A라는 테이블에서 검색해 나온 결과만을 대상으로 다시 한번 더 쿼리를 날린다는 것입니다. 참고로 하나 이상의 테이블을 연결하여 검색하는 기능은 조인(Join) 쿼리라고 합니다. 기본 문법 SELECT coulmn_name FROM table_name WHERE column_name = ( SELECT column_name FROM table_name WHERE column_name = some_value ); 생각 보다 간단하지 않나요? 기본적인 것은 일반 쿼리와 동일 합니다. 다만, where 에 조건으로 오는 것이 일반 컬럼이 아니라 또 다른 쿼리라는 것이 차이점 입니다. 실행 순서는 괄호..
[MySQL] 조인(Join) 쿼리 조인(Join)의 개념 조인은 여러개의 테이블을 결합하여 데이터를 검색 하는 것입니다. 예를 들어 A와 B라는 테이블을 따로 select하는 것이 아니라 동시에 select를 한다고 생각하시면 됩니다. 그 결과 중 특정 컬럼들의 값을 비교해서 같은 것들(혹은 다른 것들)만 select한다던지 하는 것을 조인이라고 합니다. where 절로 구분 하는 방법에 따라 여러가지 이름으로 불리고 있지만 간단한 개념이 이렇다는 것입니다. 조인(Join)의 종류 연산자에 따른 분류 : EQUI JOIN : 테이블들의 컬럼 값들이 일치하는 경우('=' 연산자 사용) NON-EQUI JOIN : 테이블드릐 컬럼 값들이 일치하지 않는 경우('' 와 같은 비교 연산자 사용) FROM 절의 JOIN형태에 따른 분류 INNER ..
SQL command CREATE DATABASE 새로운 데이터베이스를 생성 CREATE TABLE ( schema.. ) 새로운 테이블을 생성 ex) CREATE TABLE tab (val INT); INSERT INTO [(field Name, ... )] VALUES (data, ...) CREATE문으로 생성된 테이블에 데이터를 저장 UPDATE SET = WHERE expr UPDATE 문은 INSERT 문으로 저장되어 있는 데이터 수정 DELETE FROM WHERE expr 테이블에 있는 데이터를 삭제 할때 사용하는 쿼리문 테이블 자체를 삭제하는 DROP과 구분 되어야 한다. ALTER TABLE ADD 테이블에 새로운 필드 추가 ex) ALTER TABLE tableName ADD newFieldName var..

반응형