SSMS 입문
ssms의 사용법을 알아보자.
중요한 것들만 알아보자.
ctrl + n 은 New Query를 작성할 수 있다.
이렇게 쿼리를 작성해서 밑에 표에서 결과를 볼 수 있다.
테이블은 그냥 엑셀이랑 크게 다를게 없다. 테이블은 행과 열로 이루어져있으며 각종 데이터를 저장하고 있다. 테이블들이 모여 하나의 데이터베이스가 되는 것이다.
새로운 테이블을 만들어 보자.
성적을 저장할 수 있는 테이블을 작성한다.
딱히 변한 모습이 없을 때에는 refresh를 통해 확인할 수 있다.
데이터를 추가하기 위해서는 쿼리를 날려서 할 수도 있지만 아직 배우지 않았기 때문에 테이블에 직접 추가해주겠다.
Select From Whehe
SQL RDBMS를 조작하기 위한 명령어이다. SQL이 표준적으로 정해져 있긴 하지만 사용하는 db마다 SQL 문법이 살짝씩 달라진다. 그렇기에 우리는 표준에 맞춰 공부하고 사용하는 DB에 맞춰 따로 공부하길 바란다.
기본적으로 CRUD를 사용한다.
CRUD는 Create-Read-Update-Delete를 말한다.
Read 하는 가장 쉬운 방법은 바로 SELECT 이다.
형식은 SELECT FROM 형태로 이루어져있다.
FROM은 어느 테이블에서 조회할 것인지를 의미하고 SELECT는 내가 조회할 컬럼은 무엇인지 나타내면 된다. 만약 모든 컬럼을 조회하고 싶을 땐 *를 사용한다. 또 별칭을 붙이고 싶을 때는 AS를 이용하면 이름을 바꿔 출력할 수 있다.
SQL 문법을 분석할 땐 밑에서 부터 읽는 것이 좋다.
그 이유는 SQL이 영어를 기반으로 만들어졌기 때문이다.
우리는 "책상에서 연필을 갖고와주세요" 라는 문장에서 SELECT문을 만들면
FROM 책상에서
SELECT 연필을 갖고와주세요
이게 더 자연스럽다.
하지만 영어 특성상 동사가 먼저 오다보니 순서가 SELECT FROM 순으로 오게 된것이니 지금은 SELECT문이 복잡하지 않아 괜찮지만 나중에는 밑에서 부터 분석하는 것이 좋다.
단순히 SELECT만 할거면 데이터베이스를 사용할 필요가 없다.
WHERE를 통해 조건을 추가할 수 있다.
WHERE는 조건이 여러개일 수도 있다. AND와 OR를 이용한다.
여기서 중요한건 OR보다 AND의 우선순위가 높다는걸 주의하자.
NULL 체크는 어떻게 할까
is 명령어를 이용해서 체크한다.
그리고 문자열에서 검색을 할때 완전한 일치 말고 문자열을 포함하는 경우도 찾고 싶은 경우가 있는데 그때는 임의의 문자열을 전부 포함하는 %, 임의의 문자 1개를 포함하는 _를 사용한다.
ORDER BY
데이터를 정렬하는 법을 알아보자.
기본적으로는 ASC가 생략되어 가장 작은 데이터가 먼저 오게 된다. 만약 WHERE로 null 처리를 하지 않았다면 NULL이 가장 먼저 오게될것이다.
순위가 동일한 경우에는 그 뒤에는 어떻게 정렬할지 나타내주면 된다.
년도를 비교하고 같다면 달을 비교하게된다.
제한된 인원수를 출력하려면 (필터를 준다.) TOP을 통해 정할 수 있다.
PERCENT를 이용해서 인원의 몇 퍼센트만 출력도 가능하다.
수치와 문자열
우리가 데이터를 간단히 출력하는것이 아니라 계산이 필요한 경우도 있다.
SQL 쿼리에서도 역시 사칙연산 및 모듈러 연산도 가능하다.
이렇게 함으로써 한국나이를 추출할 수 있다.
나이가 보기 어려우니 정렬해보자.
나이 제한을 두려고 했는데 에러가 나는 모습을 볼 수 있다. 그 이유는 위에서 말했다싶이 로직적인 실행 순서가 맨 위부터 시작하는 것이 아니기 때문이다. FROM WHERE SELECT ORDER BY 순으로 실행되기 때문이다.
만약 NULL이 있을 때 사칙연산은 어떻게 적용될까?
사칙연산을 할 때 NULL을 한쪽이라도 포함하면 무조건 결과는 NULL이 나온다.
문자열은 기본적으로 글자당 1바이트를 이용하는데 한글을 사용하기 위해선 N을 붙혀줘야한다.
문자열에서 많이 사용되는 것은
SUBSTRING('문자열',시작,끝) - 이부분 추출
TRIM(' 공백제거') - 공백제거
등등 너무 많아 소개하긴 어렵고 문서를 찾는 것을 추천한다.
'Unity > 온라인 RPG' 카테고리의 다른 글
[데이터베이스] SQL 입문 - Group, 추가 삭제 갱신, subquery (0) | 2024.02.16 |
---|---|
[데이터베이스] SQL 입문 - DATETIME, CASE, 집계 함수 (0) | 2024.02.14 |
[데이터베이스] SQL 입문 - 세팅 (0) | 2024.02.13 |
[게임 서버] Unity와 서버 연동 (1) | 2024.02.06 |
[게임 서버] JobQueue - 서버 과부화를 줄이기 위한 패킷 처리 방법 (0) | 2024.02.05 |