지금부터 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
Q2. 현재 테이블의 모든 컬럼을 출력하는데 가격낮은 순으로 정렬해봅시다.
SELECT * FROM product ORDER BY 가격
Q3. 현재 테이블의 모든 컬럼을 출력하는데 가격낮은 순으로, 가격이 같으면 카테고리가 가나다순으로 뜨도록 정렬해봅시다.
SELECT * FROM product ORDER BY 가격 ASC, 카테고리 ASC
Q4. 저번시간에 만든 직원테이블에서 모든 컬럼을 출력하는데
1. 근무기간 적은 놈들이 맨 위에 와야하고 2. 같은 근무기간인 경우 이름을 가나다순으로 정렬해야합니다.
코드짜서 출력해보십시오.
SELECT * FROM employee ORDER BY 근무기간, 이름