본문 바로가기

728x90
반응형

배우기

(265)
oracle(11g) 오라클 설치 방법 오라클을 여러 번 설치하고 나니 그 과정이 기억에 남을 때 적어두어야 할 것 같아 기록해둔다. 학원에서 첫 실습을 할 때 설치했고, 집 데스크톱에 복습을 위해 설치를 했다. 그리고 학원 데스크톱이 갑자기 먹통이 되는 바람에 새 PC에 설치를 했고 새로 산 노트북에도 오늘 설치를 했다. 그럼 과정 하나 씩 기록해보자. 0. 먼저 선생님이 주신 두 파일은 같은 경로 안에서 압축을 풀어야 한다. 그렇지 않으면 무조건 설치 과정에 오류가 발생한다. 1. setting 파일을 누르면 아래처럼 최소 요구사항을 충족하지 않는다고 한다. 계속하겠다고 하면 된다. 2. 따로 서포트를 받지 않을 것이기 떄문에 체크 해제 후 다음 버튼 클릭한다. 3. 데이터베이스 생성 및 구성에 체크 된 상태에서 다음으로 넘어간다. 4. ..
[실습문제] 2023. 10. 31.(화) 문제 풀이(5문제) 31일에 왜 실습문제를 복습 안했는지 기억이 안나지만 누락되어있길래 오늘 다시 풀어보며 추가한다. 실습문제 1. student 테이블에서 1976년 1월에 태어난 학생의 이름, 학년, 생년월일을 출력하여라. 예전 거라 그런지 쉽게 풀이가 가능했다. 실습문제 2. professor 테이블에서 입사연도가 2000년보다 이른 경우 pay를 20% 인상, 2000년도 이후에는(2000년도 포함) 8% 인상하여 인상된 연봉과 함께 이름, 입사연도를 출력하여라 실습문제 3. professor 테이블에서 입사연도별 최대급여, 최소급여, 평균급여를 출력하여라. 단 입사연도는 1980, 1990, 2000, 2010년대로 표현하여라. 당시에 내가 풀지 못한 문제이다. 지금 차근차근 생각해보며 풀어봐야겠다. 또 풀지 못했..
[복습] SQL | Oracle join 넘어 또 산, 서브쿼리 (2) + 복습후기(20231103) 메인쿼리(가장 바깥에 있는 쿼리) 안에 있는 쿼리를 서브쿼리라고 하며 서브쿼리는 여러 depth로 표현이 가능하다. select (select ...) 스칼라 서브쿼리, 서브쿼리를 컬럼화 하겠다는 의미이며, from (selelct ...) 인라인뷰이며, 서브쿼리를 테이블화 하는 것이다. where 컬럼1 =(in) (select ...) 일반 서브쿼리로 가장 대표적인 형태이며 상수화를 의미한다. 만들어진 정보를 토대로 테이블을 찾는 다는 의미이다. 형태에 따른 분류를 하게 되면 1. 단일행 서브쿼리 이런 식으로 하나의 대상이 오는 것도 가능하다. select * from emp where (deptno, sal) = (10, 5000); 2. 다중행 서브쿼리 3. 다중컬럼 서브쿼리 오늘 배운 내용이, ..
[실습문제] 2023. 11. 2.(목) 문제 풀이(5문제) 실습문제 1. movie_table_t1 테이블을 사용하여 시도별 영화 이용비율이 가장 높은 연령대를 확인하여라(시도, 연령대, 이용비율 출력). 나의 경우에는 이 문제를 다중컬럼 서브쿼리로 풀었다. 아직 이름이 익숙치 않고 그냥 감으로만 풀었는데 앞으로는 내가 어떤 서브쿼리로 풀어가는지도 인지해야겠다. 먼저 다중컬럼 서브쿼리를 사용한 쿼리이다. 사전정보( group by 정보)를 where절 상수로 사용한다. 메인쿼리절의 컬럼만 출력되므로 메인쿼리에 없는 데이터는 select 처리할 수 없다. max(이용비율)이 위와 같은 경우는 서브쿼리에 있으므로 얘는 메인쿼리 select에 올 수 없다는 의미이다. 성능은 둘 째 치고 서브쿼리에 미리 만들어둔 사전정보 일부를 메인 select에 올리고 싶으면 인라인..
[복습] SQL | Oracle join 넘어 또 산, 서브쿼리(1) + 복습후기(20231102) 맨날 테스트하던 emp 테이블이 있다. 거기서 부서별 최고 연봉을 출력해보자. 드디어 이런 궁금증을 해결할 수 있는 날이 왔다. "그래서 최고 연봉을 받는 사람이 누구야?" 궁금증 해결은 아래에서....ㅎ 다른 데이터를 살펴보자. movie_table에서 강원도는 어떤 연령대의 영화 이용 비율이 높은지가 궁금하다거나, 시도별 가장 높은 연령대 영화이용비율이 어느 대인지 궁금하다. 그렇다면 시도별, 연령대별 이용 비율을 확인하여야 한다. 즉 목적에 따라 1차적 가공이 필요한 데이터이다. 그래서 데이터를 해석하고 1차 가공을 할 수 있는 감각이 여기서 중요하다. 이제까지 공부를 해왔다면 여기까지는 바로 작성할 줄은 알아야 한다. 이제 여기서 강원도의 최고 이용비율을 보이는 연령대를 출력하기 위해서는 아래처럼..
[복습] SQL | Oracle 첫 번째 마주한 큰 산, join (3) - join 복습 어제 join 공부한 내용을 토대로 정리를 해보자면, 1. join 조건 형태에 따라 1) equi join ansi 표준) from table1 join table2 2) non equi join ansi 표준) from table1 join table2 2. 출력 데이터 생략 여부에 따라 1) inner join(기본) ansi 표준) from table1 join table2 2) outer join ansi 표준) from table1 left/right outer join table2 3. join 형태에 따라 1) cross join: 카티시안 곱이 출력되는 형태 oracle 표준) select * from emp, dept; (그냥 나열하면 된다, join 조건 명시하지 않으면 cross j..
[실습문제] 2023. 11. 1.(수) 문제 풀이(5문제) 실습문제 1. emp 테이블에서 각 직원의 이름, 사번, 급여와 함께 각 직원의 같은 부서에 있는 선배(입사일이 빠른) 수를 출력하여라. 단, 선배가 없더라도 출력이 되어야 한다. 먼저 나는 아래와 같은 방법으로 풀었다. 입사일자끼리 비교를 해야하는데, 먼저 들어온 사람 입사일자가 작기 때문에 사원 입사일에서 선배 입사일을 빼면 양수가나오는 것으로 접근하여 해결하였다. 결론적으로는 답은 맞게 나왔는데 선생님은 그냥 바로 날짜 비교를 하셨다. 사원보다 사수 날짜가 더 오래되었기 때문에 사원 날짜가 클 때 카운트를 하도록 하였다. 그리고 여기서 포인트는 outer join에 있다. 동명이인이 없다는 가정 하에 group by를 하면 직원별이라는 그룹이 성립된다. 동명이인이 있을 수 있기 때문에 사원번호로 넣..
[복습] SQL | Oracle 첫 번째 마주한 큰 산, join (2) + 복습후기(20231101) 바로 join에 대한 문제를 풀어보자. 참고로 테이블명이 기억이 나지 않는 경우 select * from tab; 실행하면 현재 접속한 유저 소유의 테이블 목록을 알 수 있다. student, exam_01 테이블을 이용하여 학년별 학생의 시험성적의 평균, 최고점수, 최저점수를 출력하여라. 많이 풀어 본 문제 형태여서 금방 풀 수 있었다. 쿼리에 group by를 먼저 쓰는 순간 select에 제한이 생긴다. 문제를 풀기 전 일단 데이터를 펼쳐두고 group by로 축약해가는 것이 좋다. 이렇게 사고의 흐름이 시작되어야 한다. 다음은 professor, student 테이블을 사용하여 각 교수의 이름, 직급, 교수의 지도학생 수를 출력하여라. 단, 지도학생이 없는 교수도 출력하여라. 문제에 ~별 이라고 ..
[복습] SQL | Oracle 첫 번째 마주한 큰 산, join (1) 드디어 join을 배웠다. 오늘 배우는 내내 머리에 힘 주느라 너무 지쳤지만, join 공부는 끝내고 집에 가야겠다. 복습 후기는 끝에 가서 풀기로 하고 바로 join으로 들어가겠다. join 다음에 서브쿼리도 함께 배울테지만, join과 서브쿼리는 함수가 아니라 표현식이다. join은 분리된 두 테이블을 참조한다. 엑셀의 vlookup처럼 분리된 한 쪽 테이블 컬럼 값을 다른 테이블을 참조해야지만 가져올 수 있는 경우 같은 것이다. 정리하자면, 다른 쪽 테이블 정보를 참조하여 필터링 하거나 혹은 원하는 결과를 출력하는 등 여러 목적을 가지고 있다. 다음 예제에서 살펴보겠다. emp, dept 테이블을 사용하여 사원이름, 급여, 부서명을 출력하여라. emp에는 deptno라는 컬럼이 있고 dept테이블에..
[복습] SQL | Oracle 두 테이블의 결합, 집합연산자(합집합 union, union all, 교집합 intersect, 차집합 minus) join에 본격적으로 들어가기 전에 집합연산자를 먼저 살펴보자. 집합연산자는 select문 결과를 하나의 집합으로 합쳐야 하거나, 여러 select문의 결과에 대한 합집합, 교집합, 차집합을 연산한다. 집합연산자는 select문과 select문 사이에 쓰인다. 즉, 위치가 정해져 있다. 집합연산자의 종류로 세 가지가 있다. 1) union / union all: 합집합 유사한 두 테이블이 있을 때 또는 완전히 분리되어있는 세트를 세로로 결합할 때 합집합으로 계산한다. 예를 들어, 10번 부서 정보와 20번 부서 정보가 각각 분리되어있다고 가정할 때, 합집합으로 정보를 모아보자. 이런 형태로 쓸 수 있다. 2) intersect: 교집합 교집합도 예시로 살펴보자. 10번 부서 정보가 아닌 부서원 집합과(2..

728x90
반응형