본문 바로가기

코딩 공부/DataBase

[DataBase] 03_데이터 조회하기

데이터 조회하기

#01. 데이터 기본 조회 구문

1) 전체 데이터 조회 하기

SELECT * FROM <테이블 이름>;
출력결과
mysql> SELECT * FROM department;
+--------+----------------+-------+
| deptno | dname          | loc   |
+--------+----------------+-------+
|    101 | 컴퓨터공학과   | 1호관 |
|    102 | 멀티미디어학과 | 2호관 |
|    201 | 전자공학과     | 3호관 |
|    202 | 기계공학과     | 4호관 |
+--------+----------------+-------+
SELECT 컬럼1, 컬럼2, ... , 컬럼n from <테이블이름>;
출력결과
mysql> SELECT deptno, dname, loc FROM department;
+--------+----------------+-------+
| deptno | dname          | loc   |
+--------+----------------+-------+
|    101 | 컴퓨터공학과   | 1호관 |
|    102 | 멀티미디어학과 | 2호관 |
|    201 | 전자공학과     | 3호관 |
|    202 | 기계공학과     | 4호관 |
+--------+----------------+-------+

2) 원하는 데이터만 조회하기

  • 컬럼명을 명시할 경우 조회를 원하는 컬럼만 명시할 수 있다.
  • 컬럼 나열 순서를 필요에 따라 변경할 수 있다.

ex) 학과 테이블에서 위치와 학과이름을 조회하기

mysql> SELECT loc, dname FROM department;
+-------+----------------+
| loc   | dname          |
+-------+----------------+
| 1호관 | 컴퓨터공학과   |
| 2호관 | 멀티미디어학과 |
| 3호관 | 전자공학과     |
| 4호관 | 기계공학과     |
+-------+----------------+

#02. 검색 결과 중복 제거

  • 검색 결과의 중복 행 제거하기
SELECT DISTINCT * | 컬럼1, 컬럼2, ..., 컬럼n from <테이블이름>;

ex) 학생 테이블의 학과번호 조회하기

mysql> SELECT DISTINCT deptno FROM student;
+--------+
| deptno |
+--------+
|    101 |
|    102 |
|    201 |
+--------+

ex) 학생 테이블에서 학과 번호와 학년을 출력하기

mysql> SELECT DISTINCT deptno, grade FROM student;
+--------+-------+
| deptno | grade |
+--------+-------+
|    101 |     4 |
|    101 |     1 |
|    101 |     3 |
|    101 |     2 |
|    102 |     2 |
|    102 |     4 |
|    102 |     1 |
|    102 |     3 |
|    201 |     1 |
|    201 |     2 |
+--------+-------+

#03. 컬럼에 대한 별칭 부여

  • 컬럼이름 뒤에 공백으로 구분하는 경우
SELECT 컬럼1 '별칭1', 컬럼2 '별칭2', ..., 컬럼n '별칭n'
FROM <테이블 이름>;
SELECT 컬럼1 as '별칭1', 컬럼2 as '별칭2',..., 컬럼n as '별칭n'
FROM <테이블이름>;

ex) 학과테이블에서 학과이름 칼럼의 별명은 Department_Name, 학과번호 칼럼의 별명은 Department_Number로 부여하여 출력

mysql> SELECT dname AS 'department_Name', deptno AS 'Department_Number'
    -> FROM department;
+-----------------+-------------------+
| department_Name | Department_Number |
+-----------------+-------------------+
| 컴퓨터공학과    |               101 |
| 멀티미디어학과  |               102 |
| 전자공학과      |               201 |
| 기계공학과      |               202 |

#04. 산술 연산자의 사용

  • SELECT 절에서의 산술 연산자 사용
    • 컬럼이름에 산술 연산을 적용하면 조회 결과에 적용되어 출력된다.
    • 원본 데이터는 변하지 않으며, 값을 가공하여 출력할 수 있다.

ex) 교수 테이블에서 교수이름, 급여 그리고 보너스를 포함한 연봉을 출력하여라. 단 보너스를 포함한 연봉은 급여*12를 한 결과에 보너스 100을 더한 값으로 계산한다.

