테이블 실습은 해당 주소의 테스트 db인 employees를 다운받고 적용시켜 실습을 진행하였다
https://dev.mysql.com/doc/index-other.html
기초 사용법
show databases; -- 데이터베이스 조회하기
use employees; -- 현재 employees 데이터를 사용하겠다. workbench에서는 더블클릭을 실행하면 된다.
show tables; -- 테이블들 조회하기
desc departments; -- departments 테이블의 내용 조회하기
desc dept_emp;
desc dept_manager; -- 각 부서의 관리자및 사원
desc employees; -- 사원정보
desc salaries;
desc titles; -- 직책관련
SELECT
-- 사원의 정보를 모두 가져온다
-- 테이블 이름부터 적는 버릇을 키우자
select *
from employees;
-- 부서 정보를 모두 가져오라
select *
from departments;
-- 매니저의 모든 정보를 가져오라
select *
from dept_manager;
-- 사원들의 모든 직함 정보를 가져온다
select *
from titles;
-- 사원의 사원번호, 이름을 가져온다
select emp_no, first_name, last_name
from employees;
-- 사원의 사원번호, 생년월일, 성별을 가져온다.
select emp_no, birth_date, gender
from employees;
-- 부서의 부서번호, 부서 이름을 가져온다
select dept_no, dept_name
from departments;
-- 각 사원의 사원번호, 급여액을 가져온다.
select emp_no, salary
from salaries;
-- 각 사원의 사원번호, 직함 이름을 가져온다.
select emp_no, title
from titles;
select는 DB내 테이블들의 값을 가져올때 사용한다,
산술 연산자(Operator)
-- 산술 연산자
select 10 + 20;
select 20 - 10;
select 20 * 10 as 'hello';
select 20 / 10;
select salary, salary + 1000, salary * 1000, salary / 1000
from salaries;
-- 각 사원의 급여를 10% 인상된 금액을 가져온다
select emp_no, salary ,salary * 1.1
from salaries;
-- 각 사원의 급여를 10% 인하된금액을 가져온다
select emp_no, salary, salary * 0.9
from salaries;
-- 문자열 컬럼 연산 문자열 부분은 0으로 취급한다
select first_name + 100, first_name * 100
from employees;
-- 중복을 제거히기
-- distinct
-- 근무 부서 테이블에서 부서 번호를 가져온다.
select distinct dept_no
from dept_emp;
-- 각 사원들의 직함을 중복되지 않게 가져온다
select distinct title
from titles;
조건절
-- 조건식을 만들떄 쓰는 연산자
-- = 같다
-- > 크다
-- < 작다
-- >= 크거나 작다
-- <= 작거나 크다
-- <> 다르다
select emp_no, dept_no
from dept_manager
where dept_no = 'd005';
-- d003 부서의 매니저가 아닌 매니저들의 사원번호, 부서 번호를 가져온다.
select emp_no, dept_no
from dept_manager
where dept_no <> 'd005';
-- 급여가 150000 이상인 사원들의 사원 번호, 급여를 가져온다
select emp_no, salary
from salaries
where salary >= 150000;
-- 급여가 40000 이하인 사원들의 사원 번호, 급여를 가져온다
select emp_no, salary
from salaries
where salary <= 40000;
-- 날짜 데이터를 조건절로 사용할 때도 비교연산자를 이용하면 된다.
-- 1986년 이후에 입사한 사원들의 사원번호, 입사일, 성과 이름을 가져온다
select emp_no, hire_date, last_name, first_name
from employees
where hire_date >= '1986-01-01';
-- 1990년 이후부터 매니저로 근무하고 있는 사원들의 사원번호, 부서번호, 매니저 시작 날짜를 가져온다.alter
select emp_no, dept_no, from_date
from dept_manager
where from_date >= '1990-01-01';
-- 1990년 이전에 입사한 사원들의 사원번호, 입사일을 가져온다.
select emp_no, hire_date
from employees
where hire_date <= '1990-01-01';
논리 연산자
-- 두개 이상의 조건문을 작성할 떄 사용하는 연산자 이다.
-- and : 양쪽 조건을 모두 만족해야한다
-- or : 양쪽 조건 중 하나만 만족해도 선택된다
-- not : 조건의 결과를 반대로 부정한다
-- d001 부서의 매니저 중에 1990년 이후부터 매니저인 사원의 사원번호 부서번호, 매니저 시작 날짜를 가져온다
select emp_no, dept_no, from_date
from dept_manager
where from_date >= '1990-01-01' and dept_no = 'd001';
-- 1990년 이후에 입사한 남자 사원의 사원번호, 서벼르 입사일을 가져온다.
select emp_no, gender, hire_date
from employees
where hire_date >= '1990-01-01' and gender = 'M';
-- 1990년 이후부터 60000 이상의 급여를 받는 사원의 사원번호, 급여, 급여수령 시작 날짜를 가져온다
select *
from salaries
where from_date >= '1990-01-01' and salary >= 60000;
-- d001 부서와 d002 부서 매니저의 사원 번호, 부서 번호를 가져온다
select emp_no, dept_no
from dept_manager
where dept_no = 'd001' or dept_no = 'd002';
-- 직함이 Staff인 사원과 Engineer인 사원의 사원번호, 직함을 가져온다
select emp_no, title
from titles
where title = 'Staff' or title = 'Engineer';
-- d003 부서의 매니저가 아닌 매니저의 사원번호, 부서 번호를 가져온다
select emp_no, dept_no
from dept_manager
where dept_no <> 'd003';
select emp_no, dept_no
from dept_manager
where not dept_no = 'd003';
-- Between
-- 컬럼의 범위를 조건으로 사용할 떄사용하다
-- and 대신 사용한다.
-- 컬럼명 between 값1 and 값2
-- 급여가 60000 이상 70000 이하인 사원의 사원번호, 급여를 가져온다
select emp_no, salary
from salaries
where salary between 60000 and 70000 - 1;
-- in
-- 지정된 컬럼의 값이 특정 값에 해당되는 조건을 만들 때 사용한다
-- or 대신 사용한다
-- 컬럼명 in (값1, 값2, ..)
-- d001 부서와 d002부서 매니저의 사원번호, 부서 번호를 가져온다
select emp_no, dept_no
from dept_manager
where dept_no in ('d001', 'd002');
'Mysql > Mysql 기초' 카테고리의 다른 글
mysql 기초 날짜 함수 (0) | 2020.07.09 |
---|---|
mysql 문자열함수 (0) | 2020.07.09 |
mysql 숫자 함수 (0) | 2020.07.09 |
mysql 기초 정렬하기(Order) (0) | 2020.07.09 |
mysql 기초 like (0) | 2020.07.09 |