-
[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 와 동일하게 어떤 그룹에 적용하는 함수이다.
'Backend > database' 카테고리의 다른 글
[MSSQL] 10일 만에 마스터하는 MS SQL 실무 9, 10 편 (0) 2024.02.18 [MSSQL] 10일 만에 마스터하는 MS SQL 실무 7, 8편 (0) 2024.02.17 [MSSQL] 10일 만에 마스터하는 MS SQL 실무 5,6 편 (0) 2024.02.15