mysql> select name, sal, sal*12+100 from professor;
+--------+-----+------------+
| name   | sal | sal*12+100 |
+--------+-----+------------+
| 김도훈 | 500 |       6100 |
| 이재우 | 320 |       3940 |
| 성연희 | 360 |       4420 |
| 염일웅 | 240 |       2980 |
| 권혁일 | 450 |       5500 |
| 이만식 | 420 |       5140 |
| 전은지 | 210 |       2620 |
| 남은혁 | 400 |       4900 |
+--------+-----+------------+

#05. 검색조건 지정하기

  • WHERE절을 사용한 검색 조건 지정
SELECT [DISTINCT] { * | 칼럼이름 [as '별칭'] ...} from <테이블 이름> [where 검색조건]; 
  • 비교 연산자의 종류
연산자 설명 연산자 설명
= 같다 != 다르다
> 크다(초과) >= 크거나 같다.(이상)
< 작다(미만) <= 작거나 같다.(이하)
  • 논리 연산자의 종류
연산자 설명
AND 모든 조건이 참일 때 참을 반환
OR 모든 조건이 거짓일 때 거짓을 반환
NOT 조건과 반대되는 결과를 반환

ex) 학생 테이블에서 1학년 학생만 검색하여 학번, 이름, 학과 번호를 출력

mysql> SELECT studno, name, deptno FROM student WHERE grade = 1;
+--------+--------+--------+
| studno | name   | deptno |
+--------+--------+--------+
|  10102 | 박미경 |    101 |
|  10106 | 서재진 |    101 |
|  10203 | 하나리 |    102 |
|  20101 | 이동훈 |    201 |
|  20102 | 박동진 |    201 |
|  20104 | 조명훈 |    201 |
+--------+--------+--------+

ex) 학생 테이블에서 몸무게가 70kg 이하인 학생만 검색하여 학번, 이름, 학년, 학과번호, 몸무게를 출력

mysql> SELECT studno, name, grade, deptno, weight FROM student
    -> WHERE weight <= 70;
+--------+--------+-------+--------+--------+
| studno | name   | grade | deptno | weight |
+--------+--------+-------+--------+--------+
|  10102 | 박미경 |     1 |    101 |     52 |
|  10104 | 지은경 |     2 |    101 |     42 |
|  10105 | 임유진 |     2 |    101 |     54 |
|  10201 | 김진영 |     2 |    102 |     48 |
|  10203 | 하나리 |     1 |    102 |     68 |
|  10204 | 윤진욱 |     3 |    102 |     70 |
|  20101 | 이동훈 |     1 |    201 |     64 |
|  20102 | 박동진 |     1 |    201 |     70 |
|  20103 | 김진경 |     2 |    201 |     51 |
|  20104 | 조명훈 |     1 |    201 |     62 |
+--------+--------+-------+--------+--------+

ex) 학생 테이블에서 1학년이면서 몸무게가 70kg 이상인 학생만 검색하여 이름, 학번, 학년, 몸무게, 학과 번호를 출력

mysql> SELECT name, studno, grade, weight, deptno FROM student
    -> WHERE grade = 1 AND weight >= 70;
+--------+--------+-------+--------+--------+
| name   | studno | grade | weight | deptno |
+--------+--------+-------+--------+--------+
| 서재진 |  10106 |     1 |     72 |    101 |
| 박동진 |  20102 |     1 |     70 |    201 |
+--------+--------+-------+--------+--------+

연습문제

  • 학생 테이블에서 학생 이름과 학생 번호를 조회하시오.
mysql> select name, studno from student;
+--------+--------+
| name   | studno |
+--------+--------+
| 전인하 |  10101 |
| 박미경 |  10102 |
| 김영균 |  10103 |
| 지은경 |  10104 |
| 임유진 |  10105 |
| 서재진 |  10106 |
| 이광훈 |  10107 |
| 류민정 |  10108 |
| 김진영 |  10201 |
| 오유석 |  10202 |
| 하나리 |  10203 |
| 윤진욱 |  10204 |
| 이동훈 |  20101 |
| 박동진 |  20102 |
| 김진경 |  20103 |
| 조명훈 |  20104 |
+--------+--------+

'코딩 공부 > DataBase' 카테고리의 다른 글

[DataBase] 06_함수  (0) 2020.05.11
[DataBase] 05_정렬, 부분 조회  (0) 2020.05.11
[DataBase] 04_SQL 연산자  (0) 2020.05.10
[DataBase] 02_데이터베이스 살펴보기  (0) 2020.05.10
[DataBase] 01_DBMS 설치(MySQL)  (0) 2020.05.10