[MySQL] 3편 SELECT 심화 (AS, ORDER BY, DISTINCT, concat, 산술연산자)

Hailey·2021년 1월 17일
1

MySQL

목록 보기
3/9
post-custom-banner

오늘 SELECT 심화편과 함께할 테이블입니다. 교양 과목을 듣는 학생들의 전공과 중간고사 점수입니다.

  • student_grade
namemajorscore
이지은경영학과90
천우희행정학과85
전여빈컴퓨터공학과95
김예진기계공학과80
박채연경영학과70

컬럼명 대신 별칭(alias) 사용하기

출력할때 기존 테이블의 컬럼명 대신 원하는 이름이 있을 수 있습니다. 그 때 사용하는 방식입니다.

SELECT name AS 이름, major AS 학과 FROM student_grade;
SELECT 기존컬럼명 AS 별칭, 기존컬럼명 AS 별칭 FROM 테이블명;

위의 명령어를 통해 출력할때 컬럼명을 원하는 별칭으로 바꿀 수 있습니다.

이름학과
이지은경영학과
천우희행정학과
전여빈컴퓨터공학과
김예진기계공학과
박채연경영학과

한 가지 알려드리자면 mysql에는 쿼리를 넣을 때 대소문자 구분을 하지 않습니다. 따라서 SELECT, select / AS, as 모두 무방합니다.


DISTINCT로 중복된 값을 제외하고 출력하기

SELECT DISTINCT major FROM student_grade;
major
경영학과
행정학과
컴퓨터공학과
기계공학과

중복된 경영학과의 값이 한번만 출력된 것을 볼 수 있습니다.


연결 연산자 함수로 칼럼 값을 붙여서 출력하기 : concat()

SELECT concat(name,'의 교양 수업 점수는 ',score,' 점 입니다.') 
FROM student_grade;
concat(name,'의 교양 수업 점수는 ',score,' 점 입니다.')
이지은의 교양 수업 점수는 90 점 입니다.
천우희의 교양 수업 점수는 85 점 입니다.
전여빈의 교양 수업 점수는 95 점 입니다.
김예진의 교양 수업 점수는 80 점 입니다.
박채연의 교양 수업 점수는 70 점 입니다.

만약 천우희 학생만의 점수만을 출력하고 싶다면
WHERE name = '천우희'를 추가합니다.

SELECT concat(name,'의 교양 수업 점수는 ',score,' 점 입니다.') 
FROM student_grade 
WHERE name = '천우희';

산술연산자 사용하기

산술 연산자란 우리가 알고 있는 +, -, *, / 를 의미합니다. SQL에서도 다른 프로그래밍 언어와 마찬가지로 산술 연산자를 사용해서 어떤 결과를 얻을 수 있습니다.

SELECT *
FROM student_grade
WHERE score >= 85;
namemajorscore
이지은경영학과90
천우희행정학과85
전여빈컴퓨터공학과95

WHERE score >= 85을 추가하여 점수가 85점 이상인 학생들을 출력할 수 있습니다.

average와 total을 알아보기 위해 새로운 테이블 하나를 추가하겠습니다.

  • student_total
namemajorKoreanMathEnglish
이지은경영학과908560
천우희행정학과857590
전여빈컴퓨터공학과959070
김예진기계공학과808090
박채연경영학과7080100

학생들의 국어, 수학, 영어의 평균 점수를 출력하고 싶습니다.

SELECT name, major, Korean, Math, English, 
(Korean + Math + English)/3 AS avg 
FROM student_total;
namemajorKoreanMathEnglishavg
이지은경영학과90856078.3
천우희행정학과85759083.3
전여빈컴퓨터공학과95907085
김예진기계공학과80809083.3
박채연경영학과708010083.3

평균이 83.3점인 학생들만 출력하고 싶습니다.

SELECT name, major, Korean, Math, English, 
(Korean + Math + English)/3 AS avg 
FROM student_total
WHERE avg = 83.3;
namemajorKoreanMathEnglishavg
천우희행정학과85759083.3
김예진기계공학과80809083.3
박채연경영학과708010083.3

학생들의 점수의 총점을 출력하고 싶습니다.

SELECT name, major, Korean, Math, English, 
Korean + Math + English AS total
FROM student_total

ORDER BY

데이터의 양이 많을 때는 데이터를 어떤 기준으로 정렬하여 보는 것이 편할 때가 있습니다. 이럴 때 SQL에서는 order by 절을 사용 하게 됩니다.

기본적으로 order by를 사용하게 되면 오름차순으로 정렬이 되며, 내림차순으로 정렬을 하고 싶을 때는 desc라는 옵션을 사용하게 됩니다.

SELECT *
FROM student_total
ORDER BY Korean;
namemajorKoreanMathEnglish
박채연경영학과7080100
김예진기계공학과808090
천우희행정학과857590
이지은경영학과908560
전여빈컴퓨터공학과959070

다음은 내림차순을 해보겠습니다.

SELECT *
FROM student_total
ORDER BY Korean DESC;
namemajorKoreanMathEnglish
전여빈컴퓨터공학과959070
이지은경영학과908560
천우희행정학과857590
김예진기계공학과808090
박채연경영학과7080100
profile
Cloud Solution Architect - Customer Success in security💗🌎
post-custom-banner

0개의 댓글