MySQL 공식 문서에 있는 employees.sql DB를 이용하여 연습
--데이터베이스 조회
show databases;
--해당 데이터베이스 사용
use DB명;
--테이블 조회
show tables;
--테이블 구조 조회
desc 테이블명;
select문
--테이블의 모든 정보를 가져온다
select * from 테이블명;
--테이블의 일부 컬럼만 가져온다
select 컬럼명1, 컬럼명2 from 테이블명;
--limit: select 해서 가져온 값 중에서 원하는 범위만 가져온다.
--시작인덱스는 생략 가능하다.
select * from 테이블명 limit 시작인덱스, 개수;
💡 모든 데이터를 가져올 때 유지보수를 위해
*
보단 모든 컬럼 이름을 적어주는게 좋다.
+
-
*
/
를 사용하여 데이터를 가져올 때 연산을 해서 가져올 수 있다.
--급여액 10% 인상
select salary, salary*1.1 from salaries;
--급여액 10% 인하
select salary, salary*0.9 from salaries;
💡 문자열 컬럼 연산 시 문자열은
0
으로 취급한다.
distinct
select distinct 컬럼명 from 테이블명;
where 조건절
비교연산자 =
>
<
>=
<=
<>(다르다)
--1990년 이전에 입사한 사원들의 정보 조회
select emp_no, first_name, last_name
from employees
where hire_date < '1990-01-01';
--'d003' 부서가 아닌 매니저들의 사원번호와 부서번호를 조회
select emp_no, dept_no
from dept_manager
where dept_no <> 'd003';
and
or
not
--급여액이 60,000 이상 70,000 미만인 사원의 사원번호와 급여액을 조회
select emp_no, salary
from salaries
where salary >= 60000 and salary < 70000;
--'d001' 부서와 'd002' 부서 매니저의 사원번호와 부서번호를 조회
select emp_no, dept_no
from dept_manager
where dept_no = 'd001' or dept_no = 'd002';
--부서 번호가 'd003'이 아닌 매니저의 사원번호와 부서번호를 조회
select emp_no, dept_no
from dept_manager
where not dept_no = 'd003';
between
컬럼의 특정 범위가 조건일 때 사용한다.
위의 첫번째 예를 다음과 같이 작성할 수 있다.
select emp_no, salary from salaries where salary between 60000 and 69999;
in
지정된 컬럼의 값이 특정 값에 해당되는 조건을 만들 때 사용한다.
위의 두번째 예를 다음과 같이 작성할 수 있다.
select emp_no, dept_no from dept_manager where dept_no in ('d001', 'd002');
like
문자열 값을 비교할때 =
을 이용하면 지정된 문자열이 저장되어 있는 로우를 가져올 수 있다.
like
는 이를 보다 확장해서 조건을 만들어 줄 때 사용한다.
-
글자 하나를 의미
%
글자수와 상관없이 모든 글자를 의미
--이름의 첫글자가 'A'로 시작하는 사원의 사원번호와 이름을 조회
select emp_no, first_name
from employees
where first_name like 'A%';
--이름의 두번째 글자가 'i'인 사원의 사원번호와 이름 조회
select emp_no, first_name
from employees
where first_name like '_i%';
--이름에 'o'가 포함되나 마지막 글자는 'o'가 아닌 사원의 사원버호와 이름 조회
select emp_no, first_name
from employees
where first_name like '%o%' and not first_name like '%o';
order by 컬럼명 (asc)
오름차순
order by 컬럼명 desc
내림차순
--사원의 번호와 급여액을 조회한다. (급여액을 기준으로 오름차순 정렬)
select emp_no, salary
from salaries
order by salary;
참고자료: 소프트캠퍼스