일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 파이썬
- 알고리즘
- 오라클
- level 2
- seaborn
- matplotlib
- 카카오
- pandas
- R
- Oracel
- level 1
- sklearn
- 실습
- 머신러닝
- SQL
- 실기
- oracle
- 데이터 분석
- Kaggle
- 튜닝
- Numpy
- python3
- 코딩테스트
- 빅데이터 분석 기사
- 프로그래머스
- 빅분기
- Python
- Today
- Total
목록프로그래밍/Oracle (44)
라일락 꽃이 피는 날
Sequence (시퀀스) 순서대로 번호를 생성하는 번호 생성기다. 왜 시퀀스가 필요한가? 부서 테이블에 새로운 부서 번호를 입력해야 하는데, 10번 단위로 부서 번호가 입력되고 있고 지금 40번까지 입력된 상태다. 그래서 다음으로는 50번을 입력해야 한다. 이럴 때 현업에서 사용하는 안 좋은 방법은 dept 테이블을 검색해서 최대 부서 번호가 무엇인지 확인하는 것이다. 예제 1. 시퀀스를 이용하여 10씩 자동으로 증가하는 번호 생성기 사용 create sequence dept_seq start with 60 increment by 10; 시작 숫자를 60으로 하고 10씩 증가하는 번호를 생성하는 시퀀스다. insert into dept values(dept_seq.nextval, 'aaaa', 'bbb..
예제 1. -- 튜닝 전 select /*+ gather_plan_statistics */ ename, sal from emp where sal * 12 = 36000; SELECT * FROM TABLE(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST')); -- 튜닝 후 select /*+ gather_plan_statistics */ ename, sal from emp where sal = 36000 / 12; SELECT * FROM TABLE(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST')); 버퍼의 개수가 7개에서 2개로 줄었다. where 절에 검색 조건의 컬럼을 가공하게 되면 index access 를..
Index (인덱스) 대용량 데이터가 들어있는 테이블에서 특정 데이터를 검색할 때 검색 속도를 높이기 위한 database object 대용량 데이터가 있는 환경에서 SQL을 작성할 때는 인덱스를 잘 이해한 상태에서 SQL을 작성해야 한다. SQL 의 실행 계획 1. 예상 실행 계획 : SQL 을 실행하기 전에 이렇게 실행될 것이다 라고 예상된 실행 계획 2. 실제 실행 계획 : SQL 을 실행하면서 사용한 실제 실행 계획 예제 1. 월급이 1600인 사원의 이름과 월급을 출력하는 예상 실행 계획을 확인 explain plan for select ename, sal from emp where sal = 1600; select * from table(dbms_xplan.display); 월급 1600 을 ..
View (뷰) 테이블과 비슷하지만 데이터를 저장하고 있지는 않고 select 문으로 데이터를 검색하는 결과를 출력하는 db_object 뷰를 사용했을 때의 장점 1. 보안상의 이유로 민감한 데이터를 노출시키고 싶지 않을 때 2. 복잡한 쿼리문을 간단하게 쿼리하고 싶을 때 뷰의 종류 단순 view 복합 view 테이블의 개수 1개 2개 이상 함수 포함 여부 포함 안 함 포함 데이터 갱신 여부 갱신됨 수정 안 될 수도 있음 예제 1. 사원 테이블에서 사원 번호, 이름, 월급을 출력하는 view 생성 create or replace view emp57 as select empno, ename, sal from emp; 테이블은 data 를 저장하지만 view 는 데이터를 저장하지 않는다. view 는 원본 ..
임시 테이블은 영구히 데이터를 남길 필요가 없는 임시로 사용할 데이터인데, 이 데이터가 아주 큰 빅데이터일 때 주로 사용한다. 임시 테이블 생성 방법 1. on commit delete rows : 데이터를 commit 할 때까지만 유지하고, commit 이후에는 데이터가 사라진다. 2. on commit preserve rows : 데이터를 세션을 종료할 때까지만 유지한다. (세션 종료라는 것은 sqldeveloper 를 종료할 때까지 라는 것이다.) 예제 1. 임시 테이블 생성 - on commit delete rows 옵션 사용 create global temporary table emp56 ( empno number(10), ename varchar2(20), sal number(10) ) on ..
create 문으로 만들 수 있는 데이터베이스의 오브젝트 1. table : 데이터베이스에 데이터를 저장하는 기본 저장소 2. view : 복잡한 쿼리를 간단하게 엑세스 하기 위한 db object 3. index : 대용량 데이터에서 특정 데이터의 검색을 빠르게 할 수 있는 db object 4. sequence : 번호 생성기 5. synonym : 동의어 (예: 핸드폰 기계는 하나인데 번호가 2개인 경우) create table 다음에 테이블명을 적으면 되는데, 테이블명을 지을 때는 반드시 문자로 시작해야 한다. 그리고 테이블명의 길이는 30자를 넘을 수 없고, 특수문자는 $, _, # 만 포함할 수 있다. 컬럼명 다음에는 데이터 유형을 기술하는데, 데이터 유형이 3가지가 있다. 문자형 : char..
계층형 질의문은 서열이 있는 데이터에서 서열을 출력하는 SQL 문법이다. 사원 테이블에는 서열이 존재하기 때문에, 그 숨어있는 서열을 화면에 표시하는 것이다. 서열에 관련된 컬럼이 mgr(관리자 번호) 이다. 예제 1. 사원 이름, 서열, 월급, 직업을 출력 select ename, level, sal, job from emp start with ename = 'KING' connect by prior empno = mgr; start with 절에는 시작되는 사원을 기술하면 된다. 예제 2. level 만큼 앞에 공백을 채워 넣어서 사원 이름, 서열, 직업, 월급을 출력 select rpad(' ', level*3) || ename as employee, level, job, sal from emp s..
회사에서 차세대 프로젝트라고 해서 전산 쪽에 관련한 큰 프로젝트를 한다고 하면 내용이 무엇인가? - 데이터를 저장하는 컴퓨터(서버)를 더 좋은 것으로 교체한다. - 옛날 컴퓨터(서버)에 있었던 데이터를 새로운 컴퓨터(서버)로 옮긴다. - 새로운 컴퓨터에 있는 데이터를 select 해서 새로운 홈페이지나 UI(사용자 화면)를 개발한다. 예제 1. emp_new 라는 테이블을 생성 create table emp_new as select * from emp where 1 = 2; 1 = 2 가 거짓 조건이므로 emp 테이블을 가지고 emp_new 를 만들 때, 데이터는 못 가져오고 구조만 가져와서 생성한다. insert into emp_new select * from emp; update 문에서 서브 쿼리를 ..