본문 바로가기

Oracle

(101)
SQL 을 이용한 감정분석 (스티브잡스 연설문) 이 연설문에는 긍정단어가 많은지, 부정단어가 많은지 분석 해 보겠다. 1. 먼저 테이블 생성. create table speech (speech_text varchar2(1000)); 2. 연설문 text 데이터 임포트 jobs.txt 3. 연설문 전체를 어절별로 나누어야 한다. 정규식 함수 사용 ( regexp_substr) select * from ( select regexp_substr(lower(speech_text) , '[^ ]+', 1, a) as word from speech, ( select level as a from dual connect by level 그래야 불필요한 데이터 없이 단어들만 추출된다. 4. 어절, 어절별 건수를 높은 순으로 출력 할 것 ( 어절 = word) sele..
SQL CREATE 생성방법, 데이터타입 종류 create 로 생성할 수 있는 데이터 오브젝트는 table, view, index, sequence , synonym 5가지 가 있다. table 생성 방법 Create table 테이블명 컬럼명1 데이터 타입(byte 수), 컬럼명2 데이터타입(byte 수), 컬럼명3 데이터타입 (byte 수 ) , . . . ) ; 테이블명과 컬럼명 지정 시의 규칙 1. 반드시 문자로 시작해야한다. 2. 이름의 길이는 30자 이하여야한다. 3. 대문자 알파벳과 소문자 알파벳과 숫자를 포함 할 수 있다. 4. 특수문자는 $,_ ,# 만 가능하다. 예제 emp93 table 을 생성해라~ create table emp93 (empno number (10), ename varchar2(10), sal number(10,..
SQL Create 로 만들 수 있는 데이터 베이스 오브젝트 1. tabel : 데이터베이스에 데이터를 저장하는 기본 저장소 (행 row , 열 column 으로 이루어져있다.) 2. view : 복잡한 쿼리문을 간단하게 access 하기 위한 DB objeck ( 뷰가 따로 데이터로 저장되는 형태가 아닌 그냥 테이블을 조합화여 조회한 결과 창이다 = 가상의 테이블 . ) 3. index : 대용량 데이터에서 특정 데이터의 검색을 빠르게 하는 DB ( 책의 목차 같은것 , 쿼리 성능향상 ) 인덱스를 생성해야하는 경우 - 조건절이나 조인조건에서 컬럼을 자주이용할때 -컬럼이 넓은 범위값 - 많은 Null 값을 갖는 컬럼일 경우 4. sequence : 번호 생성기 ( 겹치지 않는) (primary key 값을 생성시 필요하다) 5. synonym : 동의어 ( emp..
* SQL 계층형 질의문 connect by 절 level 서열을 주어 데이터 출력 데이터에서 서열을 출력하는 SQL 문법 ex) emp table 에는 서열이 존재한다. →숨어있는 서열을 화면에 표시하는것. →서열과 관련된 컬럼은 mgr (관리자 번호 이다.) → 관리자번호(mgr)를 이용한 서열 출력 할 수 있다. connect by 절을 쓸때 절들의 역할 where : 데이터들을 모두 가져온 뒤 마지막으로 조건절에 맞게 정리한다. start with : 계층구조를 만들때 기준이 되는 데이터를 입력한다. connect by prior : 각 행들의 연관된 관계를 적어준다. * 숫자를 1부터 10 까지 출력 하는 방법 select level as 숫자 from dual connect by level 2400 start with ename = 'KING' connect by prior ..
SQL 서브쿼리를 이용한 데이터 합치기 Merge 튜닝전 sql 이 보이면 바로 merge 문으로 튜닝해주기 문제 454 dept 에 추가한 sumsal 컬럼의 값을 해당 부서번호의 별 토탈월급으로 갱신하시오 merge into dept d using (select sum(sal) as sumsal from emp group by deptno ) v on (d.deptno = v.deptno) when matched then update set d.sumsal = v.sumsal ; 문제 455 부서번호의 40 번의 sumsal 이 숫자 0으로 갱신되도록 merge 문 작성 merge into dept d using (select deptno, sum(sal) sumsal from emp group by deptno ) v on (d.deptno = v..
SQL 서브쿼리를 이용한 DATA 삭제 Delete 스캇보다 더많은월급 받는 사원들 삭제 delete from emp where sal > (select sal from emp where ename ='SCOTT'); SCOTT 과 같은 직업을 갖는 사원 삭제, SCOTT 은 제외 하고 삭제하시오 delete from emp where job = (select job from emp where ename = 'SCOTT') AND ENAME != 'SCOTT'; allen 보다 늦게 입사한 사원들 삭제 delete from emp where hiredate > (select hireate from emp where ename ='ALLEN'); 만약 서브쿼리를 이용한 Delete 문을 수행하지 않는다면 쿼리문을 두번 실행하여 데이터를 삭제해야한다. 마지막..
SQL 서브쿼리를 이용한 DATA 수정 Update (update 절에 튜닝시 merge 만큼빠름) update 문에 서브쿼리를 쓸 수 있는 절 update 테이블명 set 변경할 컬럼과 값 where 조건 → 서브쿼리절은 , update, set, where 절 3개 모두 가능하다. 여러개의 데이터를 한번에 갱신할 수 있는 SQL / 많은 양의 데이터 갱신할때는 튜닝된SQL 을 작성해야된다. ******* 튜닝된 SQL 이란 merge 문 과 update 절의 subqery 문 이다. (1) where 절에 서브쿼리를 쓰는경우 예제: 스미스 보다 더많은 월급을 받는 사원들의 부서번호를 10번으로 수정 update emp set deptno = 10 where sal < (select sal from emp ename = 'SMITH'); 문제 :ALLEN 보다 늦게입사한 사원들 커미션을 9000으로 ..
SQL 서브쿼리를 이용한 DATA 입력 Insert insert into 문에 value 가 아닌 select 절을 이용하여 한번에 데이터를 입력하는 방법이다. (1) emp_backup 이라는 테이블을 생성하고 그안에 데이터를 emp 테이블 데이터로 한번에 추가하고 싶을때 insert 문에 서브 쿼리문을 이용하여 한번에 입력 할 수 있다. 예제 : emp table 을 그대로 복제한 emp2 테이블 부서에 deptno 가 10 번인 사원들의 empno, ename, sal, deptno 를 한번에 갱신 해보자. insert into emp2 (empno, ename, sal, deptno) select ename, ename, sal, deptno from emp where deptno =10; -> 이런식으로 일반적으로 insert 문장을 쓸때 쓰던 ..