카테고리 없음

DBeaver)데이터 출력하고 정렬하는 법 (SQL SELECT, ORDER BY)

연습노트 2024. 8. 13. 23:14

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

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

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

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

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

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

 

 

 

 

 

번호 상품명 카테고리 가격
1 셔츠 3000
2 반팔티 4000
3 침대 가구 5000
4 의자 가구 6000
5 하이탑 신발 3000

 

▲ 저번시간에 만든 테이블에 이런 데이터를 직접 입력해놓고 진행해봅시다. 

일단 초보 때는 4살 아기도 이해할 수 있는 테이블로 진행해야합니다. 

 

<복붙팁>

그대로 복사해서 붙여넣기를 하면 첫데이터로만 채워지게되는데 이때 그냥 복사가 아닌

 

우클릭을 해 Advanced Paste(Ctrl+Shift+V)를 클릭하면

 

여러행 복사 옵션이 나오는데 빈값을 Null로 넣을지 공백으로 넣을지 선택하고 확인을 클릭하면

 

원하는 데이터로 들어가게된다.

 

 

 

SQL 작성하려면

 

 

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

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

 

 

 

 

 

 

 

SELECT 문법 

 

 

SELECT * FROM 테이블명

이렇게 쓰면 테이블의 모든 컬럼이 출력됩니다. 

 

 

SELECT 컬럼명 FROM 테이블명

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

 

 

 

▲ 실행버튼 눌러봤더니 진짜로 상품명 컬럼만 출력해줍니다. 

 

 

SELECT 컬럼명1, 컬럼명2 FROM 테이블명

컬럼명 여러개 동시에 출력도 가능합니다. 

진짠지 확인해야하니까 컬럼명 여러개 써보십쇼 

 

 

 

 

SELECT * FROM 데이터베이스명.테이블명

출력이 안되면 데이터베이스명까지 적어보십시오. 

 

 

 

프로그래밍 문법은 일부러 힘들게 안외워도 됩니다.

까먹으면 검색할 수 있으니까요. 

근데 SELECT, FROM 문법은 매우 자주 사용하기 때문에 '셀프'라고 외워둡시다. 

데이터뽑을 땐 셀프로 하면 됩니다. 

 

 

 

Q. 왜 대문자임? 

SELECT 이런건 소문자로 써도 상관없습니다.

코드의 색상 하이라이트가 안되던 시절에 쓰던 관습같은 것임

근데 대문자로 쓰는게 보기 편하다는 사람도 있고 소문자가 쓰기 편하다는 사람도 있고 맘대로 하면 됩니다. 

 

 

Q. 왜 나는 소문자로 써짐?

DBeaver 상단 윈도우 - 설정 - SQL 편집기 - SQL 포맷 - Keyword case : Upper 로 바꿉시다.

 

 

 

 

 

 

출력결과 정렬하려면

 

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

데이터를 다루는 사람이라면 데이터를 자극적으로 가공해서 사람들을 농락하는 능력도 필요합니다. 

그런거 잘하는 사람들이 오래 해먹습니다. 

그 기본기가 바로 데이터 정렬하는건데

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

참고로 이런 간단한 SQL 문법들은 MySQL이나 다른 곳이나 별 차이 없습니다.

 

 

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

정렬하려면 ORDER BY 문법을 쓰면 됩니다. 

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

오름차순은 ABCD, 1234 순임

 

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

 

 

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

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

내림차순은 DCBA, 4321 순임 

 

 

 

 

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

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

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

(예를 들면 침대가 의자보다 더 위로)

 

 

 

 

 

 

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

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

컬럼명1 ASC/DESC, 

컬럼명2 ASC/DESC

....

계속 뒤에 추가하면 됩니다. 

 

 

 

 

 

 

SELECT * FROM product ORDER BY 3 DESC 

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

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

ORDER BY 3 DESC 하면

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

 

 

 

 

 

그럼 잠깐 문제나 풀어봅시다. 

 

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

SELECT 상품명, 가격 FROM product
[collapse]

 

 

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

SELECT * FROM product ORDER BY 가격 
[collapse]

 

 

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

 

 

SELECT * FROM product ORDER BY 가격 ASC, 카테고리 ASC

 

 

Q4. 저번시간에 만든 직원테이블에서 모든 컬럼을 출력하는데

1. 근무기간 적은 놈들이 맨 위에 와야하고 2. 같은 근무기간인 경우 이름을 가나다순으로 정렬해야합니다.

코드짜서 출력해보십시오.

 

답 보고 그대로 따라적는건 타자연습일 뿐
SELECT * FROM employee ORDER BY 근무기간, 이름