RDBMS는 아래와 같은 특징이 있다.
- 데이터를 테이블 단위로 관리한다.
- 정규화를 통해 중복 데이터를 최소화할 수 있다.
- Join을 이용해서 여러 테이블의 분산 데이터를 가져올 수 있다.
SQL은 DB에 있는 정보를 사용할 수 있도록 지원하는 언어이다. 특징은 아래와 같다.
- 모든 DBMS에서 사용 가능하다.
- 대소문자를 구분하지 않는다. 구분 필요 시 binary 함수를 사용한다.
- DDL(CREATE, DROP .. ), DML(SELECT, DELECT .. ), DCL(GRANT, REVOKE .. )로 구분된다.
MySQL의 특징은 아래와 같다.
- MySQL은 INSERT시 반드시 순서에 따라 넣진 않는다.
- 논리값 TRUE은 1, FALSE는 0으로 내부적으로 해석된다.
따라서 BOOLEAN을 INT로 관리한다.- 실행 순서는 FROM -> WHERE -> SELECT -> ORDER BY 순이다.
실습 위주로 SELECT를 익혀보자. 데이터 구조는 아래와 같다.
SELECT employee_id, first_name, salary, salary * 12 AS 연봉,
commission_pct, salary * 12 * (1 + ifNULL(commission_pct, 0)) AS 커미션포함연봉
FROM employees;
SELECT employee_id, first_name, salary,
case when salary > 15000 then '고액연봉'
when salary > 8000 then '평균연봉'
else '저액연봉'
end "연봉등급" -- 열 이름
FROM employees;
SELECT employee_id, first_name, salary,
case salary when 15000 then '고액연봉경계선'
when 8000 then '평균연봉경계선'
else "-"
end "등급경계선"
FROM employees
SELECT employee_id, first_name, salary, department_id
FROM employees
WHERE department_id = 50 AND salary >= 7000; -- 모든 튜플을 지나며 조건에 부합하는지 확인
SELECT employee_id, first_name, department_id
FROM employees
WHERE department_id != 50 and department_id != 60 and department_id != 70;
SELECT employee_id, first_name, salary
FROM employees
WHERE salary BETWEEN 6000 AND 10000;
SELECT employee_id, first_name
FROM employees
WHERE first_name LIKE '%x%';
※ MySQL의 논리연산은 아래와 같다.