SQL 이것저것 18

[SQL] View

View란? 하나 이상의 테이블에서 여러 정보를 토대로 만들어지는 가상의 테이블 고객이 킥보드를 빌리려고 할 때 어떤 정보(테이블)을 보여줘야 할까? → 킥보드 정보를 담고 있는 kickboardInfo 테이블 킥보드 정보를 담고 있는 kickboardInfo 테이블? 킥보드 고유 ID, 킥보드 타입, 킥보드 연식, 등 → 고객이 킥보드를 대여하는데 불필요한 요소까지 포함되어 있음 킥보드 테이블에서 필요한 정보만 추출하여 가상의 테이블 생성 고객에게는 킥보드 가상 테이블을 제공, 보안성과 속도를 높일 수 있음 뷰(View) 생성 방법 CREATE VIEW '테이블 명' AS SELECT 가져오고자 할 속성 명, 속성 2 … FROM 가져오고자 할 속성이 있는 테이블 (WHERE 등 사용 가능) 여러 테이..

SQL 이것저것 2022.09.20

[SQL] 정규화

정규화란? 테이블 간 데이터 조작(삽입, 수정, 삭제) 시 발생 할 수 있는 이상 현상을 줄이기 위해 하는 작업 1차 정규화 ~ 5차 정규화 BCNF → 다양한 정규화 종류가 있지만 1~3차 정규화까지 진행하면 대부분의 이상현상을 없앨 수 있음 1차 정규화 (1NF) 각 속성 마다 값이 1개씩 존재하도록 하는 과정 (원자화) 10월 1일에 엘리스 토끼가 대여한 정보를 삭제한다면? ↓ 친구 도도새가 엘리스 토끼가 만들어 둔 테이블에 데이터를 넣어두었다. 1차 정규화를 하기 위해서는 어떻게 고쳐야 할까? → 대여한 킥보드ID ~ 대여한 킥보드 연식 속성들이 각각 1개의 값만 가지도록 수정 2차 정규화(2NF)란? 복합키로 구성 되어있을 때 고려해야하며 모든 속성이 완전 함수 종속이 되도록 하는 작업 완전 함..

SQL 이것저것 2022.09.20

[SQL] 데이터베이스 준비하기

데이터베이스란? 데이터베이스란 공유하여 사용할 목적으로 체계화하여 관리하는 데이터의 집합 관계형 데이터베이스 (RDB) - 각 테이블 간 관계 O - 스키마 O - 구조적으로 안정적이나 유연하지 못함 비관계형 데이터베이스 (NoSQL) - 각 테이블 간 관계 X - 스키마 X - 유연성을 가지고 있으나 구조 결정이 어려움 → 상황과 조건에 맞춰 적절한 데이터베이스를 선택하는 것이 중요 데이터모델링이란? 효율적으로 데이터베이스를 구축하기 위해 데이터베이스의 뼈대를 세우는 작업 요구 사항 정리 데이터가 어떠한 형태, 어떤 목적을 가지고 있는지 정리 개념적 데이터 모델 설계 핵심 개체를 찾고, 각 개체 간의 관계를 정리 논리적 데이터 모델 설계 실제 데이터베이스로 구현하기 위한 모델링 ( 관계형 DB에 넣기 ..

SQL 이것저것 2022.09.16

[SQL] 그룹 함수

그룹 함수란? 데이터를 통계 내기 위해서는, 전체 데이터에 대한 통계는 물론이고 데이터 일부에 대한 소계, 중계 또한 필요 각 레벨 별 SQL을 UNION문 으로 묶어 작성할 수도 있으나 ORACLE DB에서는 이러한 통계 데이터를 위한 몇 가지 함수를 제공 SELECT D.NAME AS DEPARTMENT_NAME, J.NAME AS JOB_NAME, AVG(E.SALARY) AS AVG_SALARY FROM EMPLOYEE E JOIN DEPARTMENT D ON E.DEPARTMENT_ID = D.ID JOIN JOB J ON E.JOB_ID = J.ID GROUP BY D.NAME, J.NAME ORDER BY D.NAME, J.NAME; ROLL UP 그룹화하는 컬럼에 대한 부분적인 통계를 제공..

SQL 이것저것 2022.09.16

[SQL] 윈도우 함수

데이터 분석을 위한 함수 - 윈도우 함수 (Window fuction) - 집계 함수 (Aggregate function) - 그룹 함수 (Group function) 윈도우 함수 - 행과 행간의 관계를 만들어주는 함수 (RANK, DENSE-RANK) - 순위, 집계 등 행과 행 사이의 관계를 정의하는 함수 OVER 구문을 필수로 한다 SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITION BY 칼럼] [ORDER BY 절] [WINDOWING 절] ) FROM 테이블 명; - ARGUMENTS : 윈도우 함수에 따라서 필요한 인수 - PARTITION BY : 전체 집합에 대해 소그룹으로 나누는 기준 (특정 컬럼에 대해 기준을 설정해줄 수 있음) - ORDER ..

SQL 이것저것 2022.09.14

[SQL] View(뷰)

