오늘 SELECT 심화편과 함께할 테이블입니다. 교양 과목을 듣는 학생들의 전공과 중간고사 점수입니다.
name | major | score |
---|---|---|
이지은 | 경영학과 | 90 |
천우희 | 행정학과 | 85 |
전여빈 | 컴퓨터공학과 | 95 |
김예진 | 기계공학과 | 80 |
박채연 | 경영학과 | 70 |
출력할때 기존 테이블의 컬럼명 대신 원하는 이름이 있을 수 있습니다. 그 때 사용하는 방식입니다.
SELECT name AS 이름, major AS 학과 FROM student_grade;
SELECT 기존컬럼명 AS 별칭, 기존컬럼명 AS 별칭 FROM 테이블명;
위의 명령어를 통해 출력할때 컬럼명을 원하는 별칭으로 바꿀 수 있습니다.
이름 | 학과 |
---|---|
이지은 | 경영학과 |
천우희 | 행정학과 |
전여빈 | 컴퓨터공학과 |
김예진 | 기계공학과 |
박채연 | 경영학과 |
한 가지 알려드리자면 mysql에는 쿼리를 넣을 때 대소문자 구분을 하지 않습니다. 따라서 SELECT, select / AS, as 모두 무방합니다.
SELECT DISTINCT major FROM student_grade;
major |
---|
경영학과 |
행정학과 |
컴퓨터공학과 |
기계공학과 |
중복된 경영학과의 값이 한번만 출력된 것을 볼 수 있습니다.
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;
name | major | score |
---|---|---|
이지은 | 경영학과 | 90 |
천우희 | 행정학과 | 85 |
전여빈 | 컴퓨터공학과 | 95 |
WHERE score >= 85을 추가하여 점수가 85점 이상인 학생들을 출력할 수 있습니다.
average와 total을 알아보기 위해 새로운 테이블 하나를 추가하겠습니다.
name | major | Korean | Math | English |
---|---|---|---|---|
이지은 | 경영학과 | 90 | 85 | 60 |
천우희 | 행정학과 | 85 | 75 | 90 |
전여빈 | 컴퓨터공학과 | 95 | 90 | 70 |
김예진 | 기계공학과 | 80 | 80 | 90 |
박채연 | 경영학과 | 70 | 80 | 100 |
학생들의 국어, 수학, 영어의 평균 점수를 출력하고 싶습니다.
SELECT name, major, Korean, Math, English,
(Korean + Math + English)/3 AS avg
FROM student_total;
name | major | Korean | Math | English | avg |
---|---|---|---|---|---|
이지은 | 경영학과 | 90 | 85 | 60 | 78.3 |
천우희 | 행정학과 | 85 | 75 | 90 | 83.3 |
전여빈 | 컴퓨터공학과 | 95 | 90 | 70 | 85 |
김예진 | 기계공학과 | 80 | 80 | 90 | 83.3 |
박채연 | 경영학과 | 70 | 80 | 100 | 83.3 |
평균이 83.3점인 학생들만 출력하고 싶습니다.
SELECT name, major, Korean, Math, English,
(Korean + Math + English)/3 AS avg
FROM student_total
WHERE avg = 83.3;
name | major | Korean | Math | English | avg |
---|---|---|---|---|---|
천우희 | 행정학과 | 85 | 75 | 90 | 83.3 |
김예진 | 기계공학과 | 80 | 80 | 90 | 83.3 |
박채연 | 경영학과 | 70 | 80 | 100 | 83.3 |
학생들의 점수의 총점을 출력하고 싶습니다.
SELECT name, major, Korean, Math, English,
Korean + Math + English AS total
FROM student_total
데이터의 양이 많을 때는 데이터를 어떤 기준으로 정렬하여 보는 것이 편할 때가 있습니다. 이럴 때 SQL에서는 order by 절을 사용 하게 됩니다.
기본적으로 order by를 사용하게 되면 오름차순으로 정렬이 되며, 내림차순으로 정렬을 하고 싶을 때는 desc라는 옵션을 사용하게 됩니다.
SELECT *
FROM student_total
ORDER BY Korean;
name | major | Korean | Math | English |
---|---|---|---|---|
박채연 | 경영학과 | 70 | 80 | 100 |
김예진 | 기계공학과 | 80 | 80 | 90 |
천우희 | 행정학과 | 85 | 75 | 90 |
이지은 | 경영학과 | 90 | 85 | 60 |
전여빈 | 컴퓨터공학과 | 95 | 90 | 70 |
다음은 내림차순을 해보겠습니다.
SELECT *
FROM student_total
ORDER BY Korean DESC;
name | major | Korean | Math | English |
---|---|---|---|---|
전여빈 | 컴퓨터공학과 | 95 | 90 | 70 |
이지은 | 경영학과 | 90 | 85 | 60 |
천우희 | 행정학과 | 85 | 75 | 90 |
김예진 | 기계공학과 | 80 | 80 | 90 |
박채연 | 경영학과 | 70 | 80 | 100 |