ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSSQL] 10일 만에 마스터하는 MS SQL 실무_1~4편
    Backend/database 2024. 2. 13. 23:04

    https://www.youtube.com/watch?v=SRYtyH-Cnq0&list=PL1VTPqi5Xgu9pr3oK_j4ranMGEn6fKMFp&index=3

    위의 강의를 보고 정리한 내용입니다!

     

    1. 데이터 사용자가 많아 수많은 사람이 동시에 접속하는 경우

    누구의 요청에 더 빠르게 대응할 것인가?

    > 중요도에 따라 다르게 대응

    2. 데이터를 조회하는 도중에 다른 사람이 조회 중인 데이터를 새로운 데이터로 갱신/삭제하는 경우

    내가 요청한 시간에 존재했던 데이터를 기준으로 보여줄 것인가? 

    vs

    최신 데이터로 다시 보여줄 것인가?

    3. 정전 등 예상하지 못한 사건으로 데이터에 손상이 오는 경우

    > 원 상태를 잘 기억했다가 복구해주는 기능 필요

     

    -> 등등 여러가지 문제를 잘 관리해주는 소프트웨어를 수행해주는 프로그램

    -> DMBS (Database Management System)

     

     

    대부분의 기업에서 사용되고 있는 관계형 데이터 베이스 유형 > RDBMS

    > RDBMS를 DBMS라고 봐도 무방하다!

    > RDBMS는 SQL 언어를 기반으로 제어된다

     

    SSMS(Sql Server Management Studio)를 추가로 설치해야 프로그램을 사용할 수 있음

     

    mdf

    > microsoft sql server에서 데이터를 저장할 때 사용하는 형식의 파일

    > 데이터와 관련된 프로그래밍 소스 코드도 한꺼번에 저장됨!

     

    SMMS

    > 단축키 Alt+X 또는 F5를 클릭해 실행 가능하다

    > 한 행만 실행 시, 해당 행을 드래그한 후 단축키 클릭

     

    열, 필드 > 열에 존재하는 데이터는 같은 속성을 가짐

    행, 레코드 > 행에 존재하는 데이터는 여러 속성을 가진 한 개체의 모임

     

    SQL 기초 문법 강의

    > SQL Server, Oracle, Sybase, Infomix, MS Access, Postgres 등 여러 RDBMS에 모두 동일하게 사용 가능하다!

     

    USE STUDY // STUDY라는 데이터베이스를 사용하겠다는 의미
    GO
    SELECT * FROM COMPANYINFO

     

    만약 구체적인 DATABASE를 지정하지 않으면? RDBMS는 로그인 된 첫번째 장소인 MASTER 데이터베이스에 데이터를 요청한다!

     

    GO > 코드 구분자

    GO 이전의 코드를 실행 후 다음 코드를 실행하라고 지정함

    여러 작업을 한 코드에서 실행시킬 때 작업별로 구분해주기 위해 사용한다!

     

    USE를 사용하지 않고 작업 위치를 지정하는 방법

    > SELECT * FROM STUDY.DBO.~

     

    DBO > DATABASE OWNER의 약자

    보통 99%는 dbo이므로 마침표(.)로 입력하기도 한다

    > SELECT * FROM STUDY..~

     

    DISTINCT

    > 서로 다른 값만을 반환할 수 있음

     

    필드 값이 텍스트이면 '' 넣기

    숫자는 그대로 사용해도 문제 없음

     

     

     

     

     

    LIKE 연산자

    > 정확히 특정한 패턴을 가지는 값을 찾을 때 사용한다.

    > 여기서 패턴이 중요한데 패턴은 WILDCARD를 사용해 만든다.

     

    WILDCARD

    > 패턴을 정의하기 위해 사용되는 특수문자

    > %나 _를 주로 사용한다.

     

    와일드카드 유의할 점

    > 다른 검색에 비해 오랜 시간이 걸림 > 성능을 저하시킬 수 있음

    반드시 필요한 경우가 아니라면 검색 패턴의 시작 부분에는 쓰지 않는 편이 좋음

     

    ORDER BY

    > 오름차 순이 기본이다.

    > 정렬 조건은 여러 개가 가능하다.

     

    저장한 파일 찾기 > CTRL+O 누르고 찾기

     

    집계함수

    > 열의 개수, 합계, 평균 등을 계산하는 함수

    > 특정 그룹별로 그 수치를 알아보는 데 사용함

    > 주로 숫자 유형에 사용하지만, COUNT(), MAX(), MIN()은 문자, 날짜 유형에도 적용 가능하다!

     

    > 집계 함수의 경우 AS 미사용 시 열 이름이 없다.

     

    GROUP BY 절을 이용해 그룹 만들기

    > 그룹을 만들려면 SELECT 문에서 GROUP BY 절을 이용한다.

    > SQL 문에서 FROM 절과 WHERE절 뒤에 오며 행들을 그룹화한다.

     

    칼럼에 대한 ALIAS 는 ORDER BY 절에서 사용이 가능하다.

     

    HAVING

    > GROUP BY 에서 나온 결과 중에서 원하는 조건에 부합하는 결과만 보고 싶을 때 사용한다.

    > 무조건 GROUP BY 절과 함께 사용된다. (중요)

    > 조건은 WHERE 절에 기술하지만 HAVING 집계함수로 조건을 필터링할 때 사용한다.

     

    WHERE 절과 의미는 같으나 COUNT, AVG, MAX, MIN 등 집계함수를 사용할 수 있다는 점에서 다르다!

    > 그렇기에 반드시 GROUP BY와 함께 존재해야 한다.

     

    > ORDER BY에는 필드, 집계함수 등 모두 사용가능하다!

     

    PARTITION BY 절

    > 실전에서 가장 자주 사용하는 문법

    > 금융 관련 데이터를 다룰 때 자주 활용한다.

    > PARTITION BY 절과 많이 사용하는 순위함수, 이동함수

     

    순위 함수를 사용하는 방법

    SELECT COLUMNS, 순위함수 () OVER (ORDER BY COLUMNS)

    FROM TABLE_NAME

    WHERE CONDITION

     

    여기서 ORDER BY 가 어떤 기준으로 순위를 매길 지의 기준이다.

     

    ROW_NUMBER()

    > 중복 순위를 무시한다.

    > 동일한 값이 있어도 일단 순위를 매기는 함수 > 동일한 순위가 존재하지 않게 된다.

     

    RANK()

    > 중복 순위를 적용함. 다음 순위가 중복 순위 적용 후의 순위가 된다.

    > 동일한 값이 있는 경우 동일한 순위 부여 > 다음 순위는 중복 순위 적용 후의 순위가 된다.

     

    DENSE_RANK()

    > 중복 순위를 적용한다. 다음 순위가 중복 순위 적용 후 +1 을 하는 순위가 된다.

    > RANK() 와 동일하지만 그 다음 순위가 +1이 된다.

     

    이동 함수

    > LAG는 이전 행의 값을 가져올 때 사용하고 LEAD는 다음 행의 값을 가져올 때 사용함

     

    SELECT COLUMNS, LEAD(COLUMN1, OFFSET)

    OVER (ORDER BY COLUMNS)

    FROM TABLE_NAME

    WHERE CONDITION

     

    OFFSET을 생략 시 1행의 앞(뒤) 값을 가져온다.

    OFFSET 은 지정한 값만큼의 데이터를 가져온다.

     

    LAG, LEAD 함수

    > 변화율을 계산할 때 필수적으로 사용한다.

    > 변화율 = (현재값 - 이전값) / 이전값

    = (현재값/이전값) - 1

    > 매일의 주식수익률을 계산 할 수 있다.

     

    PARTITION BY

    > GROUP BY 와 동일하게 어떤 그룹에 적용하는 함수이다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Designed by Tistory.