Database/Maria,Mysql

e-koreatech 데이터베이스 학습 정리

bluebamus 2022. 1. 17.

https://e-koreatech.step.or.kr/page/lms/?m1=course%25&m2=course_detail%25&course_id=181633%25&filter_list=query%3D%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4%26sort%3Dcreation_day%2FDESC%25&btn_mode=AlbumList%25 

 

e-koreatech

 

e-koreatech.step.or.kr

 

* 기본적인 것들은 제외하고, 정리가 필요한 부분만 기록함

 

1. 평가

    1) 다루는 DB : MS-SQL 기준

        - mysql 등에서 없는 옵션들이 있기에 고려하고 학습해야함

 

2. 서브쿼리

    1) 주의 사항

        - 성능의 문제가 발생할 수 있음, join으로 대체하는 것을 추천함

        - 중첩 질의문 사용 시 오루가 없도록 IN, ANY, ALL을 기본적으로 사용함

        - ORDER BY는 의미가 없음

    2) 다중행 비교 연산자

        - IN : 속성값이 여러 값들 중 하나이기만 하면 참, = OR의 의미

        - ANY 또는 SOME : 메인 쿼리 비교 조건에서 서브 쿼리 결과와 하나라도 일치하면 참

            IN과의 차이점은 >, >=, <=, < 과 같은 범위 비교와도 같이 사용 가능

        - ALL : 메인 쿼리 결과가 하나라도 존재하면 참이 되는 연산자

        - NOT EXISTS : EXISTS와 상반되는 연산자

https://pakker.tistory.com/108?category=856845 

 

서브쿼리

1. 다중 행 서브쿼리 서브쿼리의 결과가 2건 이상 반환 될 수 있다면 반드시 다중 행 비교 연산자와 함께 사용 해야 한다. 그렇지 않으면 sql 문은 오류를 반환한다. 연산자 내 용 IN (서브쿼리) 서

pakker.tistory.com

 

3. 집합 연산자와 집단 연산자 

    1) 집합 연산자

        - union : 합집합

        - intersect : 교집합

        - except : 차집합

 

    2) 집합 연산자와 join의 차이

        - JOIN과 UNION의 가장 큰 차이점은 JOIN이 두 릴레이션의 튜플을 결합하고 결과 튜플이 두 릴레이션의 속성

          을 포함한다는 것입니다. 반면 UNION은 두 개의 SELECT 쿼리 결과를 결합합니다.

 

       - JOIN 절은 관련된 두 관계에 둘 다 공통 인 속성이 하나 이상있는 경우에만 적용 할 수 있습니다. 반면 UNION              은 두 릴레이션이 같은 수의 애트리뷰트를 갖고 해당 애트리뷰트의 도메인이 동일 할 때 적용 가능합니다.

 

       - JOIN INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN의 네 가지 유형이 있습니다. 그러나 UNION,                  UNION 및 UNION ALL의 두 가지 유형이 있습니다.

 

       - JOIN에서 결과 터플은 두 릴레이션의 애트리뷰트를 포함하므로 더 큰 크기를 갖는다. 반면 UNION에서는 튜플   

         에 포함 된 관계의 튜플을 포함하여 튜플 수가 증가합니다.

 

       - 결론 :  데이터 결합 연산은 둘 다 다른 상황에서 사용됩니다. JOIN은 적어도 하나의 속성이 공통 인 두 릴레이션

         의 속성을 결합하고자 할 때 사용됩니다. UNION은 쿼리에있는 두 릴레이션의 튜플을 결합 할 때 사용됩니다.

 

    3) 집단 연산자

        - 집단함수 (count 등...)

https://reeme.tistory.com/51

 

[SQL] 집단연산자 - 집단함수( sum / avg / count /max / min / stdev / var ) , group by / having

집단 함수 : 테이블의 전체 행을 하나 이상의 컬럼을 기준으로 그룹화하여 해당 그룹 별 통계 값을 출력하는 함수 (통계함수, 그룹함수라고도함) -- select 절에만 사용가능 from/where 자리에 사용불

reeme.tistory.com

        - group by, having

https://jjine926.tistory.com/80?category=938129 

 

[SQL] #6 집합 연산자, 집단 연산자, GROUP BY

✔ 집합 연산자 : 테이블을 구성하는 튜플 집하에 대한 테이블의 부분 집합을 결과로 반환하는 연산자 ① UNION (합집합) / UNION ALL (중복허용 합집합) ② INTERSECT (교집합) ③ EXCEPT (차집합) * 조건 -

jjine926.tistory.com

