Database 17

[Database/Theory] 15. WHERE 1=1

[Database/Theory] 15. WHERE 1=1 12select * from tst_tblwhere 1=1cs조건문에 있는 1=1은 있어도 되고 없어도 되는 구문이다. 그러나 이와 같이 1=1을 사용하는 이유는 간단하다.차후 조건문을 용이하게 작성하기 위한것 뿐이다.123456789StringBuffer sql = new StringBuffer(); // sql에 쿼리문 가져온 것으로 가정. if(true){ sql.append("and tbl.aaa=1");}else{ sql.append("and tbl.aaa=2");}Colored by Color Scriptercs 위와 같은 경우를 사용할 때 주의할 점은 저 조건으로 인하여 의도치 않는 결과가 나오지 못하게 작성하도록 한다.MyBatis는..

Database/Theory 2016.08.03

[Database/Theory] 14. view

[Database/Theory] 14. view테이블과 동일하게 사용되는 개체다. 사용자 입장에서 테이블과 동일하다. 12create view v_usersas select id, name from users;cs - 보안성이 좋다. 뷰에 있는 내용만 보여지게 되고, 테이블에 있는 실제 데이터들이 노출되지 않는다. 그냥 테이블을 분리하면 된다 생각되지만 일관성이 떨어진다거나 관리가 어려워진다. - 복잡한 쿼리의 단순화가 된다.123456789select e1.last_name 사원이름, d1.department_name 부서이름, j1.급여 급여from employees e1, departments d1, (select department_id 부서아이디, min(salary) 급여 from employ..

Database/Theory 2016.06.21

[Database/Theory] 13. index(3) - 생성 시기

13. index(3) - 생성 시기index는 열단위로 생성된다. 또한 2개 이상의 열을 조합하고 생성할 수 있다. - where절에서 사용되는 열을 index로 만든다. 그 만큼 자주 사용할 가치가 있는 index로 만든다. select문보다 insert문이 자주 사용되면 그만큼 페이지 분할이 될 것이고 시스템의 성능이저하될 것이다. - 중복이 많은 열은 index의 가치가 없다.non-clustered index일지라도, 중복률이 테이블의 1% ~ 3% 이상이면 사용되지 않는다. - 외래키나 Join에 사용되는 열을 사용하는 것이 좋다. 그만큼 설계해야 될 중요성이 크다. 제약조건에 의하여 생성된 index는 삭제가 불가능하고대량의 데이터의 변동이 발생된다. - insert, update, dele..

Database/Theory 2016.06.19

[Database/Theory] 12. index(2) - 내부적 동작

12. index(2) - 내부적 동작 - 내부적 동작 * B-Tree(Balanced Tree)라는 구조에 의해 동작한다. * 자료구조의 Tree와 같은 구조이며 Root, Leaf와 같은 지칭이 있다. * 자료구조에서는 자료를 가진 것을 node라 부르지만 DB의 B-Tree에서는 Page라 부른다. * 한 Page에 8Kbyte의 공간을 차지한다. * 특정 Data를 검색할 때, Root page를 시점으로 연결된 Page를 찾아나아간다. * table scan보다 확연한 탐색 속도의 차이가 있다. * 그러나 Data의 변경작업이(insert, delete, update => CUD라 부르겠다.) 잦으면 역효과가 나타난다. * 페이지 분할 작업이 발생되기 때문이다. * 가령 특정 페이지에 데이터가 ..

Database/Theory 2016.06.17

[Database/Theory] 11. index(1) - 개요, 장단점, 종류

11. index(1) - 개요, 장단점, 종류 - 인덱스의 개요DB의 성능을 향상시키는 것이 목적. 적절한 사용으로 데이터에 빠르게 접근한다.DB 튜닝의 큰 효과를 볼 수 있다.과다한 사용은 성능이 떨어진다.필요없는 인덱스가 많아지면 DB에 차지되는 공간이 많아져 table scan보다 속도가 느려질 수 있다.(table scan : 인덱스를 사용하지 않고 DB를 처음부터 끝까지 탐색하는 것) - 장점과 단점 무조건은 아니지만, 데이터 검색속도가 향상된다.시스템 부하가 줄어들고 시스템의 전체 성능이 높아진다. DB의 10%정도 공간이 요구된다.인덱스를 생성하는 시간이 크게 요구된다.DB의 변경작업(Insert, Update, Delete)이 잦으면 성능이 저하된다. - Index의 종류 Clustere..

Database/Theory 2016.06.16

[Database/Theory] 10. Join(1)

10. Join(1)2개 이상의 테이블이 하나로 묶여 집합을 만들어내는것. - Inner Join일반적인 Join서로 관계가 맺어진 테이블에서 각자의 속성들을 추출하는것. Join하는 조건에 일치한 테이블들이 결합된다.select 뒤에는 어떤 테이블의 속성을 추출할 것인지 명시해야된다.Join의 조건하에, 양쪽 테이블에 모두 존재하는것만 추출된다.Join의 조건은 순차적으로 검색된다. - Outter Join Inner Join의 결과와 한쪽 테이블에만 존재하는 데이터도 추출하는 것. Join 조건에 만족하지 아니한 행도 추출된다.Left, Right의 경우 각 측에 있는 테이블의 데이터를 추출한다는 의미다.Full Outter는 Left와 Right를 모두 수행한다는 의미다. - Self Join 한 ..

Database/Theory 2016.06.16

[Database/Practice]02. Oracle hr account table(2)

02. Oracle hr account table(2)5. 부서별로 가장 적은 급여를 받고 있는 직원의 이름, 부서이름, 급여를 출력하시오. 이름은 last_name만 출력하며, 부서이름으로 오름차순 정렬하고, 부서가 같을 경우 이름을 기준으로 오름차순 정렬하세요.12345678select e1.last_name 사원이름, d1.department_name 부서이름, j1.급여 급여from employees e1, departments d1, (select department_id 부서아이디, min(salary) 급여 from employees group by department_id) j1where d1.department_id = e1.department_id and j1.부서아이디 = e1.dep..

Database/Practice 2016.06.08

[Database/Practice]01. Oracle hr account table(1)

01. Oracle hr account table(1) 1. 자신이 속한 부서의 평균 연봉보다 많은 연봉을 받은 사원의 아이디, 부서아이디, 연봉, 부서평균연봉을 조회하라.(부서평균연봉은 반올림하여 정수로 출력할 것. 부서평균연봉이 많은 사람부터 출력할 것.) 123456select e.employee_id 사번, e.department_id 부서번호, e.salary 연봉, em.부서평균연봉 부서평균연봉 from employees e, (select department_id 부서번호, round(avg(salary),0) 부서평균연봉 from employees group by department_id) emwhere em.부서번호=e.department_id and e.salary > em.부서평균연봉..

Database/Practice 2016.06.08

[Database/Theory] 09. SQL syntax(7) - Rownum

09. SQL syntax(7) - Rownum select rownum from ~~~~ order by -> rownum먼저 수행되므로 order by하면 rownum은 섞일 수 있다. where -> group by -> having -> order by 순서로 진행 rownum은 항상 추출된 1부터 부여된다. where rownum >= 3 (X) 조건절에 만족하지 아니하면 매번 1부터 넘버링이되고 매번 조건에 만족하지 않으므로 결과가 나오지 않는다123456789101112131415161718192021222324252627/* Ex 1 : */select rownum, id, name, salary from emp_test order by salary desc nulls last; /* Ex..

Database/Theory 2016.06.08