USE hrdb2019;
SELECT DATABASE ();
/*
* 테이블의 구조 확인 : DESC
* 형식 : DESC : 테이블명
* */
DESC employee
DESC department
DESC unit
DESC vacation
/*단순조회 (R:select)
* 형식 : select 컬럼 from 테이블명
* */
-- employee 테이블에 있는 사원 id를 출력해주세요
SELECT emp_id,emp_name,email FROM employee ORDER BY emp_id ASC
-- employee 테이블에 있는 모든 컬럼을 조회
SELECT * FROM employee
-- department 테이블의 모든컬럼을 조회
SELECT * FROM department
-- employee 테이블 emp_id 컬럼명을 사원번호로 변경 후 조회 띄어쓰기 필요할시 '사원 번호' 이런 식으로 사용해야 함
-- SELECT emp_id AS 사원번호 FROM employee
-- employee 테이블 모든사원의 연봉,보너스(연봉10%)조회
SELECT salary,salary *0.1 AS bonus FROM employee ORDER BY salary DESC
-- 현재 날짜를 가져오는 함수에 별칭 사용
SELECT curdate() AS today
/* 조건별 조회 (R:select)
* 형식 select 칼럼 from 테이블명 where 컬렴=[조건]*/
-- 사원id가 s0007에 해당하는 사원정보를 모두 조회
SELECT * FROM employee WHERE employee.emp_id = 'S0007'
-- 사원명이 일지매인 사원의 모든 정보를 조회
SELECT * FROM employee WHERE emp_name = '일지매'
-- 홍길동 사원의 사원아이디, 성별, 폰번호,이메일,연봉 조회
SELECT emp_id,gender,phone ,email ,salary FROM employee WHERE employee.emp_name = '홍길동'
-- 총무부에 속한 모든 사원의 정보를 조회e
SELECT * FROM employee WHERE employee.dept_id = 'GEN'
-- 모든 남자사원의 사원명, 입사일,폰번호 연봉 조회
SELECT emp_name ,hire_date ,phone ,salary FROM employee WHERE gender = 'M'
-- NULL은 미지수의 개념으로 이해 !!
-- 현재 정의되지 않은 사원들을 모두 조회 is를 사용하여 where문 사용
SELECT * FROM employee WHERE eng_name is NULL
-- eng name이 null이 아닌 사원들을 모두 조회
SELECT * FROM employee WHERE eng_name IS NOT NULL
/*
* null 값을 다른 값으로 대체하는 함수 : ifnull()
* 형식 : ifnull(null포함 컬럼명,변경하는값
* */
-- eng_name이 null값을 '홍길동'으로 대체한 후 조회
SELECT ifnull(eng_name,0) FROM employee
-- retire_date 가 null 인 경우 현재 날짜로 대체하여 조회
SELECT ifnull(retire_date,curdate()) AS retire_date FROM employee
/*
* 중복된 데이터를 배제하고 조회 : distinct
* 형식 : selec{distinct} 컬럼리스트 from 테이블명
* */
-- 사원테이블에 존재하는 모든 부서번호를 조회
SELECT DISTINCT dept_id FROM employee
-- primary key 면 중복된값이 없기때문에 dsitinct가 의미가 없음
SELECT DISTINCT emp_id FROM employee
/*
* 데이터 정렬 : order by
* 형식 : select 컬럼명 from 테이블명 where = [조건절] order by (컬럼명) ASC/DESC
* */
-- 사원 id기준 으로 내림차순 정렬후 모든 데이터를 출력
SELECT * FROM employee ORDER BY emp_id DESC
-- 입사일이 가장 빠른 순서대로 사원들을 모두 조회
SELECT * FROM employee ORDER BY hire_date
-- 연봉이 가장높은순으로 사원들을 모두조회
SELECT * FROM employee ORDER BY salary DESC
-- eng_name이 null인 사원들 중 입사일이 가장 빠른 순서대로 조회
SELECT * FROM employee WHERE employee.eng_name IS NULL ORDER BY hire_date
-- 정보시스템 부서 사원 중 입사 일이 가장 빠르고 급여를 많이 받는 순서로 정렬하여 조회
SELECT * FROM department
SELECT * FROM employee WHERE employee.dept_id = 'SYS' ORDER BY hire_date ASC , salary DESC