MS SQL

[MS SQL]1.SELECT, FROM,WHERE,ORDER BY

myjeongjun 2025. 1. 30. 15:38

RDBMS(Relational Database Management System , 관계형 데이터 베이스 관리 시스템) vs NOSQL(Not only SQL)

게임에서는 전자의 경우가 유저를 중심으로 다양한 데이터가 묶여있기때문에 기업에서 ms sql을 사용하는 추세 

 

SSMS(SQL Server Management studio)에서 제공하는 Baseball Data를가지고 실습해볼 예정

 

SELECT, FROM,WHERE

 

Ctrl + N을 누르면 새 쿼리를 요청가능함

 

SELECT 어떤 속성을 가져올지 선택하는 명령어, *는 FROM의 모든 속성의 데이터를 가져온다.

SELECT *
FROM players

 

한 가지 주의할 점은

평소 코딩하는걸 생각해보면 FROM과 SELECT의 서순이 어색해 보일수있는데,왜냐하면 한국어로는 "players에서 모든 속성(*)에 해당하는 값을 가져와 주세요"로 문장을 구성하기 때문에 FROM players가 더 위에 있는것이 자연스럽다.

 

하지만 영어 문법으로 생각해보면  Select all attributes(*)~~ from players이기 때문에 위 코드의 어순과 일치한다.

 

 

WHERE : 특정 value에 해당하는 데이터만 조회해줌

SELECT nameFirst,nameLast,birthYear,birthCountry
FROM dbo.players
WHERE birthYear= 1974 OR birthCountry != 'USA' AND weight = 185

and나 or은 문자그대로 AND 와 OR로 표기함, 여러개의  AND와 OR을 쓸때 AND의 우선순위가 높으므로 명시적으로 괄호를 이용해서 우선순위를 조절해줘야함

 

LIKE : WHERE에서 패턴 매칭을 이용해서 데이터를 찾는 방식이존재

% : 임의의 문자열

_ :임의의 문자 1개

아래의 코드는 처음에 New를 나머지 뒤에는 임의의 문자열이 오는 value를 가지면 조회한다( ex) New York, New Bern등)

SELECT *
FROM players
WHERE birthCity LIKE 'New %';

 

아래의 코드는 처음에 New를 나머지 뒤에 임의의 문자열 1개가 오는 value를 가진 데이터를 조회한다.(예시 데이터에선 없으나 New a, New b, New c ..... New z라는 value가 존재하면 조회해줄 것임) _를 여러개 붙여서 쓸수도있다.

SELECT *
FROM players
WHERE birthCity LIKE 'New _';

 

 

ORDER BY

 

SELECT*
FROM players
WHERE birthYear IS NOT NULL
ORDER BY birthYear DESC,birthMonth DESC, birthDay DESC

정렬해서 값을 보여주는 조건을 추가 할 수있다.


--ASC:  ascendent 오름차순
--DESC : descendent 내림차순

 

또한 모든 값을 보여주는게아닌 일부분(예를들어 상위 1퍼센트만 추출)만 보고싶을때 TOP이라는 명령을 추가해주면된다.

주의할점은 TOP문법은 TSQL에서만 유효하기 때문에 MySQL에서 사용하려고하면 주의하도록 하자.

SELECT TOP 1 PERCENT*
FROM players
WHERE birthYear IS NOT NULL
ORDER BY birthYear DESC,birthMonth DESC, birthDay DESC

 

 

실제론 잘 사용하진 않지만 만약 101~200등까지의 데이터를 뽑고싶으면 OFFSET명령어를 사용해서 추출가능하다.

이 명령어는 SQL 표준에 들어가있다.

SELECT*
FROM players
WHERE birthYear IS NOT NULL
ORDER BY birthYear DESC,birthMonth DESC, birthDay DESC
OFFSET 100 ROWS FETCH NEXT 100 ROWS ONLY