SQL 27

R - sqldf

sqldf SQL을 이용해서 데이터를 처리 sqldf 라이브러리 설치 및 임포트 install.packages("sqldf") library(sqldf) sqldf 사용 예 # emp 테이블에서 사원번호 출력 sqldf("select employee_id from emp") # 부서번호가 20인 사원들의 사원번호 출력 sqldf("select employee_id from emp where department_id=20") # 부서번호들의 중복을 제거하고 출력 sqldf("select distinct department_id from emp") # 부서번호가 30인 사원들의 모든 정보 출력. 급여를 내림차순으로 정렬 sqldf("select * from emp where department_id=30 o..

인공지능/R 2020.04.17

파이썬(Python) - 파이썬에서 오라클 SQL로 접속하는 방법

1. Anaconda Prompt창을 관리자 권한으로 실행한다. 2. cx_Oracle 라이브러리를 설치한다. 혹시 라이브러리가 기존에 설치되어 있다면 업그레이드한다. python -m pip install cx_Oracle --upgrade 3. 파이썬 IDE를 실행시키고 cx_Oracle를 임포트한다. import cx_Oracle 4. 접속해야할 DB서버의 아이피 주소 혹은 서버이름, 포트번호, SID 정보를 입력한다. dsn = cx_Oracle.makedsn("localhost",1521,"xe") dsn 5. 데이터 베이스의 이름, 비밀번호, dsn으로 데이터 베이스에 연결한다. db = cx_Oracle.connect("hr","1234",dsn) db 6. SQL문 실행 메모리 영역(cur..

오라클 SQL - Top - N 분석

SQL에서 Top-N분석을 하기 위해서는 rank() over()문을 사용한다. 1.1) rank()는 중복 순위 다음 순위를 건너뛰고 1.2) dense_rank()는 중복 순위 다음 순위를 건너뛰지 않는다. rank() over()에서 over()은 분석함수이며 괄호 안에 2.1) order by를 사용하여 정렬하거나 2.2) partition by를 사용하여 분류별 랭크를 지정할 수 있다. 2.3) 또한 select절의 group함수 뒤에 over()을 붙이면 group by절을 사용하지 않아도 되며 2.4) group함수 뒤에 over(order by)를 붙이면 정렬 및 누적 연산을 구할 수있다. 1. rank와 dense_rank 1.1 select rank() over(order by sala..

인공지능/SQL 2020.03.19

SQL문 처리 단계

1. parse 문법(syntax)검사 -> 의미(semantic)검사 -> 권한 검사 -> 실행 계획 생성 메모리에 실행 계획 만든다. 실행계획 : 데이터를 어떻게 찾아오는게 가장 좋은지(데이터 엑세스방법 : rowidscan / fulltablescan) 2. bind 변수에 실제값이 들어가는 단계 SQL 문장의 변수처리 : select * from employees where employee_id = :v_id; 변수처리하는 이유는 실행계획을 sharing하기 위해서이다. sql문장의 실행계획을 sharing하려면 대소문자, 공백문자, tap키, enter키, 주석문자, 힌트, 상수값, 리터럴값이 다 맞아야한다. 실행계획 sharing 못하면 실행계획을 만들어야한다. -> CPU 사용량과 디스크 I..

인공지능/SQL 2020.03.18

파이썬(Python) - Sqlite 사용법

sqlite 별도의 DB서버가 필요없이 DB파일 기초하여 데이터베이스 처리하는 엔진 # sqlite3 라이브러리를 임포트 import sqlite3 1. 기본 사용법 # 메모리에다가 DB서버를 구성(연결)하기 conn = sqlite3.connect(":memory:") # sql문 작성하고 실행할 수 있는 메모리 영역 만들기 c = conn.cursor() # 테이블 생성 및 데이터 타입 지정하기 / integer = 숫자타입 c.execute("create table dessert(id integer, name char, kal integer)") # 테이블안에 값 넣기 c.execute("insert into dessert(id,name,kal) values(1,'케이크',324)") # 메모리에 ..

오라클 SQL 오류 모음

1. 오류발생 요청한 작업을 수행하는 중 오류 발생: IO 오류: The Network Adapter could not establish the connection 업체 코드 17002 원인 Oracle Listener가 실행되지 않음. 해결방법 [내PC] - 오른쪽 마우스 클릭 - [관리] - [서비스 및 응용 프로그램] - [서비스] - [OracleXETNSListener] - 오른쪽 마우스 클릭 - [시작] 2. 오류발생 ORA-00904: "GIRE_DATE": invalid identifier 00904. 00000 - "%s: invalid identifier" *Cause: *Action: 원인 컬럼명을 잘못씀 해결방법 오타난 부분 수정 3. 오류발생 ORA-01830: date forma..

인공지능/SQL 2020.02.29

오라클 SQL - ROWID와 INDEX

ROWID 데이터 처리 방법은 크게 두 종류로 나뉜다. full table scan by user rowid scan 여기서 by user rowid scan은 row마다 갖고있는 고유 주소(rowid)를 찾아가는 방법이다. {HR SESSION} rowid를 확인하는 방법은 다음과 같다. : create table emp as select * from employees; select rowid, employee_id from emp; rowid를 사용하면 원하는 데이터를 직접 찾을 수 있다. : select * from emp where rowid = 'AAAE/5AAEAAAAJTAAD'; F10을 눌러서 실행계획을 보자. 처리 방식이 변한것을 확인할 수 있다. (기존 fullscan 방식의 실행계획 ..

인공지능/SQL 2020.02.16

오라클 SQL - Data 처리 방법

Data 처리 방법 개요 Data를 처리는 아래와 같은 방법들이 있다. 각 방법의 I/O가 얼마나 발생하는지 보고 더 적게 발생하는 방법을 선택하는 것이 좋다. 1. full table scan 2. rowid scan 2-1) by user rowid scan 2-2) by index rowid 2.2.1 index unique scan 2.2.2 index range scan 2.2.3 inlist iterator 2.2.4 index full scan 2.2.5 index fast full scan 1. full table scan 많은 양의 데이터를 검색할때 유용하다. 그룹함수 쓸 때 사용한다. multi block I/O가 발생한다. multi block : block을 한번에 여러개씩 묶어서 ..

