테이블 작성의 위주의 실습을 진행하였다. 오랜만에 작성해보는 SQL문이라 어색해서 여러번 작성해도 몇 번이나 다시 본다.
hr계정은 회사에서 사원을 관리하는 데이터베이스이다. (hr계정에 실습을 함.)
select employee_id from job_history;
사원들의 사번 중 중복된 값으로 101,176,200이 있는 것을 확인이 된다.
select distinct employee_id from job_history;
중복된 데이터가 제외되면서 10개의 데이터가 7개로 출력됨.
where절의 조건문을 사용하여 테이블의 원하는 데이터만 출력할 수 있다.
속성 | 설명 |
---|---|
=, !=, <> | 처음 것은 같을 때 다를때 참(true)이다. |
>, >=, < , <= | 왼쪽이 클 때, 왼쪽이 크거나 작을 때 ,오른쪽이 클 때, 오른쪽이 크거나 같을 때 참이다 |
ex) 봉급이 10000이상인 사원의 아이디와 이름과 봉급을 출력하시오
select employee_id,first_name,salary from employees where salary > 10000;
특정 컬럼에 null이 들어 있는 데이터를 찾을 때 = 연산자를 사용해서 찾을 수 없다.
null이 들어 있는 데이터를 찾고 싶다면 'where 컬럼명 is null'
null이 아닌 데이터를 찾고 싶다면 'where 컬럼명 is not null'를 사용한다.
ex)커미션이 있는 사원의 정보를 출력해보자.
select * from employees where commission_pct is not null; // 커미션이 있으니깐 null이 아님(is not null)
컬럼을 연산자로 연산하여 새로운 결과를 얻어낼 수 있다.
컬럼+컬럼 , 컬럼+,숫자 , 숫자+숫자
ex)사원의 봉급을 50증가한 형태로 출력해보자
select salary+50 from employees;
ex)사원의 현봉급보다 10% 증가한 형태로 출력해보자
select salary*1.1 from employees;
연산된 컬럼명은 복잡해서 별명을 이용해서 사용한다.
ex)사원의 현봉급보다 10% 증가한 형태로 컬럼명을 upgradesalary로 출력해보자
select salary*1.1 as upgradesalary from employees;
현재 시간은 sysdate이며 정수 1은 시간연산 할때 하루를 뜻한다.
따라서 sysdate+1은 하루 지난 시간을 의미하고 sysdate-1는 하루 이전 시간을 의미한다.
1/24 => 1시간
1/24/60 => 1분
1/24/60/60 => 1초
월이나 년 관련 데이터를 계산하려면 add_months() 함수를 이용한다.
select add_month(sysdate,1) from dual // 1달후
select add_month(sysdate,-1) from dual // 1달전