[SQL] SELECT로 데이터 출력하기
학번 | 이름 | 학년 | 수강과목 |
---|---|---|---|
1 | 홍길동 | 2 | 수학 |
2 | 김진우 | 1 | 수학 |
3 | 오형준 | 2 | 국어 |
4 | 정소화 | 3 | 인공지능 |
이렇게 구성된 학생 테이블이 있다고 가정하자.
기본 검색
SELECT 속성명 FROM 테이블명
SELECT 속성1, 속성2 FROM 테이블명
기본 SELECT
문의 형식은 이러하며, SELECT
와 함께 검색하고 싶은 속성의 이름을 나열하면 된다.
SELECT 학번 FROM 학생;
학번 |
---|
1 |
2 |
3 |
4 |
SELECT 학번, 이름 FROM 학생;
학번 | 이름 |
---|---|
1 | 홍길동 |
2 | 김진우 |
3 | 오형준 |
4 | 정소화 |
첫번째 SQL문은 "학생 테이블에서 학번 속성을 출력해주세요"라는 의미이고, 두번째 SQL문은 "학생 테이블에서 학번, 이름 속성을 출력해주세요"라는 의미이다.
SELECT * FROM 학생;
모든 속성을 검색하고 싶을 때는 즉, 테이블 전체를 보고 싶을 때는 속성명에 *
를 넣어주면 된다.
중복을 제거하여 검색
위 학생 테이블에서 학년 속성만 검색을 해보자.
SELECT 학년 FROM 학생;
학년 |
---|
2 |
1 |
2 |
3 |
그러면 이런 결과 테이블이 출력이 될 것이다. 동일한 투플이 여러개 존재함에도, 그냥 출력되는 것을 알 수 있다. 여기서는 2학년 속성이 중복되어 출력되었다. 이러한 중복이 싫다면 속성명 앞에 DISTICNT
를 붙여주면 된다.
SELECT DISTINCT 학년 FROM 학생;
학년 |
---|
2 |
1 |
3 |
중복 없이 결과 테이블이 출력된 것을 확인할 수 있다.
중복 허용하여 출력하라는 ALL
키워드도 존재한다. 기본값으로 지정되어 있기에 작성하지 않아도 상관없으나 중복 허용을 명시적으로 표기하고 싶다면 아래와 같이 ALL
키워드를 사용하면 된다.
SELECT ALL 학년 FROM 학생;
산술식을 이용한 검색
SELECT
문과 함께 산술식도 사용할 수 있다. +, -, *, /
등의 산술 연산자로 구성된다.
SELECT 학번+10 FROM 학생;
학번 |
---|
11 |
12 |
13 |
14 |
학번에 수를 더하여 출력하는 일은 거의 없겠지만, 예시를 들기 위해 사용하였다.
위와 같이 결과 테이블이 출력된다.
정렬 검색
위의 예시에서 학년
속성을 출력한 결과 테이블을 보면 알 수 있듯이, SELECT
문으로 검색한 결과 테이블은 DBMS가 정한 순서대로 출력된다. 위 테이블에서 우리가 원하는데로 정렬하여 결과를 출력하고 싶을 때는 ORDER BY
키워드를 사용하면 된다.
SELECT 속성1, 속성2 FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]]
[]는 선택사항이라는 의미이다. 명령어에 있어도 되고 없어도 된다.
위와 같이 일반적인 SELECT
문 뒤에 ORDER BY
키워드를 덧붙이면 된다. ASC
는 오름차순, DESC
는 내림차순을 의미하며 이 옵션을 따로 지정하지 않았을 경우, 기본값으로 ASC
, 오름차순으로 정렬되어 출력된다.
SELECT 학년, 이름, 수강과목 FROM 학생
ORDER BY 학년;
학년 | 이름 | 수강과목 |
---|---|---|
1 | 김진우 | 수학 |
2 | 홍길동 | 수학 |
2 | 오형준 | 국어 |
3 | 정소화 | 인공지능 |
ORDER BY
뒤에 명기된 학년
속성을 기준으로 정렬된 결과 테이블이 출력된다. 정렬 기준 속성을 따로 지정하지 않았으므로, 오름차순으로 출력된 것을 확인할 수 있다.
SELECT 학년, 이름, 수강과목 FROM 학생
ORDER BY 학년 DESC;
학년 | 이름 | 수강과목 |
---|---|---|
3 | 정소화 | 인공지능 |
2 | 홍길동 | 수학 |
2 | 오형준 | 국어 |
1 | 김진우 | 수학 |
DESC
옵션을 지정하면 내림차순으로 출력된 것을 확인할 수 있다.