[DB] MySQL - select, where, order by

bmoyeon·2020년 9월 2일
0

database

목록 보기
3/8
post-thumbnail

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;


참고자료: 소프트캠퍼스

profile
꾸준히 나아가자!

0개의 댓글