SQL 입문

Eunho Bae·2022년 3월 9일
0

'[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스'에 나오는 내용을 정리한 글이다. 학부 데이터베이스 수업에서 이미 배운 내용이 상당수 나오기 때문에 알고 있거나 잊어버리지 않은 내용은 스킵하고 넘어가도록 하겠다.

SELECT FROM WHERE

실습용 데이터베이스는 https://www.sqlskills.com/sql-server-resources/sql-server-demos/ 에서 제공하는 Baseball Stats Sample Database를 사용했다.

야구선수들의 데이터들을 모아놓은 데이터베이스인데 여러 테이블 중 dbo.salaries라는 테이블에서 SELECT TOP 1000 ROWS을 해보면 사진과 같이 명령어가 자동으로 입력되어 실행되면서 5개의 열이 selected되는 것을 볼 수 있다.

테이블을 우클릭해서 DESIGN을 누르면 column이름과 데이터타입, 그리고 null을 허용할 것인지 체크하는 창이 뜬다. NULL은 굳이 지금 데이터값이 들어갈 필요는 없지만 향후 필요에 따라 넣을 경우 사용한다. (ex. deathYear)

데이터타입에서는 여러가지 종류를 설정할 수 있는데 문자열 같은 경우 크기가 변하는(가변) 배열 타입이나 크기가 고정된 타입의 배열 중 가변길이의 3바이트까지 넣을 수 있는 varchar(3)으로 설정되어 있는 것을 볼 수 있다.

char(50)과 varchar(50)의 차이는 만약 문자열에 hello을 넣어줬는데
char(50)인 경우 'hello '
varchar(50)인 경우 'hello'
이렇게 차이가 나는 것을 볼 수 있다.
가변 타입은 공간절약에 좋지만 검색속도가 떨어진다는 특성이 있다.

위 명령어는 players 데이터베이스에서 전체 행 중 상위 0.1%만 선택해서 모든 열을 출력하는데,
WHERE birthYear가 NULL이 아니고
(왼쪽부터 차례대로) ORDER BY birthYear를 내림차순으로 하고 그 다음에 birthMonth를 오름차순, 그리고 birthDay를 내림차순으로 정렬하도록 하는 명령어이다.

위 사진은 LIKE를 쓰는 예제이다. 끝자리 숫자만 다른 아이디를 가져올 경우 LIKE를 사용한다.
% : 임의의 문자열
_ : 임의의 문자 1개

  • OR보다 AND의 우선순위가 더 크다.
  • NULL은 애초에 값이 없다는 것이기 때문에 동등비교 연산을 할 수 없다. 따라서 IS NULL이나 IS NOT NULL 연산자를 사용하자
  • 현재 명령문(FROM)이 실행이 안될 경우 어떤 데이터베이스에 있는 테이블인지 명시하자. USE BaseballData;
  • TOP 10 * : 전체 행 중 상위 10개의 행만 보여주라는 뜻 (참고로 DB마다 명령어가 다르기 때문에 그때마다 같은 기능을 하는 명령어를 찾아서 쓰도록 하자)
profile
개인 공부 정리

0개의 댓글