https://pakker.tistory.com/109

 

그룹 함수-rollup, rollup orderby, grouping

GROUP BY로 그룹핑한 로우들의 갯수나, 합계 등을 구해주는 기능이있다. oracle에서는 ROLLUP인데 mysql에서는WITH ROLLUP을 사용한다. 1. oracle select count(*) 'total empl', sum(SAL) 'total sal' from EMP,..

pakker.tistory.com

        - rollup, cube

https://pakker.tistory.com/110?category=856845 

 

그룹함수 - cube

rollup은 총 갯수, 총 합계 등만 가능했지만, cube는 결합 가능한 모든 값에 대하여 다차원 집계를 생성한다. 간단한 합계는 rollup을 사용하며, 다차원, 복합 합계는 cube를 사용한다. cube는 다차원, 복

pakker.tistory.com

https://pakker.tistory.com/111?category=856845 

 

그룹함수 - Grouping sets

grouping sets를 통해 더욱 다양한 소계 집합을 만들 수 있다. 문장을 여러번 반복하지 않아도 원하는 결과를 쉽게 얻을 수 있게 되었다. 그룹함수 종류가 여러가지라 상황에 따라 잘 사용 할 것. 다

pakker.tistory.com

 

4. 인덱스와 뷰

    1) 인덱스

        1-1) 인덱스가 효율적인 경우

            - WHERE 절이나 조인 조건절에서 자주 사용되는 칼럼의 경우

            - 전체 데이터 중에서 10~15% 이내의 데이터를 검색하는 경우

            - 두 개 이상의 칼럼이 WHERE 절이나 조인 조건에서 자주 사용되는 경우

            - 테이블에 저장된 데이터의 변경이 드문 경우

                - 색인은 부가적인 자료 구조임

                - 데이터 삽입이 빈번할 시 인덱스 갱신으로 인해 비효율적임

        1-2) 질의 수행 시 인덱스를 강제로 사용하게 하기

            - 인덱스를 먼저 만든다 (ex : name_idx)

            - FROM 절에 WITH를 추가하여 선언한다

                - SELECT * FROM ELPLOYEE WITH (INDEX = name_idx) WHERE ENAME = 'e1'

    2) 뷰

        1-1) 하나 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블

            - 중복을 피하거나 (예: 직급별 보여주고자 하는 데이터 들), 복잡한 쿼리를 위해

    3) 인라인 뷰

        1-1) 하나의 질의문 내에서만 생성되어 사용 되어지고 질의문 수행 종료 후 사라지는 뷰

            - FROM 절에서 서브 쿼리를 사용하여 생성하는 임시 뷰

 

5. 저장 프로시저와 사용자 정의 함수

    1) 프로시저 : 자주 사용되는 질의문들을 하나로 묶어서 저장해 두고 필요할 때마다 명령문처럼 실행

        1-1) 입력 매개변수를 사용하는 프로시저

            - 생성시 @를 사용함 : @매개변수명 타입, ...

            - 실행시 : EXEC 프로시저이름 매개변수값

        1-2) 출력 매개변수를 사용하는 프로시저

            - 생성시 @를 사용하고 OUTPUT을 명시함 : @매개변수명 타입 OUTPUT, ...

            - 변수 선언 : 프로시저 밖에 매개변수 선언함, DECLARE @매개변수명 

            - 프로시저 실행 : EXEC 프로시저명 @매개변수명 OUTPUT

            - 선언된 매개변수를 출력함 : SELECT @매개변수명

    2) 사용자 정의 함수 : RETURN문을 이용해 하나의 값을 반드시 반환해야 함

        1-1) 특징

            - 사용자 정의 함수는 프로시저와 달리 다양한 타입의 값을 반환할 수 있음

            - 함수이므로 질의문 내에서 사용이 가능함

        1-2) 테이블 반환 함수 : 하나가 아닌 여러개의 값을 반환하는 함수

            - 함수 결과로 테이블이 반환되므로 SELECT 문의 FROM 절 등에서 쓸 수 있음

6. 트리거

    1) 개념 : DBMS에서 특정 사건이 발생 시 자동으로 일련의 과정이 수행되는 프로시저

        1-1) 프로시저와 트리거 차이

            - 프로시저 : 사용자가 직접 EXEC명령어를 이용해 수행해야 한다.

            - 트리거 : 특정 조건을 만족하면 자동으로 수행되도록 하는 저장 프로시저다.

        1-2) 단점

            - 테이블 선언 시 정의한 제약조건에 비해 성능이 저하됨

댓글