본문 바로가기

Database

(7)
SQL 활용(서브쿼리, 집합연산자, 그룹함수, 윈도우 함수) 1. 서브쿼리(Subquery) 하나의 쿼리 안에 존재하는 또다른 쿼리로 위치에 따라 아래와 같이 나눌 수 있다. SELECT 절 : 스칼라 서브쿼리 FROM 절 : 인라인 뷰 WHERE절, HAVING 절 : 중첩 서브쿼리 2. 집합 연산자 1) UNION ALL QUERY1의 결과와 QUERY2의 결과를 그대로 합하는 것으로 중복된 행도 그대로 출력된다. 2) UNION QUERY1의 결과와 QUERY2의 결과를 합한 후 중복을 제거하여 출력한다. 3) INTERSECTION QUERY1의 결과와 QUERY2의 결과에서 공통된 부분만 중복을 제거하여 출력한다. 4) MINUS / EXCEPT QUERY1의 결과에서 QUERY2의 결과를 제거하고 출력한다. 3. 그룹 함수 데이터를 GROUP BY 하여..
SQL 기본(GROUP BY, HAVING, ORDER BY, JOIN) GROUP BY, HAVING 절 1. GROUP BY GROUP BY는 말 그대로 데이터를 그룹별로 묶을 수 있도록 해주는 절이다. GROUP BY 뒤에는 그루핑의 기준이 되는 컬럼이 오게 된다. 컬럼은 하나 이상이다. 2. 집계 함수 데이터를 그룹별로 데이터를 도출할 수 있게 해준다. 3. HAVING HAVING 절은 GROUP BY 절을 사용할 때 WHERE 절처럼 사용흐는 조건절이라고 생각하면 되는데 주로 데이터를 그루핑한 후 특정 그룹을 골라낼 때 사용한다. SELECT문의 논리적 수행 순서 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY HAVING 절은 논리적으로 GROUP BY 절 이후에 수행되기 때문에 그루핑 후에 가능한 집계 함수로 조건을..
SQL 기본 (SELECT, WHERE) SELECT 문 1. SELECT 저장되어 있는 데이터를 조회할때 사용하는 명령어 SELECT 컬럼1, 컬럼2, ... FROM 테이블 WHERE 컬럼1 = '아무개'; 컬럼을 따로 명시하지 않고 *(ASTERISK)를 쓰면 전체 컬럼이 조회된다. WHERE절이 없으면 테이블의 전체 ROW가 조회된다. 테이블명이나 컬럼명에 별도의 별침(Alias)을 붙여줄 수 있는데 붙여주는 목적은 요즘 우리가 줄임말을 즐겨 쓰는 이유와 비슷하다. SELECT BAND.BAND_NAME, BAND_MEMBER.MEMBER_NAME FROM BAND, BAND_MEMBER WHERE BAND.BAND_CODE = BAND_MEMBER.BAND_CODE; V SELECT B.BAND_NAME, BM.MEMBER_NAME F..
데이터 모델과 SQL 정규화 데이터 정합성을 위해 엔티티를 작은 단위로 분리하는 과정이다. 정규화를 통해 조회성능은 처리 조건에 따라 향상될수도 저하될수도 있다. 입력, 수정 삭제 성능은 일반적으로 향상된다. 1. 제 1 정규형 모든 속성은 반드시 하나의 값만 가져야 한다. V 제 1 정규형의 이상현상 삽입 이상 : 학생이 새 과목을 수강 신청할 때 반드시 학생의 학과와 지도교수를 알아야 한다.(불필요 정보) 삭제 이상 : 300번 학생이 C400 과목을 취소하면, 해당 과목에 대한 정보가 모두 사라진다. 갱신 이상 : 100번 학생이 지도교수를 변경할 때, P1인 행을 모두 찾아서 변경해야 한다. 제1 정규형의 이상현상 원인 기본키가 아닌 속성들이 기본키에 완전 함수 종속되지 못하고 부분 함수 종속되어 있기 때문이다. 학번..
SQL_데이터 모델링의 이해 모델링이란? 데이터 베이스에서의 모델링이란 '현실 세계를 단순화하여 표기하는 기법'이다. 특징 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현한것. 즉, 아이디어나 개념을 간략하게 표현하는 것이다. 단순화(Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현한다는 의미이다. 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술한다는 의미이다. 모델링의 세가지 관점 데이터 관점(What, Data) : 데이터 위주의 모델링으로 어떤 데이터들이 업무와 얽혀있는지, 그리고 그 데이터간에 어떤 관계가 있는지에 대해 모델링하는 방법 프로세스 관점(How, Process) : 프로세스 위주의 모델링으로 이 업무가 실제로 처리하고 있는 ..
[MySQL] 인덱스 스캔 방식의 종류 및 특징 인덱스 스캔 방식을 알아보기전 where절 가공방식에 대해 설명해 드리겠습니다. WHERE절의 좌변이 아닌 우변을 가공할 것 숫자형 컬럼 인덱스 가공 SELECT ename, sal*12 FROM emp WHERE sal * 12 = 36000; -> SELECT ename, sal*12 FROM emp WHERE sal = 36000/12; 문자형 컬럼 인덱스 가공 SELECT ename, job FROM emp WHERE substr(job,1,5)='SALES'; -> SELECT ename, job FROM emp WHERE job LIKE 'SALES%'; 날짜형 컬럼 인덱스 가공 SELECT ename, hiredate FROM emp WHERE DATE_FORMAT(hiredate, '%Y'..
[Database] 인덱스의 개념, 장단점 인덱스는 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조입니다. 개념 인덱스는 위 사진에서 볼 수 있듯이 Table의 1개 혹은 여러개의 컬럼을 Key로 삼고, 해당 Key의 물리적인 주소값을 저장해 둡니다. 흔히 인덱스를 책의 색인과 비유하곤 하는데 우리가 책의 내용중 특정 내용을 찾기위해 책 전체 내용을 보는것은 비효율 적입니다. 그래서 맨뒤 혹은 맨 앞에 저자들이 색인을 추가해 주는데 데이터베이스의 색인 기능이 바로 Index입니다. 장점 인덱스는 데이터의 주소값을 갖고 있다. 주소값을 통해 원하는 값을 빠르게 찾을 수 있다. 시스템의 부하를 줄일 수 있다. 단점 정렬된 상태의 유지. -> INSERT, UPDATE, DELETE를 통해 데이터가 추가되거나 값이 바뀐다면 Index..