From a8dbd90ad7da517d6e92b370e7494e4fe52f678e Mon Sep 17 00:00:00 2001 From: "DESKTOP-FSO9NHB\\User" Date: Thu, 10 Dec 2020 15:41:02 +0900 Subject: [PATCH] =?UTF-8?q?SQL=EC=B2=AB=EA=B1=B8=EC=9D=8C=2009=EA=B0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SQL첫걸음/Contents.md | 5 ++- SQL첫걸음/Lecture09.md | 79 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 SQL첫걸음/Lecture09.md diff --git a/SQL첫걸음/Contents.md b/SQL첫걸음/Contents.md index e79d0bb..f2a021e 100644 --- a/SQL첫걸음/Contents.md +++ b/SQL첫걸음/Contents.md @@ -12,4 +12,7 @@ - [05강. 테이블 구조 참조하기](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture05.md) - [06강. 검색 조건 지정하기](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture06.md) - [07강. 조건 조합하기](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture07.md) -- [08강. 패턴 매칭에 의한 검색](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture08.md) \ No newline at end of file +- [08강. 패턴 매칭에 의한 검색](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture08.md) + +## 3장. 정렬과 연산 +- [09강. 정렬 - ORDER BY](https://github.com/banjjoknim/TIL/blob/master/SQL%EC%B2%AB%EA%B1%B8%EC%9D%8C/Lecture09.md) \ No newline at end of file diff --git a/SQL첫걸음/Lecture09.md b/SQL첫걸음/Lecture09.md new file mode 100644 index 0000000..c0808e2 --- /dev/null +++ b/SQL첫걸음/Lecture09.md @@ -0,0 +1,79 @@ +# 09강. 정렬 - ORDER BY +**`ORDER BY 구`** +``` +SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명 +``` + +- `SELECT` 명령에 `ORDER BY` 구를 지정하면 검색 결과의 행 순서를 바꿀 수 있다. +- `ORDER BY` 구를 지정하지 않을 경우에는 데이터베이스 내부에 저장된 순서로 반환된다. +- 언제나 정해진 순서로 결괏값을 얻기 위해서는 `ORDER BY` 구를 지정해야 한다. + +--- + +## 1. ORDER BY로 검색 결과 정렬하기 +- `SELECT` 명령의 `ORDER BY` 구로 정렬하고 싶은 열을 지정하면 지정된 열의 값에 따라 행 순서가 변경된다. +- 이때 `ORDER BY` 구는 `WHERE` 구 뒤에 지정한다. + +**`WHERE 구 뒤에 ORDER BY 구를 지정하는 경우`** +`SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명` + +- 검색 조건이 필요없는 경우에는 `WHERE` 구를 생략하는데 이때 `ORDER BY` 구는 `FROM` 구의 뒤에 지정한다. + +**`FROM 구 뒤에 ORDER BY 구를 지정하는 경우`** +``` +SELECT 열명 FROM 테이블명 ORDER BY 열명 +``` + +--- + +## 2. ORDER BY DESC로 내림차순으로 정렬하기 +- `ORDER BY` 구에 지정한 열의 값에 따라 행의 순서가 바뀐다. +- 기본적으로는 오름차순으로 정렬된다. +- 내림차순으로 정렬할 때는 열명 뒤에 `DESC`를 붙여 지정한다. + +**`내림차순으로 정렬`** +``` +SELECT 열명 FROM 테이블명 ORDER BY 열명 DESC +``` + +- 오름차순으로 정렬할 때는 내림차순과 달리 생략 가능하며 `ASC`로도 지정할 수 있다. + +**`오름차순으로 정렬`** +``` +SELECT 열명 FROM 테이블명 ORDER BY 열명 ASC +``` + +- `DESC`는 `descendant(하강)`, `ASC`는 `ascendant(상승)`의 약자이다. + +##### DESC로 내림차순 정렬한다! +##### ASC로 오름차순 정렬한다! + +- `ASC`나 `DESC`로 정렬방법을 지정하지 않은 경우에는 `ASC`로 간주되며, 즉 `ORDER BY`의 기본 정렬방법은 오름차순이다. + +--- + +## 3. 대소관계 +- `ORDER BY`로 정렬할 때는 값의 대소관계가 중요하다. +- 수치형 데이터라면 대소관계는 숫자의 크기로 판별하므로 이해하기 쉽다. +- 날짜시간형 데이터도 수치형 데이터와 마찬가지로 숫자 크기로 판별한다. +- 문자열형 데이터의 경우에는 알파벳이나 한글 자모음 배열순서를 사용하면 문자를 차례대로 나열할 수 있다. +- 알파벳, 한글 순이며 한글은 자음, 모음 순이다. + +##### 문자열형 데이터의 대소관계는 사전식 순서에 의해 결정된다! + +### 사전식 순서에서 주의할 점 +- 수치형과 문자열은 대소관계 계산 방법이 서로 다르다. +- 수치형은 수치형의 대소관계로, 문자열형은 사전식 순서로 비교한다. +- 문자열형 열에 숫자 데이터를 넣을 수 있다(숫자도 문자의 일종이므로 저장하는 데 아무런 문제가 되지 않는다). +- 하지만 문자열형 열에 숫자를 저장하면 문자로 인식되어 대소관계의 계산 방법이 달라지므로 정렬이나 비교 연산을 할 때는 이 점에 주의해야 한다. + +##### 수치형과 문자열형 데이터는 대소관계의 계산 방법이 다르다! + +--- + +## 4. ORDER BY는 테이블에 영향을 주지 않는다. +- `ORDER BY`를 이용해 행 순서를 바꿀 수 있다. +- 하지만 이는 서버에서 클라이언트로 행 순서를 바꾸어 결과를 반환하는 것뿐, 저장장치에 저장된 데이터의 행 순서를 변경하는 것은 아닙니다. +- `SELECT` 명령은 데이터를 검색하는 명령이다. 이는 테이블의 데이터를 참조만 할 뿐이며 변경은 하지 않는다. + +--- \ No newline at end of file