reference 값을 System.out.print()로 호출하면 해당 reference의 toString() 메서드를 호출한다.
DataType마다 다르게 찍히는것은 내부적으로 overriding된 toString()가 다르기 때문이다.
메서드 시그니처는 구체적인것보다 인터페이스로 해라(유지, 보수에 편함)
/*
* moveVector() 메서드는 Vector이라는 구체적인 DataType을 반환한다.
* 나중에 v에 vector 대신 ArrayList를 사용한다면 코드를 일일히 바꿔주어야하는 번거로움이 생긴다.
*/
public static Vector<String> moveVector(String datas[]) {
Vector<String> v = new Vector<>();
for(int i = (datas.length-1); i >= 0; i--) {
v.add(datas[i]);
}
return v;
}
/*
* Vector대신 더 일반적인 List를 DataType으로 선언한다면 나중에 Vector대신 ArrayList로 변경되어도 코드를 수정 할 필요가 없다.
*
*/
public static List<String> moveVector(String datas[]) {
List<String> l = new Vector<>();
for(int i = (datas.length-1); i >= 0; i--) {
l.add(datas[i]);
}
return l;
}
create table [schema.] table_name
(
column datatype
[, column datatype ...]
)
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
--------
23/01/16
SELECT * FROM emp_test WHERE salary IS NULL;
SELECT * FROM emp_test WHERE salary IS NOT NULL;
SELECT name, NVL(salary,0) FROM emp_test; // salary NULL이 존재하면 0으로 대체
SELECT name, NVL2(salary,salary,0) FROM emp_test; // salary가 NULL이 아니라면 salary 반환, NULL이라면 0으로 대체
salary가 null 이고 title가 null인 직원 검색
select * from emp_test where salary IS NULL AND title IS NULL;
title이 null인 직원 title 계약직 변경
update emp_test set title = '계약직' WHERE title IS NULL;
월급 2000 이상인 직원 '특판팀' 변경 및 현 월급에서 무조건 1000 차감 변경
update emp_test set dept_name='특판팀', salary = salary - 1000 where salary >= 2000;
2005년 01월01일 이후 입사자 검색
select * from emp_test where in_date >= '05-01-01';
2005년 01월01일 이후 입사자 이고 월급이 6000원 이하인 직원 검색
select * from emp_test where in_date >= '05-01-01' and salary <= 6000;
select name as 이름, dept_name as 부서, title as 직책, in_date 입사일 from emp_test;
select name as 이름, title as 직책, salary*12 as 연봉, salary * 0.15 as "특별 상여금" from emp_test;
select name 이름, NVL(title, '인사발령전') 직책 , NVL(salary*12, 0) 연봉 , NVL(salary*0.15 , 0) "특별 상여금" from emp_test;
select name 이름, salary 월급, salary /30 일당, salary / 30 / 8 시급 from emp_test;
select name 이름, salary 월급, ROUND(salary / 30, 0) 일당, TRUNC(salary / 30 / 8 , 0) 시급 from emp_test;
select name 이름,NVL(salary, 0) 월급, NVL(ROUND(salary / 30, 0), 0) 일당, NVL(TRUNC(salary / 30 / 8 , 0), 0) 시급 from emp_test;