AtraFelis's Develop Diary

[SQL] SELECT로 데이터 출력하기 본문

DataBase

[SQL] SELECT로 데이터 출력하기

AtraFelis 2024. 11. 18. 00:17
학번 이름 학년 수강과목
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 옵션을 지정하면 내림차순으로 출력된 것을 확인할 수 있다.