> For the complete documentation index, see [llms.txt](https://leeans-dev-book.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://leeans-dev-book.gitbook.io/docs/lecture/database/sql-select.md).

# SQL SELECT, 정렬

지금부터 SQL 이라는 언어를 배워볼건데

데이터베이스에 데이터 입출력, 수정삭제, 데이터 가공과 조작 이런 것에 특화된 언어입니다.

그래서 SQL을 잘 작성하면 데이터 맘대로 1. 출력하고 2. 넣고 3. 지우고 4. 수정할 수 있습니다.&#x20;

그래서 저거 4개 배우면 SQL 끝입니다.&#x20;

뿐만 아니라 깊게 들어가면 프로그래밍 언어처럼 조건문, 반복, 변수만들기 등 많은걸 할 수 있습니다.&#x20;

그건 지금 알 필요 없고 오늘은 가장 중요한 데이터 출력하는 법을 배워봅시다.&#x20;

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2F1DHIUeQF2manRh9WGX6o%2FScreenshot_9.png?alt=media&amp;token=d4539d37-5252-4320-94db-7fd0a4ac273b" alt=""><figcaption></figcaption></figure>

이 버튼으로 로우를 추가할 수 있고 위와 같은 데이터를 추가 해 봅시다.

이제 SQL을 한번 써보기 위해서 SQL 편집기를 열어 보겠습니다.

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2FaFGJjhAvRwliquc9m3Hp%2FScreenshot_11.png?alt=media&amp;token=95a9015b-6ac0-4dbe-85d3-2a124312435a" alt=""><figcaption></figcaption></figure>

DBeaver에선 원하는 데이터베이스명에 우클릭하면 SQL 편집기를 오픈할 수 있습니다.

거기에 SQL을 작성하고 실행해보면 됩니다.&#x20;

### <mark style="color:yellow;">**SELECT 문법**</mark>&#x20;

```sql
SELECT * FROM 테이블명
//이렇게 쓰면 테이블의 모든 컬럼이 출력된다.

SELECT 컬럼명 FROM 테이블명
//테이블의 특정 컬럼만 출력하고 싶으면 SELECT 뒤에 컬럼명을 기입합니다. 

SELECT 컬럼명1, 컬럼명2 FROM 테이블명
//컬럼명 여러개 동시에 출력도 가능합니다.
```

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2F2uoVNyPxZF6xRsnQ95f0%2FScreenshot_11.png?alt=media&amp;token=a23fce3a-5050-4379-ac66-411108a81404" alt=""><figcaption></figcaption></figure>

테이블명 입력 후 자동완성을 하게되면 위처럼  PRODUCT p  가 뜨게되고  뒤에 p는 별칭(Alias)로 나중에 배우게 될 것

### <mark style="color:yellow;">출력결과 정렬</mark>

데이터를 정직하게 출력만 하는 사람은 아무 쓸데가 없습니다.

그래서 오늘은 간단하게 정렬하는 법을 알아봅시다.&#x20;

```sql
SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC; 
SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC; 
```

정렬하려면 ORDER BY 문법을 쓰면 됩니다.&#x20;

**ORDER BY 컬럼명 ASC** 하면 그 컬럼명 기준 **오름차순**으로 정렬해줍니다.

오름차순은 ABCD, 1234 순임

&#x20;

**ORDER BY 컬럼명 DESC** 하면 그 컬럼명 기준 **내림차순**으로 정렬해줍니다.&#x20;

내림차순은 DCBA, 4321 순임&#x20;

(참고) ASC 키워드는 생략해도 기본 ASC 순으로 정렬해줍니다.

그래서 **SELECT \* FROM product ORDER BY 카테고리 ASC** 해봤더니

카테고리 컬럼 기준으로 ASC 순으로 잘 정렬해주는군요.&#x20;

근데 이 상태에서 같은 카테고리를 가진 데이터들을 '상품명 DESC 순'으로 정렬하고 싶으면 어떻게 할까요?

&#x20;

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2FxikTdjJUWC4T2NeCmLzP%2FScreenshot_13.png?alt=media&amp;token=981dba5c-2061-45a6-95f5-98ded4825554" alt=""><figcaption></figcaption></figure>

```sql
SELECT * FROM 테이블명 ORDER BY 컬럼명1 ASC, 컬럼명2 DESC; 
```

컬럼명1 순으로 정렬 후 그 다음 컬럼명2 순으로 정렬하고 싶으면

컬럼명1 ASC/DESC,&#x20;

컬럼명2 ASC/DESC

....

계속 뒤에 추가하면 됩니다.&#x20;

```sql
SELECT * FROM product ORDER BY 3 DESC 
```

참고로 **ORDER BY 컬럼명** 대신 **ORDER BY 몇번째컬럼** 인지를 적어도 정렬해줍니다.

현재 테이블에서 카테고리 컬럼이 3번째기 때문에

**ORDER BY 3 DESC** 하면

**ORDER BY 카테고리 DESC** 한거랑 똑같습니다.

**Q1. 현재 테이블의 상품명과 가격컬럼을 출력해보십시오.**&#x20;

**Q2. 현재 테이블의 모든 컬럼을 출력하는데 가격낮은 순으로 정렬해봅시다.**

**Q3. 현재 테이블의 모든 컬럼을 출력하는데 가격낮은 순으로, 가격이 같으면 카테고리가 가나다순으로 뜨도록 정렬해봅시다.**&#x20;

✨ 실습. employee 라는 테이블을 만들고 컬럼 3개를 생성하고 데이터를 아래와같이 입력해보자.

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2FdfWN7K72zLGI6Yz8Qa9y%2FScreenshot_14.png?alt=media&amp;token=6cc93d47-34f2-4aaf-8688-1f6b5801ee9a" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2FaczoYdk3yzCD8AChjK9A%2FScreenshot_16.png?alt=media&amp;token=9f738974-bedd-4d61-aeff-1db8cda92022" alt=""><figcaption></figcaption></figure>

**Q4. 만든 직원테이블에서 모든 컬럼을 출력하는데 근무기간이 적은사람이 위로 와야하고,**

**근무기간이 같을 경우 이름을 가나다 순으로 정렬.**