인공지능/SQL 2020.02.14

오라클 SQL - 시퀀스(Sequence) 사용하기

시퀀스(Sequence)란 무엇인가? 자동 일련번호를 생성하는 object이다. create sequence 시스템 권한이 있어야 사용 가능하다. 시퀀스 생성 / 삭제 / 수정 1) 시퀀스 생성 간단 시퀀스 생성 : create sequence id_seq; select * from user_sequences; 구체적인 시퀀스 생성 : create sequence id_seq increment by 1 ------> 1씩 증가 (기본값 : 1) start with 1 -----------> 시작점 1 (기본값 : 1) maxvalue 100 ---------> 끝점 100 (기본값 : 10의 27승(무한)) nocache ---------------> 시퀀스를 미리 만들어 놓고 메모리에서 가져다 쓰지않겠..

인공지능/SQL 2020.02.13

오라클 SQL - 뷰(VIEW) 사용하기

뷰(View)란 무엇인가? 하나 이상의 테이블에 있는 데이터를 논리적으로 처리하는 오브젝트이다. 실제 데이터를 갖지 않고 단지 select 문만 가지고 있다. 간접 access 한다. 즉 보여주고 싶은 데이터만 나열해서 보여줄 수 있다. create view 시스템 권한이 필요하다. create view 권한 확인하는 방법 : > select * from session_privs; 뷰의 기능 (간접 access) {HR SESSION} 뷰 만들기 : create view emp_20 as select * from employees where department_id = 20; 뷰 조회하기 : select * from emp_20; 마치 employees 테이블의 데이터처럼 보여지고있다. 이것이 뷰의 기능..

인공지능/SQL 2020.02.13
반응형