VIEW 뷰는 다른 테이블에서 파생된 테이블이다. 물리적으로 데이터가 저장되는 것이 아니라, 논리적으로만 존재하며 뷰를 사용한 질의 시에는 DBMS에서 뷰 정의에 따라 질의를 재작성하여 수행한다. VIEW의 장점 독립성 : 테이블 구조가 변경되어도 뷰를 사용하고 있는 응용 프로그램은 변경하지 않아도 된다 편리성 : 자주 사용되는 복잡한 쿼리를 미리 뷰로 정의해 놓으면, 추후 쿼리는 간단한 형태로 표현할 수 있다 보안성 : 사용자의 권한에 따라 열람 가능한 데이터를 다르게할 수 있다. 권한에 따라 확인 가능한 컬럼을 정의하여 뷰를 생성하면, 기본 테이블 노출 없이 접근 제어를 할 수 있다 VIEW의 특징 - 생성된 뷰는 또 다른 뷰를 생성하는데 사용될 수 있다 (뷰 테이블을 만든다면 추후 다른테이블에도 재..

SQL 이것저것 2022.09.10

[SQL] 서브쿼리

서브쿼리 분류 서브쿼리에 메인쿼리의 컬럼이 포함되는지에 따라 구분 - 연관 서브쿼리(Correlated Subquery)) - 비연관 서브쿼리(Un-Correlated Subquery) 연관 서브쿼리 메인쿼리의 컬럼이 서브쿼리에 포함되며, 메인쿼리의 컬럼은 서브쿼리에 특정 조건으로 사용된다 SELECT * FROM A WHERE A.a > (QUERY) # 메인쿼리의 테이블에 서브쿼리의 조건으로 사용되는 것을 연관서브쿼리라 함 본인이 속한 부서의 평균 급여보다 높은 급여를 받는 직원들을 출력 SELECT ID, DEPARTMENT_ID, NAME, SALARY FROM EMPLOYEE A WHERE SALARY > # 본인이 속한 부서의 평균 급여 (SELECTAVG(SALARY) FROM EMPLOYE..

SQL 이것저것 2022.09.10

[SQL] JOIN

JOIN(교집합) 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것 EQUI JOIN(등가 교집합) 두 개의 테이블 간에 서로 정확하게 일치하는 경우를 활용하는 조인 간단히 말해, 등가 연산자를 사용한 조인을 의미 대부분 기본키-외래키 관계를 기반으로 발생하나, 모든 조인이 그런 것은 아니다 - 기본적으로 A테이블과 B테이블이 개발자나 관리자에 의해 만들어 지지만, 꼭 이런 형태이진 않다,. Non EQUI JOIN(비등가 교집합) 두 개의 테이블 간에 서로 정확하게 일치하지 않는 경우를 활용하는 조인 등가 연산자 이외의 연산자들을 사용한 조인을 의미 - 일반적으로 많이 사용되진 않음 INNER JOIN 내부 JOIN 이라고 하며 JOIN 조건에서 동일한 값이 있는 행만 반환 INNER ..

SQL 이것저것 2022.08.30

[SQL] 계층형 질의

계층형 질의란? 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용하는 것 계층형 데이터를 데이터베이스 마다 질의하는 방법이 다름 - ORACLE - SQLSERVER 계층형 데이터 - 동일 테이블에 계층적으로 상위와 하위 데이터가 포함되어 있는 데이터 사원의 관리자는 하위 데이터이기 때문에 관리자는 A라는 것을 알 수 있다. 이를 상위 데이터와 하위데이터를 사원과 관리자를 서로 순환 관계 데이터라고 보며 이를 계층형 구조라고 한다. - START WITH 는 어떤 데이터가 최상위 데이터가 될 것인지 기준을 잡아주는 것임 (부모컬럼 - 관리자가 NULL 최상위 데이터를 잡아주는 것이다.) - CONNECT BY 연결을 시켜줌, 자식과 부모의 관계를 연결시켜주는 방식임 SELECT LEVE..

SQL 이것저것 2022.08.30

[SQL] Standard SQL

이외에도 비관계형 데이터베이스(NOSQL)도 존재한다. (대표적으로 MongoDB) 알고자 하는 데이터를 조회하기 위해 이들을 사용하게 된다. 일반 집합 연산 두개의 테이블에서 특정 테이블을 본다고 하였을 때, 보는 관점에 따라 동일한 차집합 연산이 될 것이다, 카티션 곱은 가능한 모든 경우의 수를 나타내게 된다. 실제 데이터 베이스에서 어떤 키워드로 사용되는지 볼 수 있다. 주요로 볼건, 카티션 곱은 해당하는 데이터에서 모든 경우의 수를 보여주게 된다. 순수 관계 연산 순수 관계 연산 별 SQL 셀렉션 - 시그마로 표시되며, 3보다 작은 값을 추출하라는 의미 프로젝션 - 파이로 표시되며, 컬럼조건에 대한 어떤 관계정보인지 들어간다. 조인(세타조인, 동등조인, 자연조인, 외부조인) - 조인은 세타조인, ..

SQL 이것저것 2022.08.30