SQL 첫걸음 10-11강 정리
04 Dec 2019책을 보면서 공부한 내용 복습 및 정리
10강
기본설정
- Mysql 서버 켜기
- Mysql 실행하기
- sample database 사용 설정하기
$ mysql.server start
$ sudo mysql
mysql> use sample;
9장에서 배운 ORDER BY를 사용하지 않을 경우 순서는 일정하지 않으면 데이터베이스 서버의 상황에 따라 결정된다. sample32 테이블을 살펴보면 a열, b열에 모두 integer형의 데이터가 들어있다.
b열은 a열의 하위 번호로 ‘1-1, 2-1’과 같이 열의 상관관계에 맞춰 정렬하려 한다. 먼저 ORDER BY로 a열을 정렬한다. a열을 정렬되지만 b열은 정렬되지 않는다.
ORDER BY에서 2개 이상의 열을 정렬할 때는 콤마(,)로 지정하면 된다. ORDER BY에서 a열과 b열을 정렬하면 원하는 결과를 얻을 수 있다.
반대로 ORDER BY에서 b열을 먼저 정렬하고 a열을 정렬하면 b열의 값을 먼저 순서대로 정렬하고 b값이 같은 a열의 값들이 순서대로 정렬되는 것을 볼 수 있다.
여러 열을 지정하는 것 외에도 각 열의 정렬 방법을 ASC나 DESC를 이용해서 설정할 수 있다.
값에 NULL이 있을 때는 ORDER BY로 정한 열에서 NULL을 가진 행이 가장 먼저 표시되거나 가장 나중에 표시된다. NULL에 대한 대소비교는 데이터베이스마다 다르며 MySQL은 NULL을 가장 작은 값으로 처리한다.
11장
LIMIT는 표준 SQL이 아닌 MySQL과 PostgrSQL에서 사용할 수 있는 문법으로 행 수를 지정할 수 있다. LIMIT는 WHERE 구나 ORDER BY 구 뒤에 지정한다.
sample33 테이블에서 LIMIT로 3개의 행만 가져오도록 한다.
LIMIT는 WHERE로 검색하고 ORDER BY로 정렬된 결과에 적용해서 결과를 반환한다. ORDER BY에서 내림차 정렬을 설정하면 그 결과에서 LIMIT로 제한된 결과를 얻게 된다.
❗️LIMIT는 MySQL과 PostgreSQL에서만 사용할 수 있다. SQL Server에서는 비슷한 기능으로 TOP을 Oracle에는 ROWNUM을 사용할 수 있다.
웹에서 대량의 데이터를 화면에 표시할 때 pagination 기능을 이용한다. 이 기능은 LIMIT와 OFFSET을 이용하여 구현할 수 있다. LIMIT로 표시할 데이터의 개수를 정하고, OFFSET으로 몇 번째 데이터부터 보여줄지를 정한다. OFFSET으로 시작 위치를 조정할 때는 ‘시작할 행 - 1’의 값을 넣어준다.