개발및운영 Tibero SQL 가이드

Size: px
Start display at page:

Download "개발및운영 Tibero SQL 가이드"

Transcription

1 Tibero SQL 가이드

2 목차 1. SQL SQL 개요 SQL 문장분류 SQL 작성시요구사항 SQL 문장의구성요소 데이터타입 문자형 숫자형 날짜형 간격형 대용량객체형 내재형 리터럴 형식문자열 의사컬럼 ROWID ROWNUM LEVEL CONNECT_BY_ISLEAF NULL 주석 힌트 힌트의종류 접근방법 최적화방법 접근방법 조인순서 조인방법 병렬처리 실체화뷰 기타 스키마객체 SQL 연산자 SQL 함수

3 4.1. 단일행함수종류 그룹행함수종류 JOIN JOIN 유형 JOIN 방식 SUBQUERY SUBQUERY 유형 DML DML 유형 INSERT UPDATE MERGE DELETE TRANSATION TRANSACTION COMMIT SAVEPOINT ROLLBACK / ROLLBACK TO SAVEPOINT_NAME SQL 활용가이드 SQL 구문활용가이드 SQL 함수, 키워드및조건절활용가이드 Distinct, Decode, 그룹함수 (SUM, AVG) OR 및 WHERE 절구문 IN EXISTS Join 활용가이드 Outer Join Index 활용가이드 Index 를사용할수없는경우 유형별해결방안 - Index 구성컬럼의외부적변형 유형별해결방안 - Index 구성컬럼의내부적변형 유형별해결방안 - 부정형비교 유형별해결방안 - NULL 값비교

4 Tibero SQL 가이드 1. SQL 1.1. SQL 개요 SQL(Structure Query Language) 은 RDBMS 를사용하기위해 ANSI 에서채택한표준언어로 Tibero 서버와통신하기위 한명령언어이다 SQL 문장분류 구분내용명령어설명 DML (Data Manipulation Language) 데이터베이스객체내의데이터조회및삽입, 삭제, 변경을위한문장 SELECT INSERT UPDATE DELETE 데이터조회 데이터삽입데이터변경 데이터삭제 DDL (Data Definition Language) 데이터베이스객체를생성, 변경, 제거하기위한문장 CREATE ALTER DROP RENAME TRUNCATE 객체생성객체변경객체제거객체이름변경 객체데이터삭제및사용한 저장공간모두해제 TCL (Transaction Control Language) Transaction 종료및취소하기위한문장 COMMIT ROLLBACK SAVEPOINT 트랜잭션완료트랜잭션취소 트랜잭션특정시점저장 DCL (Data Control Language) 데이터및객체들의작업에대한권한을부여하고취소하기위한문장 GRANT REVOKE 권한부여 권한회수 1.3. SQL 작성시요구사항 SQL문은대소문자를구별하지는않지만프로젝트의가이드에맞추도록한다. SQL문은하나이상의줄에입력할수있지만, 키워드는여러줄에입력할수는없다. 절은일반적으로읽기쉽고편집하기쉽도록다른줄에쓴다. 들여쓰기를사용하면좀더읽기쉬운 SQL문을작성할수있다. 일반적으로키워드는대문자로입력하고테이블이름, 열등다른단어는모두소문자로입력한다. TAB 과들여쓰기를사용하여좀더읽기쉬운 SQL로작성하도록한다. 4

5 2. SQL 문장의구성요소 구분 데이터타입 설명 Tibero RDBMS 에서는 SQL 표준에기반한여러가지데이터타입을제공한다 리터럴상수값을의미한다. 형식문자열 NUMBER 타입과날짜형타입의값을문자열로변환하기위한형식을정의한 것이다. 의사컬럼시간간격을표현하는데이터타입이다. NULL 한로우에서어떤컬럼에값이없을때그컬럼을 NULL 이라고한다. 주석 힌트 스키마객체 책이나문서에서주석이낱말이나문장의뜻을쉽게풀이하는역할을하듯 SQL 문장에도주석을활용하여해당문장의부연설명을삽입할수있다. SQL 문장에힌트를추가하여 Tibero RDBMS의질의최적화기 (Optimizer) 에특정행동을지시하거나질의최적화기의실행계획을변경한다. 한사용자가하나의스키마만을정의할수있고, 스키마의이름은항상사용자의이름과동일하다. 이러한스키마에포함된객체를스키마객체라한다 데이터타입 구분데이터타입설명 문자형 CHAR, VARCHAR, VARCHAR2, NCHAR, NVARCHAR, NVARCHAR2, RAW, LONG, LONG RAW 문자열을표현하는데이터타입 숫자형 NUMBER, INTEGER, FLOAT 정수나실수의숫자를저장하는데이터타입 날짜형 간격형 DATE, TIME, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND 시간이나날짜를저장하는데이터타입 시간이나날짜사이의간격을저장하는데이터 타입 대용량객체형 CLOB, BLOB, XMLTYPE 대용량의객체를저장하기위해 Tibero에서제공하는가장큰데이터타입 내재형 ROWID 사용자가명시적으로선언하지않아도Tibero가삽입되는로우마다자동으로부여하는데이터 타입 5

6 문자형 CHAR (n) - 문자열을저장하는데이터타입이다. 항상고정된문자열길이를갖는다. VARCHAR(n) - 가변길이문자데이터. 최대 4000byte 까지선언 NCHAR - 유니코드문자열을저장하기위한타입.( 고정길이 ) 최대 2000byte 까지선언 NVARCHAR - 유니코드문자열을저장하기위한타입.( 가변길이 ) 최대 4000Byte 까지선언 NVARCHAR2 - NVARCHAR 타입과완전히동일 RAW - 임의의바이너리데이터를저장하기위한타입. 최대 2000byte 까지선언 LONG - 최대 2G까지선언. 일반문자열저장 LONG RAW - 최대 2G까지선언. 바이너리데이터저장 숫자형 NUMBER (p,s) - 가변길이숫자데이터. 전체 p 자리중소수점이하 s 자리 날짜형 DATE - 날짜및초단위까지의시간을선언. TIME - 초단위소수점 9자리까지시간을선언. TIMESTAMP - 날짜와초단위소수점 9자리까지의시간을선언. TIMESTAMP WITH TIME ZONE - TIMESTAMP 타입을확장하여시간대까지표현 TIMESTAMP WITH LOCAL TIME ZONE - 특정세션의시간대에따라다르게시간정보를표현 간격형 INTERVAL YEAR TO MONTH - 연도와월을이용하여시간간격을표현 INTERVAL DAY TO SECOND - 일, 시, 분, 초를이용하여시간간격을표현 대용량객체형 BLOB - 최대 4G까지선언. 바이너리저장 (LONG RAW을확장한데이터타입 ) CLOB - 최대 4G까지선언. 일반문자열저장 (LONG을확장한데이터타입 XMLTYPE - XML(Extensible Markup Language) 은구조화되거나그렇지않은모든데이터를표현하기위해 W3C (World Wide Web Consortium) 에의해표준으로제정된형식 - Tibero에서 XML 데이터를저장하기위해 XMLTYPE 타입을제공하고, 내부적으로 CLOB 형식으로저장 내재형 ROWID - 사용자가명시적으로선언하지않아도 Tibero RDBMS 가삽입되는 ROW 마다자동으로부여 하는데이터타입 6

7 2.2. 리터럴 구분문자열리터럴숫자리터럴날짜형리터럴간격리터럴 설명문자열리터럴문자열을표현할때사용하는리터럴숫자리터럴정수또는실수를표현할때사용하는리터럴날짜형리터럴날짜와시간정보를표현하는리터럴간격리터럴특정시간과시간사이의간격을표현하는리터럴 문자열리터럴 'Tibero' 'Database' '2009/11/11' 숫자리터럴 e 날짜형리터럴 TO_DATE('2005/01/01 12:38:20', 'YY/MM/DD HH24:MI:SS') TO_TIME('12:38: ', 'HH24:MI:SSXFF') TO_TIMESTAMP('09-Aug-01 12:07:15.50', 'DD-Mon-RR HH24:MI:SS.FF') 간격리터럴 INTERVAL '12-3' YEAR TO MONTH INTERVAL '123' YEAR(3) INTERVAL '123' MONTH INTERVAL '1' YEAR INTERVAL '1234' MONTH(3) 2.3. 형식문자열 NUMBER 타입과날짜형타입의값을문자열로변환하기위한형식을정의한것이다. NUMBER 타입 형식요소예제결과설명,( 쉼표 ) or D 9,999 9D999 1,234 해당위치에쉼표를표기한다..( 마침표 )or G 9, , 해당위치에소수점을표기하고지정된자릿수에데이터가 7

8 없으면 0 을표기한다. $ $9,999 $1,234 숫자의시작에달러문자를표기한다. 0 00,999 01,234 해당되는위치에값이없을경우 0 을표기한다. MI 9999MI 음수부호를표기하는형식요소문자를숫자로변환시엔음수기호를앞에표기해주고, 숫자를문자로변환시엔음수기호를뒤에표기한다. PR 9999PR <1234> 음수에대해서숫자를문자로변환할때만음수표시 S S S 양수 / 음수부호를해당위치에표기한다. NUMBER 타입 -- 9,999 SELECT to_char('1234','9,999')from dual; TO_CHAR('1234','9,999') , MI SELECT to_number('-1234','9999mi') FROM dual; TO_NUMBER('-1234','9999MI') MI SQL> SELECT to_char('-1234','9999mi') FROM dual; TO_CHAR('-1234','9999MI') DATE 타입형식요소 예제 결과 설명 -,.;:/ text YYYY-MM-DD 결과값의해당하는위치에그대로출력된다. D D 3 일주일중몇번째날 (1~7) DAY DAY WEDNESDAY 요일이름을표기한다. DD DD 18 일자표기 (1~31) DDD DDD 108 일년중몇번째날 (1~366) 8

9 DY DY WED 축약한요일이름표기 MM MM 04 달을표기 (1~12) MON MON APR 축약한달이름표기 MONTH MONTH APRIL 달이름표기 Q Q 2 일년중몇번째분기 (1~4) YYYY YYYY 2007 연도 4 자리수표기 YEAR YEAR TWO THOUSAND SEVEN 연도를말로풀어서표기 DATE 타입 SQL> SELECT sysdate FROM dual; SYSDATE /05/19 -- YYYY-MM-DD SQL> SELECT to_char(sysdate, 'YYYY/MM/DD') FROM dual; TO_CHAR(SYSDATE,'YYYY/MM/DD') /05/19 -- DAY SQL> SELECT to_char(sysdate,'day') FROM dual; TO_CHAR(SYSDATE,'DAY') 월요일 -- Q SQL> SELECT to_char(sysdate, 'Q') FROM dual; TO_CHAR(SYSDATE,'Q') TIME 타입 형식요소예제결과설명 9

10 FF[1..9] HH:MI:SS.FF3 03:49: HH HH12 HH:MI:SS HH12:MI:SS 03:57:47 시간표기 (1~12) HH24 HH24:MI:SS 15:58:20 시간표기 (0 ~ 23) 소수점이하자리의초를표시. FF 뒤에명시한숫자의개수만큼소수점이하자릿수가출력된다. MI HH:MI:SS 03:58:40 시간중분을표기 (0~59) SS HH:MI:SS 03:59:04 시간중초를표기 (0~59) SSSSS SSSSS 자정부터현재몇초 (0~86399) TIME 타입 SQL> SELECT systime FROM dual; SYSTIME :25: HH:MI:SS.FF3 SQL> SELECT to_char(systime, 'HH:MI:SS.FF3') FROM dual; TO_CHAR(SYSTIME,'HH:MI:SS.FF3') :25: 'HH24:MI:SS.FF3 SQL> SELECT to_char(systime, 'HH24:MI:SS.FF3') FROM dual; TO_CHAR(SYSTIME,'HH24:MI:SS.FF3') :25: SSSSS SQL> SELECT to_char(systime, 'SSSSS') FROM dual; TO_CHAR(SYSTIME,'SSSSS') 의사컬럼 사용자가명시적으로선언하지않아도, Tibero 시스템이자동으로모든테이블에포함하는컬럼을말한다. 10

11 의사컬럼종류 ROWID ROWNUM LEVEL CONNECT_BY_ISLEAF 설명 ROWID 는전체데이터베이스내의하나의로우를유일하게참조하는식별자 ROWID 는그로우의디스크상의물리적인위치를가리키고있으며, 그로우가삭제될때까지변화되지않는다. SELECT 문장의실행결과로우들에대하여순서대로번호를부여한것이다. 질의결과반환되는첫번째로우는 ROWNUM=1 이며, 두번째로우는 ROWNUM=2 값을갖는다. 티베로에서질의를수행하여결과로우를생성하여반환하기직전에그로우에 ROWNUM 을할당한다. 계층질의를실행한결과로우들에대하여트리내의계층을출력하기위한컬럼타입이다. 최상위로우의 LEVEL 값은 1 이며, 하위로우로내려가며 1 씩증가한다. 현재 row 가 CONNECT BY 조건에의해정의된 tree 의 leaf 이면 1 을반환하고그렇지않을경우에는 0 을반환한다. ( 이정보는해당 row 가 hierarchy 를더보여주기위해확장될수있는지를의미 ) ROWID ROWID 구조 Segment# Data File# Data Block# Row# 4byte 2byte 4byte 2byte 전체데이터베이스내의하나의로우를유일하게참조하는식별자이다. ROWID 는그로우의디스크의물리적인위치를가리키고있으며, 그로우가삭제될때까지변화되지않는다. ROWID 값을표현하기위한포맷으로는 BASE64 인코딩을이용한다. BASE64 인코딩은 6bit에포함된숫자를 8bit 문자로나타내는방식으로, 0 ~ 63까지의숫자를 A ~ Z, a ~ z, 0 ~ 9, +, / 로대치한다. ROWID 인코딩 (BASE64 변환 ) Segment# Data File# Data Block# Row# 6byte 3byte 6byte 3byte ROWID 를 BASE64 인코딩으로변환하면 Segment#, Data File#, Data Block#, Row# 가각각 6, 3, 6, 3byte 되고, 'SSSSSSFFFBBBBBBRRR' 의형태를갖는다. 예를들어, Segment# = 100, Data File# = 20, Data Block# = 250, Row# = 0 인 ROWID 는 'AAAABkAAUAAAAD6AAA' 로나타낸다. ROWID 의조회결과 SQL> SELECT rowid, emp_no FROM employee; ROWID EMP_NO AAAAbNAAAAAABoSAAA AAAAbNAAAAAABoSAAB AAAAbNAAAAAABoSAAC

12 3 rows selected ROWNUM SELECT 문장의실행결과로나타나는로우에대하여순서대로번호를부여한다. ROWNUM 이할당되는순서 1 질의를수행한다. 2 질의결과로로우가생성된다. 3 로우를반환하기직전에그로우에 ROWNUM 이할당된다. Tibero RDBMS 는내부적으로 ROWNUM 카운터를가지고있으며, 카운터값을질의결과의로우에할당한다. 4 ROWNUM 을할당받은로우에 ROWNUM 에대한조건식을적용한다. 5 조건식을만족하면할당된 ROWNUM 이확정되고, 내부의 ROWNUM 카운터의값이 1로증가한다. 6 조건식을만족하지않으면그로우는버려지고, 내부의 ROWNUM 카운터의값은증가하지않는다. ROWNUM 의조회결과 SQL> SELECT rownum, emp_no FROM employee; ROWNUM EMP_NO rows selected. 아래의 SQL 문장은 10 개의로우만을반환하는예제이다. FROM EMP WHERE ROWNUM <= 10; 아래의 SQL 문장은실행할때마다다른결과를얻는다. FROM EMP WHERE ROWNUM <= 10 ORDER BY EMPNO; - 위의질의를다음과같이변환하면 ORDER BY 절을먼저처리하게되므로항상같은결과를얻을수있다. FROM ( FROM EMP ORDER BY EMPNO) WHERE ROWNUM <= 10; 아래의 SQL 문장은하나의로우도반환하지않는다. FROM EMP WHERE ROWNUM > 1; - 이유는 ROWNUM 값이확정되기전에 ROWNUM 에대한조건식이수행되기때문이다. 위의 SELECT 문의결과는첫번째로우가 ROWNUM = 1이기때문에조건식을만족하지않는다. 조건식을만족하지않으면 ROWNUM 카운터의값은변하지않는다. 따라서두번째결과로우도 ROWNUM = 1이므로반환되지않는다. 12

13 LEVEL - 계층질의를실행한결과에각로우의트리내계층을출력하기위한컬럼타입이다. 최상위로우의 LEVEL 값은 1 이며, 하위로우로갈수록 1 씩증가한다 CONNECT_BY_ISLEAF - 현재로우가 CONNECT BY 조건에의해정의된트리 (Tree) 의리프 (Leaf) 이면 1 을반환하고그렇지않을경우에는 0 을 반환한다. 이정보는해당로우가계층구조 (Hierarchy) 를보여주기위해확장될수있는지없는지를나타낸다 NULL - 한로우에서어떤컬럼에값이없을때그컬럼을 NULL이라고하거나 NULL 값을가진다고한다. - NULL은 NOT NULL 제약과 PRIMARY KEY 제약이걸리지않은모든데이터타입의칼럼에포함될수있다. - 실제값을모르거나아무런의미없는값이필요할때사용할수있다. NULL과 0은다르기때문에 NULL을 0으로나타내면안된다. 다만문자타입의컬럼에빈문자열 ('') 이들어가면 NULL로처리된다. NULL 을포함하는모든연산의결과도 NULL 이다. NULL + 1 = NULL 모든상수함수는함수의파라미터가 NULL 일경우반환값은 NULL 이다. DATA = {1000, 500, NULL, NULL, 1500} AVG(DATA) = ( ) /3 = 1000 NULL 의비교조건은 IS NULL 과 IS NOT NULL 만가능하다. DECODE 함수를통해 NULL 이서로비교되었으며, 그결 과로서로같다는의미인 '1' 이반환되었음을알수있다. SQL> SELECT DECODE(NULL, NULL, 1) FROM DUAL; DECODE(NULL,NULL,1) 주석 - SQL 문장과스키마객체에는주석을삽입할수있다. - 시작기호 (/*) 로주석의시작을나타내고마침기호 (*/) 로주석을끝낸다. 주석의내용을여러줄에걸쳐삽입할수있다. 시작기호 (/*) 와마침기호 (*/) 를내용과구분하기위해공백이나줄바꿈을사용할필요는없다. - '--' 로주석의시작을나타내고바로뒤에주석의내용을적는다. - 스키마객체에도주석을삽입할수있다. 즉 COMMENT 명령을사용하여스키마객체인테이블, 뷰, 컬럼에주석을삽입할수있다. 스키마객체에삽입된주석은데이터사전에저장된다. 13

14 SQL 문장에주석을삽입한예제 SELECT emp_id, emp_name, e.dept_id /* 부서가총무과인직원의명단을출력한다. */ /* 테이블 */ FROM emp e, dept d WHERE e.dept_id = d.dept_id AND d.dept_name = ' 총무과 ' AND e.status!= 1; -- 퇴사한사람제외 2.7. 힌트 - 일종의지시문이다. SQL 문장에힌트를추가하여 Tibero 의질의최적화기 (Optimizer) 에특정행동을지시하거나 질의최적화기의실행계획을변경한다. 힌트를사용할때주의할점 - 힌트는반드시 DELETE, INSERT, SELECT, UPDATE 절뒤에만올수있다. - '+' 기호는반드시주석구분자 ('/*' 또는 '--') 바로뒤에공백없이붙여써야한다. - 힌트와 '+' 기호사이에공백은있어도되고, 없어도된다. - 문법에맞지않는힌트는주석으로취급되며, 에러는발생하지않는다. 힌트사용한예제 (DELETE INSERT SELECT UPDATE) /*+ hint [hint]... */ 또는 (DELETE INSERT SELECT UPDATE) --+ hint [hint]...from emp e, dept d 힌트의종류 구성요소힌트설명 질의변형 NO_MERGE 질의변형기에게특정뷰에대한뷰병합 (View Merging) 을 하지않도록지시한다. UNNEST NO_UNNEST 질의변형기에게특정부질의를언네스팅 (Unnesting) 하도록지시한다. 질의변형기에게특정부질의에대해언네스팅을수행하지않도록지시한다. 최적화방법 ALL_ROWS 전체결과에대한처리량이가장많도록처리과정의최적 화를선택한다. FIRST_ROWS 결과를가장빠르게보여줄수있도록결과표시의최적화 를선택한다. 접근방법 FULL 전체테이블을스캔하도록지시한다. INDEX 명시한인덱스를사용한인덱스스캔을하도록지시한다. 14

15 NO_INDEX INDEX_ASC INDEX_DESC INDEX_FFS NO_INDEX_FFS 명시한인덱스를사용한인덱스스캔을하지않도록지시한다. 명시한인덱스를사용한인덱스스캔을오름차순으로하도록지시한다. 명시한인덱스를사용한인덱스스캔을내림차순으로하도록지시한다. 명시한인덱스를사용한인덱스를사용해빠른전체인덱스스캔 (Fast Full Index Scan) 을하도록지시한다. 명시한인덱스를사용한빠른전체인덱스스캔을하지않도록지시한다. 조인순서 LEADING 먼저조인되어야할테이블의집합을명시한다. ORDERED 테이블을 FROM 절에명시된순서대로조인하도록지시한 다. 조인방법 USE_NL 중첩루프조인을사용하도록지시한다. NO_USE_NL 중첩루프조인을사용하지않도록지시한다. USE_NL_WITH_INDEX 명시한인덱스와두테이블에대한조인조건을이용해중 첩루프조인을사용하도록지시한다. USE_MERGE 합병조인을사용하도록지시한다. NO_USE_MERGE 합병조인을사용하지않도록지시한다. USE_HASH 해시조인을사용하도록지시한다. NO_USE_HASH 해시조인을사용하지않도록지시한다. 병렬처리 PARALLEL 지정한개수의스레드를사용해질의의수행을병렬로진행하도록지시한다. NO_PARALLEL 질의의수행을병렬로진행하지않도록지시한다. PQ_DISTRIBUTE 조인을포함한질의의병렬처리에서로우의분산방법을 지시한다. 실체화뷰 REWRITE 비용의비교없이실체화뷰 (Materialized View) 를사용하여질의의다시쓰기를지시한다. NO_REWRITE 질의의다시쓰기를하지않도록지시한다. 기타 APPEND DML 문장에서직접데이터파일에추가하는삽입방법즉 Direct-Path 방식을수행하도록지시한다. NOAPPEND DML 문장에서 Direct-Path 방식을수행하지않도록지시한 다. 15

16 접근방법 NO_MERGE - 질의변형기 (Query Transformer) 가특정뷰에대해뷰병합을하지않도록지시하는힌트이다. - Tibero 에서는뷰병합이디폴트로수행되며, 뷰가병합이가능할경우상위의질의블록과결합해하나의질의블록을형성한다. NO_MERGE 힌트를사용하면이렇게디폴트로수행되는뷰의병합을막을수있다. NO_MERGE 힌트를사용한예제 FROM T1, (SELECT /*+ NO_MERGE */ * FROM T2, T3 WHERE T2.A = T3.B) V WHERE T1.C = V.D - 위의예제처럼 NO_MERGE 힌트는병합되기를원하지않는뷰의질의블록에명시한다. 힌트가없었다면뷰가병합 되어질의최적화기에서테이블 T1, T2, T3 에대한조인순서와조인방법을고려하게되지만, 위와같이힌트가있을 경우는뷰가병합되지못하기때문에 T2 와 T3 가먼저조인되고, 그이후에 T1 이조인된다. UNNEST - 질의변형기가특정부질의 (Subquery) 를언네스팅하도록지시하는힌트이다. - Tibero 는부질의언네스팅을디폴트로수행하지만, 특정쿼리만언네스팅을하려면초기화파라미터에서언네스팅을해제하면된다. 그러면 UNNEST 힌트를이용할수있다. UNNEST 힌트는부질의블록에명시한다. NO_UNNEST - NO_UNNEST 는질의변형기가특정부질의에대해언네스팅을수행하지않도록지시하는힌트이다. - Tibero 는부질의언네스팅을디폴트로수행하며언네스팅이가능한경우부질의를조인으로변환한다. 이때 NO_UNNEST 힌트를사용해서언네스팅을막을수있다. NO_UNNEST 힌트는부질의블록에명시한다 최적화방법 최적화방법이적용된힌트를사용하여처리과정과결과표시를최적화할수있다. 만약최적화방법이적용된힌트가 사용된질의가있다면해당질의에대해서는통계정보와초기화파라미터의최적화방법 (OPTIMIZER MODE) 의값이 없는것처럼처리된다. ALL_ROWS - 최소한의리소스를사용하여전체결과에대한처리량이가장많도록처리과정의최적화방법을선택하는힌트 이다. FIRST_ROWS - FIRST_ROWS 는첫로우부터파라미터로입력된번호의로우까지가장빠르게보여줄수있도록결과표시의 최적화방법을선택하는힌트이다 접근방법 - 접근방법이적용된힌트는질의최적화기가특정접근방법의사용이가능한경우그방법을사용하도록명시한다. 만일힌트에서명시한방법을사용할수없는경우에는질의최적화기는그힌트를무시한다. 16

17 - 힌트에명시하는테이블명은 SQL 문에서사용하는이름과동일해야한다. 즉, 테이블이름에대한별칭을사용하였 다면, 테이블이름대신에별칭을사용하여야한다. - SQL 문에서테이블이름에스키마이름을포함하여명시하였더라도힌트에서는테이블이름만을명시하여야한다. FULL - FULL 은명시한테이블을스캔할때전체테이블을스캔하도록지시하는힌트이다. WHERE 절에명시된조건식에 맞는인덱스가있더라도전체테이블스캔을사용한다. INDEX - INDEX 는명시한테이블을스캔할때명시한인덱스를사용하여인덱스스캔을하도록지시하는힌트이다. NO_INDEX - NO_INDEX 는명시한테이블을스캔할때명시한인덱스를사용하는인덱스스캔을하지않도록지시하는힌트이다. NO_INDEX 힌트와 INDEX 또는 INDEX_ASC, INDEX_DESC 힌트가동일한인덱스를명시한다면질의최적화기는이두힌트를모두무시한다. INDEX_ASC - INDEX_ASC 는명시한테이블을스캔할때명시한인덱스를사용하여인덱스스캔을하도록지시하는힌트이다. 만일인덱스범위스캔을사용하는경우에는인덱스를오름차순으로스캔하도록한다. 현재 Tibero 의인덱스스캔의기본동작이오름차순이기때문에 INDEX_ASC 는 INDEX 와동일한작업을수행한다. 분할된인덱스의경우분할된각영역내에서오름차순으로스캔한다. INDEX_DESC - INDEX_DESC 는명시한테이블을스캔할때명시한인덱스를사용하여인덱스스캔을하도록지시하는힌트이다. 만일인덱스범위스캔을사용하는경우에는인덱스를내림차순으로스캔하도록한다. 분할된인덱스의경우분할된각영역내에서내림차순으로스캔한다. INDEX_FFS - INDEX_FFS 는명시한테이블에대해명시한인덱스를사용하여빠른전체인덱스스캔 (Fast Full Index Scan) 을사 용하도록지시하는힌트이다. NO_INDEX_FFS - NO_INDEX_FFS 는명시한테이블에대해명시한인덱스를사용하는빠른전체인덱스스캔을사용하지않도록 지시하는힌트이다 조인순서 - LEADING, ORDERED 는조인순서를결정하는힌트이다. - LEADING 힌트가 ORDERED 보다질의최적화기를선택할수있는폭이넓어서 LEADING 을사용하는것이좋다. LEADING - LEADING 은조인에서먼저조인되어야할테이블의집합을명시하는힌트이다. 17

18 - LEADING 힌트가먼저조인될수없는테이블을포함하는경우무시된다..- LEADING 힌트끼리충돌하는경우 LEADING, ORDERED 힌트가모두무시된다. 만일 ORDERED 힌트가사용되는 경우에는 LEADING 힌트는모두무시된다. ORDERED - ORDERED는테이블을 FROM 절에명시된순서대로조인하도록지시하는힌트이다. - 질의최적화기는조인의결과집합의크기에대한정보를추가로알고있다. - 사용자가그정보를통해질의최적화기의조인순서를명확히알고있을경우에만 ORDERED 힌트를사용하는것이좋다 조인방법 - 조인방법이적용된힌트는한테이블에대해서만조인방법을지시한다. - 조인방법이적용된힌트는명시한테이블이조인의내부테이블로사용될경우에만참조된다. 명시한테이블을 외부테이블로사용하는경우에는조인방법이적용된힌트는무시된다. USE_NL - USE_NL 은명시한테이블을다른테이블과조인하는경우중첩루프조인을사용하도록지시하는힌트이다. NO_USE_NL - NO_USE_NL 은명시한테이블을다른테이블과조인하는경우중첩루프조인을사용하지않도록지시하는힌트이다. 하지만, 특수한경우에는이힌트가주어졌더라도질의최적화기에서중첩루프조인을사용하는플랜을생성할수있다. USE_NL_WITH_INDEX - USE_NL_WITH_INDEX 는명시한테이블을다른테이블과조인하는경우중첩루프조인을사용하도록지시하는힌트이다. 이때명시한테이블에대한접근은명시한인덱스와두테이블에대한조인조건을이용하여이루어져야한다. 만일인덱스를사용할수없는경우이면힌트는무시된다. USE_MERGE - USE_MERGE 는명시한테이블을다른테이블과조인하는경우합병조인을사용하도록지시하는힌트이다. NO_USE_MERGE - NO_USE_MERGE 는명시한테이블을다른테이블과조인하는경우합병조인을사용하지않도록지시하는힌트 이다. USE_HASH - USE_HASH 는명시한테이블을다른테이블과조인하는경우해시조인을사용하도록지시하는힌트이다. NO_USE_HASH - NO_USE_HASH 는명시한테이블을다른테이블과조인하는경우해시조인을사용하지않도록지시하는힌트 이다. 18

19 병렬처리 PARALLEL - PARALLEL 은지정한개수의스레드를사용해질의의수행을병렬로진행하도록지시하는힌트이다. NO_PARALLEL - NO_PARALLEL 은질의의수행을병렬로진행하지않도록지시하는힌트이다. PQ_DISTRIBUTE - PQ_DISTRIBUTE 는조인을포함한질의의병렬처리에서조인될로우의분산방법을지시하는힌트이다. - 분산방법으로는 HASH-HASH, BROADCAST-NONE, NONE-BROADCAST, NONE-NONE 이있으며특정한분산방법을선택함으로써병렬처리에서조인의성능을향상시킬수있다 실체화뷰 REWRITE - REWRITE 는해당질의블록에서비용의비교없이실체화뷰를사용하여질의의다시쓰기를하도록지시하는힌트이다. 따라서최종으로는 REWRITE 힌트가사용된질의블록만다시쓰기를한결과와모든블록에서다시쓰기를한결과의비용을비교해서더좋은쪽을질의최적화기가선택하게된다. 그리고실체화뷰의목록이명시된경우에는목록에있는실체화뷰만사용하여질의의다시쓰기를시도한다. NO_REWRITE - NO_REWRITE 는해당질의블록에서는질의의다시쓰기를하지않도록지시하는힌트이다 기타 APPEND - APPEND 는 DML 문장에서직접데이터파일에추가하는삽입방법즉 Direct-Path 방식을수행하도록지시하는힌트이다. Direct-Path 방식은일반적인삽입방법과달리항상새로운데이터블록을할당받아서데이터삽입을수행하며, 버퍼캐시를이용하지않고직접데이터파일을추가하기때문에성능향상에많은이점이있다. NOAPPEND - NOAPPEND 는 DML 문장에서 Direct-Path 방식을수행하지않도록지시하는힌트이다 스키마객체 데이터베이스는여러객체로구성된다. 각객체는 ' 데이터베이스 > 사용자 > 스키마 > 스키마객체 ' 의순으로포함 관계를갖는다. 구분 테이블 (Table) 설명 관계형데이터베이스의기본저장단위이다. 다른모든스키마객체는테이블을 중심으로정의된다. 19

20 인덱스 (Index) 뷰 (View) 테이블과별도의저장공간을이용하여그테이블의특정컬럼을빠르게검색할수있도록해주는데이터구조이다. SQL 문장에이름을붙인것으로, 빈번히수행되는질의의결과를테이블형태로이용할수있도록정의한것이다. 시퀀스 (Sequence) 유일한연속적인값을생성해낼수있는스키마객체이다. 동의어 (Synonym) 특정스키마객체에정의하는일종의별칭 (Alias) 이다. 스키마객체예제 -- 테이블생성 SQL> create table test ( deptno number(2), dname varchar2(14), loc varchar2(13), create_date date default sysdate ); Table 'TEST' created. SQL> describe test; COLUMN_NAME TYPE CONSTRAINT DEPTNO NUMBER(2) DNAME VARCHAR(14) LOC VARCHAR(13) CREATE_DATE DATE -- Subquery 이용테이블생성 SQL> create table copy_emp as select * from employee; Table 'COPY_EMP' created. -- Subquery 이용테이블생성 ( 구조만복제할경우 ) SQL> create table copy_emp1 as select * from employee where 1=2; Table 'COPY_EMP1' created. -- 인덱스생성 SQL> create index test_deptno_idx on test(deptno); Index 'TEST_DEPTNO_IDX' created. -- 뷰생성 20

21 SQL> create view employee_2008 as select * from employee where emp_no like '2008%'; View 'EMPLOYEE_2008' created. SQL> select * from employee_2008; EMP_NO EMP_NAME HIREDATE SALARY BONUS DEPT_CD MANAGER Lolly 2008/06/ Angel 2008/07/ rows selected. -- Synonym 생성 SQL> Create public synonym syn_emp for sys.employee; Synonym 'SYN_EMP' created. SQL> select * from syn_emp; EMP_NO EMP_NAME HIREDATE SALARY BONUS DEPT_CD MANAGER Lolly 2008/06/ Angel 2008/07/ rows selected. 3. SQL 연산자 산술연산자 연산자종류설명 + - * / 덧셈뺄셈곱셈나누기 문자열연산자 문자열하나로연결 집합연산자 UNION UNION ALL INTERSECT MINUS 단일행연산자 ( 결과값이 1 개일경우 ) = 같을때 각결과의합 ( 중복허용안함 ) ( 합집합 ) 각결과의합 ( 중복허용 ) 각결과의중복되는부분만출력 ( 교집합 ) 첫번째결과에서두번째결과를뺌 ( 차집합 ) 비교연산자!= 또는 <> 같지않을때 < 왼쪽값이오른쪽값보다작을때 > 왼쪽값이오른쪽값보다클때 21

22 <= 왼쪽값이오른쪽값보다같거나작을때 >= 왼쪽값이오른쪽값보다같거나클때 <> 같지않을때 복수행연산자 ( 결과값이 2개이상일경우 ) 기타연산자 BETWEEN IN ALL ANY EXISTS LIKE IS NULL 왼쪽의값이오른쪽의두값사이에존재하는지비교결과값과일치하는값이있는지비교 Return된목록의각각의값과비교 Return된목록의모든값과비교결과값으로적어도 1개의행이있는지비교 LIKE 다음비교할조건에문자또는날짜등의패턴을비교해당컬럼의값이널인지아닌지만을비교 산술연산자 SQL> SELECT employee_id, first_name last_name employee_name, salary, salary + (salary * 0.01) as salary_01 FROM employees; EMPLOYEE_ID EMPLOYEE_NAME SALARY SALARY_ StevenKing NeenaKochhar LexDe Haan AlexanderHunold BruceErnst rows selected. 문자열연산자 SQL> SELECT 'RDBMS ' 'Tibero 5' FROM dual; 'RDBMS' 'TIBERO5' RDBMS Tibero 5 비교연산자 SQL> select * from employees where salary = '2600'; EMPLOYEE_ID FIRST_NAME LAST_NAME PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID Randall Matos RMATOS /03/15 ST_CLERK SQL> SELECT employee_id, first_name last_name employee_name, hire_date, salary, 22

23 department_id FROM employees WHERE salary IN (SELECT MIN(salary) FROM employees GROUP BY department_id); EMPLOYEE_ID EMPLOYEE_NAME HIRE_DATE SALARY DEPARTMENT_ID NeenaKochhar 1989/09/ LexDe Haan 1993/01/ BruceErnst 1991/05/ DianaLorentz 1999/02/ PeterVargas 1998/07/ JonathonTaylor 1998/03/ KimberelyGrant 1999/05/ NULL 200 JenniferWhalen 1987/09/ EMPLOYEE_ID EMPLOYEE_NAME HIRE_DATE SALARY DEPARTMENT_ID PatFay 1997/08/ WilliamGietz 1994/06/ rows selected. SQL> SELECT employee_id, first_name last_name employee_name, hire_date, salary, manager_id FROM employees WHERE salary > '15000' AND manager_id = '100'; EMPLOYEE_ID EMPLOYEE_NAME HIRE_DATE SALARY MANAGER_ID NeenaKochhar 1989/09/ LexDe Haan 1993/01/ rows selected. 집합연산자 SQL> SELECT department_id FROM departments UNION SELECT department_id FROM employees; DEPARTMENT_ID rows selected. SQL> SELECT department_id FROM departments UNION All 23

24 SELECT department_id FROM employees; DEPARTMENT_ID DEPARTMENT_ID rows selected. SQL> SELECT department_id FROM departments INTERSECT SELECT department_id FROM employees; DEPARTMENT_ID rows selected. 기타연산자 SQL> SELECT employee_id, first_name last_name employee_name, , hire_date, salary FROM employees WHERE LIKE 'E%'; 24

25 EMPLOYEE_ID EMPLOYEE_NAME HIRE_DATE SALARY EllenAbel EABEL 1996/05/ EleniZlotkey EZLOTKEY 2000/01/ rows selected. SQL> SELECT employee_id, first_name last_name employee_name, hire_date, salary, manager_id FROM employees WHERE manager_id IS NULL; EMPLOYEE_ID EMPLOYEE_NAME HIRE_DATE SALARY MANAGER_ID StevenKing 1987/07/ SQL 함수 제공되는함수는주어진인수를처리하여결과값을반환하는기능을수행하여, SELECT 문을간결하게만들어 Data 조작을쉽고간결하게만든다. 함수의종류는다음과같다. 1) 단일행함수 : 행별로함수가적용되어하나의결과를 RETURN 하는함수 ( 문자함수, 숫자함수, 날짜함수, 변환함수, 기타함수 ) 2) 다중행함수 : 여러행또는테이블전체에대해함수가적용되어하나의결과를 RETURN 하는함수 (Group 함수 ) 4.1. 단일행함수종류 종류명령어설명 문자함수 LOWER/UPPER INITCAP CONCAT INSTR LENGTH REPLACE LPAD/RPAD SUBSTR TRIM 문자를모두소문자로변경 / 대문자로변경첫번째글자만대문자로변경두문자열을결합한값을반환문자내의특정스트링의위치를구함문자열의길이를구함특정문자열을대신왼쪽 / 오른쪽문자자리채움문자열중특정문자또는문자열의일부분을선택왼쪽또는오른쪽문자를자름 25

26 숫자함수날짜함수변환함수기타함수 ABS(n) CEIL(n) MOD(m,n) ROUND(n,[m]) TRUNC(n,[m]) POWER SQRT SIGN CHR MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY ROUND TRUNC TO_CHAR TO_DATE TO_NUMBER TO_TIME TO_TIMESTAMP NVL NVL2 NULLIF COALESCE DECODE CASE 절대값 주어진값보다크지만가장근접하는최소값을구하는함수 m 을 n 으로나누어남는값을구하는함수임 n 값의반올림을하는함수로 m 은소수점아래자릿수를표기함 n 값을버림하는함수로 m 은소수점아래자릿수를표기함 거듭제곱 제곱근 양수, 음수, 0 인지를구분 ASCII 값에해당하는문자를구함 두날짜사이의월수를계산 날짜에월을더함 명시된날짜로부터다음요일에대한날짜 월의마지막날을계산 날짜를반올림 날짜를절삭 주어진 date type, number type 의값을형식에따라문자열로변환 주어진 string type 값을 format 에따라 date type 값으로변환 주어진 string type 값을숫자형식으로변환 주어진 string 을형식에따라시간값으로변환 주어진 string 을형식에따라 timestamp 타입값으로변환 NULL 값을어떤특정한값 ( 실제값 ) 으로변환하는데사용 값이 NULL 인경우와 NULL 이아닌경우리턴해주는값을다르게해주는함수 두개의값을비교하여값이값으면 NULL 을리턴하고서로다른값을가지면첫번째값을리턴하는함수 나열된값을순차적으로체크하여 NULL 이아닌값을리턴하는함수 CASE 나 IF-THEN-ELSE-END IF 문장의조건적조회를하는함수 DECODE 함수와동일하나 DECODE 에서지원하지않는비교연산자를사용할수있는함수 문자함수 -- LOWER SQL> SELECT LOWER('TIBERO') FROM dual; LOWER('TIBERO') tibero 26

27 -- UPPER SQL> SELECT UPPER('tibero') FROM dual; UPPER('TIBERO') TIBERO -- CONCAT SQL> SELECT CONCAT('RDBMS ', 'Tibero 5') FROM dual; CONCAT('RDBMS','TIBERO5') RDBMS Tibero 5 -- INSTR SQL> SELECT INSTR('World best! Tibero','e') FROM dual; INSTR('WORLDBEST!TIBERO','E') LENGTH SQL> SELECT LENGTH('Tibero') FROM dual; LENGTH('TIBERO') REPLACE SQL> SELECT REPLACE('tibero', 't','r') FROM dual; REPLACE('TIBERO','T','R') ribero -- LPAD SQL> SELECT LPAD('Tibero',20,'*') FROM dual; LPAD('TIBERO',20,'*')

28 **************Tibero 숫자함수 -- ABS SQL> SELECT ABS(-100) FROM dual; ABS(-100) CEIL SQL> SELECT CEIL(11.1) FROM dual; CEIL(11.1) MOD SQL> SELECT MOD(10,4) FROM dual; MOD(10,4) ROUND SQL> SELECT ROUND(11.985, 2) FROM dual; ROUND(11.985,2) TRUNC SQL> SELECT TRUNC(11.985, 1) FROM dual; TRUNC(11.985,1)

29 -- POWER SQL> SELECT POWER(4,2) FROM dual; POWER(4,2) SQRT SQL> SELECT SQRT(8) FROM dual; SQRT(8) SIGN SQL> SELECT SIGN(-19) FROM dual; SIGN(-19) CHR SQL> SELECT CHR(65) FROM dual; CHR(65) A 날짜함수 -- ADD_MONTHS SQL> SELECT ADD_MONTHS(TO_DATE('2014/05/20','YYYY/MM/DD'),1) "Add_months" FROM dual; Add_months /06/20 -- ROUND SQL> SELECT ROUND(TO_DATE('2014/05/20','YYYY/MM/DD'),'YEAR') "Round" FROM dual; Round /01/01 29

30 -- TRUNC SQL> SELECT TRUNC(TO_DATE('2014/05/20','YYYY/MM/DD'),'YEAR') "Trunc" FROM dual; Round /01/01 -- SYSDATE SQL> SELECT SYSDATE FROM dual; SYSDATE /05/20 -- LAST_DAY SQL> SELECT LAST_DAY(SYSDATE) FROM dual; LAST_DAY(SYSDATE) /05/31 -- MONTHS_BETWEEN SQL> SELECT MONTHS_BETWEEN(LAST_DAY(SYSDATE),SYSDATE) FROM dual; MONTHS_BETWEEN(LAST_DAY(SYSDATE),SYSDATE) 변환함수 -- TO_CHAR SQL> SELECT TO_CHAR(sysdate) FROM dual; TO_CHAR(SYSDATE) /05/20 -- TO_DATE 30

31 SQL> SELECT TO_DATE('20/05/2014','DD/MM/YYYY') FROM dual; TO_DATE('20/05/2014','DD/MM/YYYY') /05/20 -- TO_NUMBER SQL> SELECT TO_NUMBER('$35,000.00','$99,999.99') FROM dual; TO_NUMBER('$35,000.00','$99,999.99') TO_TIME SQL> SELECT TO_TIME('13:07:33','HH24:MI:SS') FROM dual; TO_TIME('13:07:33','HH24:MI:SS') :07: TO_TIMESTAMP SQL> SELECT TO_TIMESTAMP('13:07:15','HH24:MI:SS.FF') FROM dual; TO_TIMESTAMP('13:07:15','HH24:MI:SS.FF') /05/01 13:07: 기타함수 -- NVL2 SQL> SELECT NVL2(DUMMY, 'NOT NULL', 'NULL') FROM DUAL; NVL2(DUMMY, 'NOT NULL', 'NULL') NOT NULL -- COALESCE SQL> SELECT COALESCE(NULL, 'A', 'B') FROM DUAL; COALESCE(NULL, 'A', 'B') A 31

32 -- DECODE SQL> SELECT DECODE('1', 1, 'Male', 2, 'Female') FROM DUAL; DECODE('1',1,'MALE',2,'FEMALE') Male 4.2. 그룹행함수종류 종류명령어설명 그룹함수 분석함수 AVG COUNT MAX MIN STDDEV SUM VARIANCE ROLLUP CUBE FIRST_VALUE COUNT SUM ROW_NUMBER RANK DENSE_RANK LAG LEAD RATIO_TO_REPORT 그룹내의모든로우에대한평균 해당그룹의행의개수를반환 그룹내의모든로우에대한최대값을반환 그룹내의모든로우에대한최소값을반환 그룹내의표준편차 그룹내의로우에대한합계 그룹내의분산 주어진그룹핑조건에따라 ROW 들을그룹화하고각그룹에대해부분합을제공 Group BY 절에기술된조건에따라모든가능한그룹핑조합에대한결과를출력 정렬된로우에서첫번째값을반환 OVER analytic_clause 를사용해함수를분석함수로수행 OVER analytic_clause 를사용해함수를분석함수로수행 그룹내의로우를정렬한다음각로우에유일한번호를부여하여값비교 그룹내의로우를정렬한다음그룹내의각로우에대한순위를돌려주는함수 그룹내의로우를정렬한다음그룹내의각로우에대한순위를돌려주는함수 그룹내의로우를정렬한다음현재로우에서 offset 갯수만큼앞서있는로우에대한접근을제공 그룹내의로우를정렬한다음현재로우에서 offset 갯수만큼뒤에나오는로우에대한접근을제공 값들의집합의합에대한집합의하나의값의비율을계산 그룹함수 -- AVG 32

33 SQL> SELECT AVG(SALARY) AVG FROM employee GROUP BY DEPT_CD; AVG RANK SQL> SELECT DEPT_CD, RANK(3000) WITHIN GROUP (ORDER BY SALARY) AS RANK FROM employee GROUP BY DEPT_CD; DEPT_CD RANK COUNT - 급여가 3000 인사람의상위급여순위를나타낸다. SQL> SELECT TO_CHAR(hiredate,'YYYY'), COUNT(emp_no), MAX(salary), MIN(salary) FROM employee GROUP BY TO_CHAR(hiredate,'YYYY'); TO_CHAR(HIREDATE,'YYYY') COUNT(EMP_NO) MAX(SALARY) MIN(SALARY) 분석함수 -- FIRST_VALUE SQL> SELECT EMP_NAME, SALARY, FIRST_VALUE(EMP_NAME) OVER (PARTITION BY DEPT_CD ORDER BY SALARY ASC ROWS UNBOUNDED PRECEDING) AS LOWEST_SAL FROM employee; EMP_NAME SALARY LOWEST_SAL Lolly 3000 Lolly Angel 5000 Lolly Judy 6000 Lolly 3 rows selected. -- COUNT SQL> SELECT EMP_NAME, SALARY, COUNT(*) OVER (ORDER BY SALARY RANGE BETWEEN 1000 PRECEDING AND 1000 FOLLOWING) AS W_COUNT FROM employee; EMP_NAME SALARY W_COUNT Lolly

34 Angel Judy rows selected. -- SUM SQL> SELECT EMP_NAME, SALARY, SUM(SALARY) OVER (ORDER BY SALARY RANGE UNBOUNDED PRECEDING) SUM_SALARY FROM employee; EMP_NAME SALARY SUM_SALARY Lolly Angel Judy rows selected. -- ROW_NUMBER SQL> SELECT DEPT_CD, EMP_NAME, SALARY FROM ( SELECT DEPT_CD, EMP_NAME, SALARY, ROW_NUMBER() OVER (PARTITION BY DEPT_CD ORDER BY SALARY) RN FROM EMPLOYEE ) WHERE RN <= 1; DEPT_CD EMP_NAME SALARY Lolly RANK SQL> SELECT EMP_NAME, DEPT_CD, SALARY, RANK() OVER (PARTITION BY DEPT_CD ORDER BY SALARY) FROM employee; EMP_NAME DEPT_CD SALARY RANK Lolly Angel Judy rows selected. -- DENSE_RANK SQL> SELECT DEPT_CD, DENSE_RANK(3000) WITHIN GROUP (ORDER BY SALARY) AS DENSE_RANK FROM EMPLOYEE GROUP BY DEPT_CD; DEPT_CD DENSE_RANK

35 5. JOIN 5.1. JOIN 유형 종류 설명 기본 JOIN 유형 CARTESIAN PRODUCT 모든가능한행들의 JOIN ( 양쪽 ROW 의개수를곱한개수 ) EQUI JOIN (=) JOIN 조건이정확히일치하는경우에사용 NON-EQUI JOIN (Between) OUTER JOIN (+) SELF JOIN Simple Join (Inner Join) Anti Join Semi Join 테이블의한컬럼의값이다른테이블의컬럼과컬럼값의범위에해당될때사용 EQUE JOIN에사용된조건에만족하지않는데이터를포함시키고자할때사용. 조인시킬값이없는테이블쪽에 (+) 를위치시킨다. 하나의테이블에서행들을 JOIN하고자할경우에사용. 테이블 Alias가꼭필요하다. 조인조건을만족하는로우만반환하는 2개이상의테이블에대한조인프리디키트의오른쪽부분에해당하는로우가없는왼쪽부분의프리디키트에해당하는로우를반환한다. 즉프리디키트의오른쪽부분을 NOT IN의부질의로실행했을때일치하지않는로우를반환한다. 프리디키트의오른쪽의다수의로우에해당하는왼쪽부분의로우를중복없이처리하는 EXIST 부질의와같은로우를반환한다. 부질의가 WHERE 절의 OR로연결되어있으면세미조인과안티조인으로변환되지않는다. ANSI 표준을따르는 JOIN 유형기본 JOIN 유형과문법상의차이가있을뿐성능상의이점은없다. CROSS JOIN NATURAL JOIN JOIN ~ USING JOIN ~ ON JOIN시잘못된조건을주었을경우데이터매치가일어나지않아모든행에 JOIN이일어나는것이다. (=CARTESIAN PRODUCT) 두테이블에서똑같은이름을가지는모든컬럼을기준으로 JOIN (=EQUI JOIN) JOIN시 EQUE JOIN이일어날컬럼을지정한다조인조건을임의로명시하거나조인에참여할컬럼을명시하고자할때사용한다. LEFT RIGHT [OUTER JOIN] INNER JOIN 에서출력되지않은결과들을출력한다. 기본 JOIN 유형 35

36 -- CARTESIAN PRODUCT SQL> SELECT employee_id, first_name ' ' last_name employee_name, d.department_id, d.department_name FROM employees, departments d order by employee_id; EMPLOYEE_ID EMPLOYEE_NAME DEPARTMENT_ID DEPARTMENT_NAME Steven King 10 Administration 100 Steven King 20 Marketing 100 Steven King 50 Shipping 100 Steven King 60 IT 100 Steven King 80 Sales 160 rows selected. -- EQUI JOIN SQL> SELECT e.employee_id, e.first_name ' ' e.last_name employee_name, d.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id order by e.employee_id; EMPLOYEE_ID EMPLOYEE_NAME DEPARTMENT_ID DEPARTMENT_NAME Steven King 10 Executive 101 Neena Kochhar 90 Executive 102 Lex De Haan 90 Executive 19 rows selected. -- NON-EQUI JOIN SQL> SELECT e.employee_id, e.first_name ' ' e.last_name employee_name, d.department_id, d.department_name FROM employees e, departments d WHERE e.department_id BETWEEN d.department_id AND d.department_id AND e.salary = 13000; EMPLOYEE_ID EMPLOYEE_NAME DEPARTMENT_ID DEPARTMENT_NAME Michael Hartstein 20 Marketing -- OUTER JOIN SQL> SELECT e.employee_id, e.first_name ' ' e.last_name employee_name, d.department_id, d.department_name FROM employees e, departments d WHERE e.department_id = d.department_id order by e.employee_id; EMPLOYEE_ID EMPLOYEE_NAME DEPARTMENT_ID DEPARTMENT_NAME Steven King 90 Executive 101 Neena Kochhar 90 Executive 102 Lex De Haan 90 Executive 103 Alexander Hunold 60 IT 36

37 104 Bruce Ernst 60 IT 20 rows selected. JOIN 유형 (ANSI) -- CROSS JOIN SQL> SELECT employee_id, first_name ' ' last_name emp_name, d.department_id, department_name FROM employees CROSS JOIN departments d; EMPLOYEE_ID EMP_NAME DEPARTMENT_ID DEPARTMENT_NAME Steven King 10 Administration 100 Steven King 20 Marketing 100 Steven King 50 Shipping 100 Steven King 60 IT 100 Steven King 80 Sales 100 Steven King 90 Executive 100 Steven King 110 Accounting 100 Steven King 190 Contracting 160 rows selected. -- NATURAL JOIN ( 단, 참조되어지는컬럼에 table 명이나 alias 를사용하면안된다.) SQL> SELECT employee_id, first_name ' ' last_name emp_name, department_name FROM employees NATURAL JOIN departments; EMPLOYEE_ID EMP_NAME DEPARTMENT_NAME Pat Fay Marketing 141 Trenna Rajs Shipping 142 Curtis Davies Shipping 143 Randall Matos Shipping 144 Peter Vargas Shipping 104 Bruce Ernst IT 107 Diana Lorentz IT 174 Ellen Abel Sales 12 rows selected. -- JOIN ~ USING ( 단, 참조되어지는컬럼에 table 명이나 alias 를사용하면안된다.) SQL> SELECT e.employee_id, e.first_name ' ' e.last_name emp_name, d.department_name FROM employees e JOIN departments d USING (department_id); EMPLOYEE_ID EMP_NAME DEPARTMENT_NAME Jennifer Whalen Administration 201 Michael Hartstein Marketing 202 Pat Fay Marketing 124 Kevin Mourgos Shipping 141 Trenna Rajs Shipping 142 Curtis Davies Shipping 143 Randall Matos Shipping 144 Peter Vargas Shipping 37

38 19 rows selected. -- JOIN ~ ON SQL> SELECT e.first_name ' ' e.last_name "Employee", m.first_name ' ' m.last_name "Manager" FROM employees e JOIN employees m ON (e.manager_id=m.employee_id); Employee Manager Neena Kochhar Steven King Lex De Haan Steven King Kevin Mourgos Steven King Eleni Zlotkey Steven King Michael Hartstein Steven King Jennifer Whalen Neena Kochhar Shelley Higgins Neena Kochhar Alexander Hunold Lex De Haan 19 rows selected. -- LEFT RIGHT OUTER JOIN SQL> SELECT e.employee_id, e.first_name ' ' e.last_name emp_name, d.department_id, d.department_name FROM departments d LEFT OUTER JOIN employees e ON(e.department_id=d.department_id); EMPLOYEE_ID EMP_NAME DEPARTMENT_ID DEPARTMENT_NAME Jennifer Whalen 10 Administration 201 Michael Hartstein 20 Marketing 202 Pat Fay 20 Marketing 124 Kevin Mourgos 50 Shipping 141 Trenna Rajs 50 Shipping 142 Curtis Davies 50 Shipping 143 Randall Matos 50 Shipping 144 Peter Vargas 50 Shipping 20 rows selected JOIN 방식 NESTED LOOP JOIN (NLJ) - Driving Table 에서 Row를추출한후그결과를다른테이블에연결하여 Join - 특징 순차적 : 부분범위처리가능 종속적 : 먼저처리되는테이블의처리범위에따라처리량결정 랜덤 (Random) 액세스위주 연결고리상태에따라영향이큼 주로좁은범위처리에유리 -- NESTED LOOP JOIN 38

39 SELECT a.fld1,..., b.fld1,... FROM TAB1 a, TAB2 b WHERE a.key1 = b.key2 AND a.fld1 = 'AB' AND b.fld2 = '10' MERGE JOIN - 양쪽테이블의처리범위를각각 Access 하여정렬한결과를차례로 Scan 하면서연결고리의조건을만족하는지를 Merge 해가는방식 - 특징 동시적 : 무조건전체범위처리 독립적 : 자기의처리범위만으로처리량결정 스캔 (Scan) 액세스위주 연결고리상태에영향이없음 주로넓은범위처리에유리 -- MERGE JOIN 39

40 SELECT /*+ use_merge(a b) */ a.fld1,..., b.fld1,... FROM TAB1 a, TAB2 b WHERE a.key1 = b.key2 AND a.fld1 = 'AB' AND b.fld2 = '10' HASH JOIN - 크기가작은파티션을메모리에로딩 (Building) 하여 Hash Table 생성후, 나머지파티션의 Row를읽어 Hash Table 상대응되는 Row 체크 - 특징 독립적 : 자기의처리범위만으로처리량결정 반부분범위처리 : Hash Function 을이용하여매핑하는후행테이블은전체범위처리수행 메모리영역만으로 Hash Table 생성시최적의효과가능하므로적은테이블이선행테이블로선택됨 Hash Function 을이용하므로결과값정렬보장받을수없음 -- HASH JOIN 40

41 SELECT a.fld1,..., b.fld1,... FROM TAB1 a, TAB2 b WHERE a.key1 = b.key2 AND a.fld1 = 'AB' AND b.fld2 = '10' 6. SUBQUERY 6.1. SUBQUERY 유형 종류단일행 SUBQUERY 다중행 SUBQUERY 다중열 SUBQUERY (Pairwise SUBQUERY) INLINE VIEW Scalar SUBQUERY 설명 SELECT 문장으로부터오직하나의행만을검색하는질의 ( 단일행비교연산자 : =, >, >=, <, <=, <>,!=) SELECT 문장으로부터하나이상의행을검색하는질의 ( 복수행비교연산자 : IN, NOT IN, ANY, ALL, EXISTS) SELECT 문장으로부터하나이상의열을검색하는질의 SUBQUERY가 FROM 절에서사용되었을경우하나의 Coulmn 및하나의 ROW 값만을리턴하는 SUBQUERY로하나의 Coulmn 및하나의 ROW 값보다많은값이리턴될경우 error를리턴 41

42 Correlated SUBQUERY MIAN-QUERY절에사용된테이블이 SUBQUERY절에다시재사용되는경우의 SUBQUERY (SUBQUERY의결과가한행씩 MAIN으로리턴되는방식으로처리되어내부적으로성능을저하시키기때문에잘사용하지않음 ) SUBQUERY 유형예제 -- 단일행 SUBQUERY SQL> SELECT employee_id, first_name ' ' last_name employee_name, salary, department_id FROM employees WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = 50) AND department_id = 50; EMPLOYEE_ID EMPLOYEE_NAME SALARY DEPARTMENT_ID Kevin Mourgos 다중행 SUBQUERY SQL> SELECT employee_id, first_name ' ' last_name employee_name, salary, department_id FROM employees WHERE salary IN (SELECT MAX(salary) FROM employees GROUP BY department_id); EMPLOYEE_ID EMPLOYEE_NAME SALARY DEPARTMENT_ID Steven King Alexander Hunold Kevin Mourgos Ellen Abel Kimberely Grant Jennifer Whalen Michael Hartstein Shelley Higgins rows selected. -- 다중열 SUBQUERY SQL> SELECT e.employee_id, e.first_name ' ' e.last_name employee_name, e.salary, e.department_id FROM employees e WHERE (e.department_id, e.salary) IN (SELECT department_id, MIN(salary) FROM employees GROUP BY department_id) ORDER BY e.department_id; EMPLOYEE_ID EMPLOYEE_NAME SALARY DEPARTMENT_ID 42

43 Jennifer Whalen Pat Fay Peter Vargas Diana Lorentz Jonathon Taylor Neena Kochhar Lex De Haan William Gietz rows selected. -- INLINE VIEW SQL> SELECT b.employee_id, b. , b.salary, b.department_id FROM ( SELECT employee_id FROM employees WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = 90) )a, employees b WHERE a.employee_id = b.employee_id AND b.department_id!= 20; EMPLOYEE_ID SALARY DEPARTMENT_ID SKING Scalar SUBQUERY SQL> SELECT first_name last_name employee_name, salary, CASE WHEN department_id = (SELECT department_id FROM employees WHERE employee_id = '200') THEN 'PART1' ELSE 'OTHER' END AS "location" FROM employees; EMPLOYEE_NAME SALARY location StevenKing OTHER NeenaKochhar OTHER LexDe Haan OTHER AlexanderHunold 9000 OTHER BruceErnst 6000 OTHER DianaLorentz 4200 OTHER KevinMourgos 5800 OTHER TrennaRajs 3500 OTHER CurtisDavies 3100 OTHER RandallMatos 2600 OTHER PeterVargas 2500 OTHER EleniZlotkey OTHER EllenAbel OTHER JonathonTaylor 8600 OTHER KimberelyGrant 7000 OTHER JenniferWhalen 4400 PART1 MichaelHartstein OTHER PatFay 6000 OTHER ShelleyHiggins OTHER WilliamGietz 8300 OTHER 43

44 20 rows selected. -- Correlated SUBQUERY SQL> SELECT , salary, department_id FROM employees e WHERE salary > (SELECT avg(salary) FROM employees WHERE department_id=e.department_id); SALARY DEPARTMENT_ID SKING EZLOTKEY EABEL SHIGGINS AHUNOLD MHARTSTE KMOURGOS rows selected. 7. DML DML(Data Manipulation Language) 명령은데이터를입력, 수정, 삭제하는 SQL 명령어이다 DML 유형 종류 설명 INSERT UPDATE DELETE MERGE 테이블에새로운행추가테이블의행내용을변경테이블의행삭제 UPDATE, DELETE, INSERT를결합한문장 주의사항 : DELETE는 UPDATE 없이단독으로사용할수없다 INSERT 구분 SQL 문법 기본 INSERT 문 INSERT INTO 테이블명 ( 컬럼명 1, 컬럼명 2,...) VALUES ( 값 1, 값 2,...) SELECT 문을이용한 INSERT 문 Multi Table INSERT 문 INSERT INTO 테이블명 ( 컬럼명 1, 컬럼명 2,...) SELECT 구문 INSERT [ALL \ FIRST] WHEN 조건 1 THEN 44

45 INTO 테이블명1 WHEN 조건2 THEN INTO 테이블명2 ELSE INTO 테이블명0 SELECT 구문 ; INSERT 예제 SQL> CREATE TABLE employee ( EMP_NO VARCHAR(8) NOT NULL, EMP_NAME VARCHAR(20), HIREDATE DATE, SALARY NUMBER(8,3), BONUS NUMBER(8,3), DEPT_CD VARCHAR(4), MANAGER VARCHAR(8) ); Table 'EMPLOYEE' created. SQL> INSERT INTO employee VALUES (' ','Lolly',TO_DATE(' ', 'YYYY-MM-DD'),3000,'','1000',' '); 1 row inserted. SQL> INSERT INTO employee (emp_no, emp_name, hiredate, dept_cd) VALUES (' ','Angel',TO_DATE(' ', 'YYYY-MM-DD'), '0000'); 1 row inserted. SQL> COMMIT; Commit completed. SQL> CREATE TABLE employee_0000(emp_no, emp_name, hiredate) AS SELECT emp_no, emp_name, hiredate FROM employee WHERE 1=2; Table 'EMPLOYEE_0000' created. SQL> INSERT INTO employee_0000 SELECT emp_no, emp_name, hiredate FROM employee WHERE dept_cd=0000; 1 row inserted. SQL> COMMIT; Commit completed. 45

46 UPDATE 구분 SQL 문법 기본 UPDATE 문 UPDATE 테이블명 SET 컬럼명 = 값 1, 컬럼명 = 값 2... [WHERE 조건 ] SUBQUERY 를이용한 UPDATE 문 UPDATE 테이블명 SET 컬럼명 = (SELECT 컬럼명 FROM 테이블명 [WHERE 조건 ]) [WHERE 조건 ] UPDATE 예제 SQL> UPDATE employee SET dept_cd = '1000' WHERE emp_no=' '; 1 row updated MERGE 기본 MERGE 문 구분 SQL 문법 MERGE INTO 테이블명 USING {table view subquery} ON ( 조건 ) WHEN MATCHED THEN UPDATE SET 컬럼명1 = 값1 [, 컬럼명2 = 값2...] DELETE WHERE 조건 WHEN NOT MATCHED THEN INSERT ( 컬럼리스트 ) VALUES ( 값...) MERGE 예제 SQL> MERGE INTO employee d USING(SELECT emp_name,salary,dept_cd FROM employee WHERE emp_no=' ') s ON(d.emp_name=s.emp_name) WHEN MATCHED THEN UPDATE SET d.bonus= d.bonus+s.salary*0.1 WHEN NOT MATCHED THEN INSERT (d.emp_name,d.bonus) VALUES(s.emp_name,s.salary*0.1); 1 row merged DELETE 구분 SQL 문법 기본 DELETE 문 DELETE FROM 테이블명 [WHERE 조건 ] DELETE 예제 46

47 SQL> DELETE employee WHERE emp_no=' ' OR emp_no=' '; 2 rows deleted. 8. TRANSATION Tibero 는 TRANSACTION 의논리적인작업단위를나누어데이터의일관성을보장한다 TRANSACTION TRANSACTION 은첫번째 DML 문을실행하였을때시작된다. 트랜잭션정상종료 : COMMIT/ROLLBACK 의명령어를사용했을때, DDL 이나 DCL 문장사용했을때 트랜잭션비정상종료 : 사용자에의한 tbsql 의비정상종료또는시스템의비정상적인종료. ROLLBACK 처리 종류 설명 COMMIT SAVEPOINT ROLLBACK ROLLBACK TO SAVEPOINT_NAME 데이터변경내용을영구히저장하고현재트랜잭션을종료 트랜잭션내에저장위치를표시 데이터변경내용을버리고트랜잭션을종료 현재트랜잭션을지정된 (SAVEPOINT_NAME) 저장위치로돌아가, 그이전의데이터변경내용을버리고트랜잭션을종료 COMMIT Commit 실행 COMMIT; COMMIT WORK; 존재하지않는트랜잭션을지정하면, 다음과같은에러가발생 SQL> COMMIT FORCE ' '; TBR-21022: No prepared transaction found with transaction ID SAVEPOINT SAVEPOINT 를사용해서저장점을설정 SAVEPOINT sp1; 47

48 ROLLBACK / ROLLBACK TO SAVEPOINT_NAME SAVEPOINT 로저장점을지정하고, ROLLBACK 을사용해지정된저장점까지 ROLLBACK SQL> CREATE TABLE T ( A NUMBER ); Table 'T' created. SQL> INSERT INTO T VALUES(1); 1 row inserted. SQL> COMMIT; Commit completed. SQL> FROM T; A SQL> UPDATE T SET A=2; 1 row updated. SQL> SAVEPOINT SP1; Savepoint created. SQL> UPDATE T SET A=3; 1 row updated. SQL> FROM T; A SQL> ROLLBACK TO SAVEPOINT SP1; Rollback completed. SQL> FROM T; A

49 SQL> ROLLBACK; Rollback completed. SQL> FROM T; A SQL> ROLLBACK TO SAVEPOINT SP1; TBR-21008: Savepoint 'SP1' was not found. 9. SQL 활용가이드 9.1. SQL 구문활용가이드 튜닝관점보다 SQL 구문을이해하기쉽게작성 SQL 구문작성표현은 SQL Text 표준지침을따름 SQL 구문의이해를돕기위해복잡한 In-Line View의사용보다는테이블조인을사용 불필요한 DUAL 테이블의사용은제한 Hint 는사용하지않으며, 인덱스구성이완료되고튜닝시점에 DBA와협의하여 Hint를사용하도록함 서로다른 Data 타입비교시 DBMS가한쪽을기준으로내부변형을발생시키므로주의 Outer Join 의정확한이해후작성 한서비스당가능한한 SQL 구문으로작성할수있도록함 - 여러로직으로처리하는것보다한 SQL 구문이이해하기쉬우며유지보수또한용이 - Optimizer 가한 SQL 구문단위로최적화하기때문에성능향상에유리 Trigger 는사용금지 / View 는원칙적으로금지 ( 필요할경우 DBA 와협의 ) 9.2. SQL 함수, 키워드및조건절활용가이드 Distinct, Decode, 그룹함수 (SUM, AVG) Distinct 는항상 Sort연산을수행하므로, 결과값이항상 unique 한경우사용하지않음 SELECT 절의 DECODE 단계는가능한 2 레벨을초과하지않도록함 하나의 DECODE 내에여러개의비교를연속해서사용하는경우가 DECODE 내에 DECODE 가반복되는형식보다오버헤드가적음 SUM 함수는만족하는조건의합을구하는것으로 NULL 값은자동제외후값을구함 -> SUM( Col_name ) = SUM( NVL ( Col_name, 0 ) ) 이므로불필요한 NVL 사용제한 AVG 함수는 NULL 을제외하고평균을구함 49

50 -> AVG( Col_name ) AVG( NVL ( Col_name,0 ) ) 그룹함수사용시처리할대상집합이공집합이라하더라도논리적인결과는존재하므로수행결과는결코공집합이 되지않음 SQL> SELECT MAX(salary) FROM employees WHERE 1 = 2; MAX(SALARY) NULL OR 및 WHERE 절구문 OR 사용은가급적제한해서사용 - WHERE 절에서단순한 OR 의경우는최적화실행계획으로분리된후이들을결합하는실행계획으로수립되지만복잡하게사용된 OR 은거의 Full Table Scan 하게됨 - OR 을 IN 으로사용할수있다면 IN 을사용 - 상수쪽을 DECODE 등으로가공하여 OR 연산자를제거하도록함 - OR 사용으로 Full Table Scan 될경우 UNION ALL 을사용, SQL 구문을분리하고이를통하여인덱스사용을유도 - 복잡한 OR 을사용하는 SQL 구문은 DBA에게통보 WHERE 구문에서사용되어지는 Host 변수명은개발명명규칙을따름 WHERE 절구문에있는컬럼에대하여인위적인함수를사용하지않음 인덱스사용을위해부정형조건보다긍정형조건을사용 IN IN - 데이터집합의처리범위가좁고데이터집합이작을시유리 - 일반적으로전체범위처리를통하여서브쿼리의조건을만족하는모든데이터집합을구한다음메인쿼리의조건처리 ( 제공자역할 ) - IN 으로묶인서브쿼리의테이블의범위를줄이면성능을보장할수있음 SELECT COL1, COL2 FROM OUT_TAB WHERE COL3 IN (SELECT IN_COL1 FROM IN_TAB); Main Query에대하여제공자역할 - Main Query 보다먼저수행되어수행결과값 SubQuery가먼저수행됨을확인 IN_TAB 의범위를줄여주어야성능보장 50

51 EXISTS EXISTS - 데이터집합의처리범위가넓고부분범위처리가필요한경우에유리 - EXISTS 의서브쿼리는메인쿼리가찾은데이터에대하여하나씩존재여부를판단하는 Loop 형식으로서브쿼리의부분범위처리가능 - 메인쿼리가먼저수행되며서브쿼리는존재여부판단후다시메인쿼리로돌아가는확인자역할을함 - 메인쿼리의테이블의범위를줄여주어야성능을보장받을수있음 9.3. Join 활용가이드 Outer Join 조인순서가미리정해지므로조인순서를이용한튜닝이불가함 가능한 Outer Join 은피하도록함 Outer Join 을담당하는테이블에대한모든조건에 (+) 가붙어야원하는결과를얻음 (+) 기호를이용하여 IN, OR 의연산자로비교할수없음 - Inline View 이용, 또는 decode 문을사용 (ORA error : outer join operator (+) not allowed in operand of OR or IN) (+) 기호를이용하여 subquery 와비교할수없음 - OR IS NULL 조건과비교 9.4. Index 활용가이드 Index 를사용할수없는경우 유형설명권고안 Index 구성컬럼의외부적변형 Index 구성컬럼의내부적변형부정형비교 NULL 값비교기타 Index 구성컬럼에대한함수사용, 연산수행등과같은외부적요인으로인한변형데이터형이상이한컬럼간의비교의경우숫자를기준으로문자타입이숫자타입으로변형되는내부적변형부정형비교 (!=, <>, NOT IN 등 ) 를수행하는경우발생 IS (NOT) NULL 로비교하는경우인덱스에는 NULL 데이터가존재하지않으므로사용할수없게되는경우발생결합 index 사용부적절 LIKE 비교부적절 index 컬럼에대한외부적변형제거 데이터모델상의정합성정비 데이터형에적합한연산수행유도 가능한경우문형변경등을통해부정형비교제거 =, ( 공백 ) 으로가능한경우변경 Default 값적용으로 NULL 값제거 선행컬럼의조건사용 BETWEEN, <= 같은연산자사용및사용자입력값검토 51

52 HAVING 절의조건추가 WHERE 절에서조건추가 유형별해결방안 - Index 구성컬럼의외부적변형 원본 SQL 구문권고 SQL 구문 ( 변경 ) 비고 FROM TEST_TAB WHERE SUBSTR( VAR,1,3 ) = ABC FROM TEST_TAB WHERE NUM * 365 = 730 FROM TEST_TAB WHERE TO_CHAR(DATE, YYMM ) = 9902 FROM TEST_TAB WHERE NVL(CHR, X ) = X-MAN FROM TEST_TAB WHERE NUM VAR = 2ABC FROM TEST_TAB WHERE VAR LIKE ABC% FROM TEST_TAB WHERE NUM = 730 / 365 FROM TEST_TAB WHERE DATE = TO_DATE( 9902, YYMM ) FROM TEST_TAB WHERE CHR = X-MAN FROM TEST_TAB WHERE NUM = 2 AND VAR = ABC 외부적 변형제거 유형별해결방안 - Index 구성컬럼의내부적변형 원본 SQL 구문내부적변형으로인한실제 SQL 구문권장 SQL 구문 ( 변경 ) FROM TEST_TAB WHERE CHR = 10 FROM TEST_TAB WHERE VAR = 10 FROM TEST_TAB WHERE NUM LIKE 10% FROM TEST_TAB WHERE TO_NUMBER(CHR) = 10 FROM TEST_TAB WHERE TO_NUMBER(VAR) = 10 FROM TEST_TAB WHERE TO_CHAR(NUM) LIKE 10% FROM TEST_TAB WHERE CHR = 10 FROM TEST_TAB WHERE VAR = 10 FROM TEST_TAB WHERE NUM BETWEEN 100 AND

53 유형별해결방안 - 부정형비교 원본 SQL 구문권고 SQL 구문 ( 변경 ) 비고 FROM TEST_TAB WHERE NUM <> 100 FROM TEST_TAB WHERE VAR LIKE 'AB%' AND NUM <> 100 FROM TEST_TAB A WHERE NOT EXISTS ( SELECT '' FROM TEST_TAB B WHERE A.CHR = B.CHR AND B.NUM ='100') FROM TEST_TAB A WHERE A.VAR LIKE 'AB%' AND NOT EXISTS (SELECT '' FROM TEST_TAB B WHERE A.VAR = B.VAR AND B.NUM = 100) FROM TEST_TAB WHERE VAR LIKE 'AB%' MINUS FROM TEST_TAB WHERE NUM = 100 NOT EXISTS 로문형변경 NOT EXISTS 로문형변경 MINUS 사용으로문형변경 유형별해결방안 - NULL 값비교 원본 SQL 구문권고 SQL 구문 ( 변경 ) 비고 FROM TEST_TAB WHERE VAR IS NOT NULL FROM TEST_TAB WHERE VAR IS NULL FROM TEST_TAB WHERE NUM IS NOT NULL FROM TEST_TAB WHERE VAR > /*SPACE*/ FROM TEST_TAB WHERE VAR = default_value FROM TEST_TAB WHERE NUM > 0 VAR 은문자열이므로 NOT NULL 비교를 로교체테이블생성시 VAR 컬럼의 DEFAULT 값을지정하여 NULL 값비교를 DEFAULT 값비교로대체 NUM 은숫자형이고양수값만존재한다는가정이성립하면 > 0 으로교체가능 53

54 Copyright 2014 TmaxData Co., Ltd. All Rights Reserved. Trademarks Tibero RDBMS is a registered trademark of TmaxData Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Contact Information TmaxData can be contacted at the following addresses to arrange for a consulting team to visit your company and discuss your options. Korea TmaxData Co., Ltd 5, Hwangsaeul-ro 329beon-gil, Bundang-gu, Seongnam-si, Gyeonggi-do. South Korea Tel: Fax: info@tmax.co.kr Web (Korean): Technical Support: USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ U.S.A Tel: Fax: info@tmaxsoft.com Web (English): Russia Tmax Russia L.L.C. Grand Setun Plaza, No A204 Gorbunova st.2, Moscow, Tel: +7(495) info.rus@tmaxsoft.com Web (Russian): Singapore Tmax Singapore Pte. Ltd. 430 Lorong 6, Toa Payoh #10-02, OrangeTee Building. Singapore Tel: info.sg@tmaxsoft.com United Kingdom TmaxSoft UK Ltd. Surrey House, Suite 221, 34 Eden Street, Kingston-Upon- Thames, KT1 1ER United Kingdom Tel: + 44-(0) info.uk@tmaxsoft.com Web (English): Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, Mita, Minato-Ku, Tokyo, Japan Tel: Fax: info.jp@tmaxsoft.com Web (Japanese): China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2 North Rd Dong San Huan, Chaoyang District, Beijing, China, China Tel: ~8 Fax: info.cn@tmaxsoft.com Web (Chinese): Brazil TmaxSoft Brazil Avenida Copacabana, andar 18 do Forte Empresarial, Alphaville - Barueri, Sao Paulo, SP-Brasil CEP contato.brasil@tmaxsoft.com TD-TRDV-D

목차 1. TABLE MIGRATOR 란? TABLE MIGRATOR 홖경설정 TABLE MIGRATOR 바이너리 Shell 설정 Migrator.Properterties 파일설정 TAB

목차 1. TABLE MIGRATOR 란? TABLE MIGRATOR 홖경설정 TABLE MIGRATOR 바이너리 Shell 설정 Migrator.Properterties 파일설정 TAB 윈백및업그레이드 Tibero Table Migrator 사용법 2014. 05. 12. 목차 1. TABLE MIGRATOR 란?... 3 2. TABLE MIGRATOR 홖경설정... 3 2.1. TABLE MIGRATOR 바이너리... 3 2.2. Shell 설정... 4 2.3. Migrator.Properterties 파일설정... 4 3. TABLE

More information

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식 Tibero DB Link (Tibero To Oracle) - Local 방식 2014. 04. 16. 목차 1. 구성환경... 3 2. 환경설정... 3 2.1. Tibero 서버 (AIX) 에 Oracle instance Client 파일을업로드... 3 2.2. Oracle Instance Client에대한환경설정등록 (.profile)... 4 2.3.

More information

윈백및업그레이드 Tibero Flashback 가이드

윈백및업그레이드 Tibero Flashback 가이드 Tibero Flashback 가이드 2014. 05. 09. 목차 1. FLASHBACK 소개... 3 1.1. Flashback 개요... 3 1.2. Flashback 기능... 3 2. FLASHBACK 기능... 3 2.1. FLASHBACK QUERY... 3 2.1.1. FLASHBACK QUERY 개요... 3 2.1.2. FLASHBACK QUERY

More information

개발및운영 Tibero Perl 연동

개발및운영 Tibero Perl 연동 Tibero Perl 연동 2014. 05. 27. 목차 1. Windows에서의홖경구성... 3 1.1 Tibero ODBC Driver 설치... 3 1.2. Tool 설치... 5 2. Unix에서의홖경구성... 6 2.1 iodbc 설치... 7 2.2 Tibero 설치... 7 2.3 Iodbc drvier manager 등록... 7 3. Tibero

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

단계

단계 본문서에서는 SQL 개요와구성요소를살펴보고 Tibero RDBMS 4( 이하 Tibero4) 데이터베이스시스템에서지 원하고있는기능을다양한 SQL 예제를통해확인해보도록한다. 자세한 SQL 구문문법에대해서는 Tibero 4 SQL 레퍼런스메뉴얼 (tibero_sql.pdf) 을참조하도록한다. Contents 1. SQL 개요... 3 1.1. SQL Statement

More information

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step

[JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step 기타지식 [JEUS 7.0] eclipse plug-in 연동 2015. 06. 09 [JEUS 7] eclipse plug-in 연동 1. 개요 Eclipse 와 JEUS 7 연동시필요한 plug-in 제공및환경설정에관한가이드제공하여 Eclipse 에서 JEUS 7 기동및 종료테스트할수있는방법을기술하였습니다. 2. Plug-in 설치 2.1 [Step. 1]

More information

설치및환경설정 Tibero tbprobe 사용법과원격지포트체크

설치및환경설정 Tibero tbprobe 사용법과원격지포트체크 Tibero tbprobe 사용법과원격지포트체크 2014. 04. 23. 목차 1. tbprobe 사용... 3 1.1. 로컬호스트 tibero 체크... 3 1.2. 원격호스트 tibero 체크... 3 2. tbprobe 상태값... 5 3. tbprobe 연결방법... 6 3.1. IP 와 listener_port 기재시... 6 3.2. IP 와 listener_port

More information

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties...

목차 1. 노드매니저종류 Java Type SSH Type 노드설정파일및로깅 nodes.xml jeusnm.properties <servername>.properties... 개발및운영 JEUS7 Node Manager 가이드 2014. 12. 15 목차 1. 노드매니저종류... 3 1.1 Java Type... 3 1.2 SSH Type... 3 2. 노드설정파일및로깅... 3 2.1 nodes.xml... 3 2.2 jeusnm.properties... 4 2.3 .properties... 4 2.4 JeusNodeManager.log...

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

목차 1. 개요 개요 연동테스트홖경 PowerBuilder Connection Tibero ODBC Driver 설정 PowerBuilder Connection 설정 Tiber

목차 1. 개요 개요 연동테스트홖경 PowerBuilder Connection Tibero ODBC Driver 설정 PowerBuilder Connection 설정 Tiber 개발및운영 Tibero Powerbuilder 연동 2014. 05. 27. 목차 1. 개요... 3 1.1 개요... 3 1.2 연동테스트홖경... 3 2. PowerBuilder Connection... 4 2.1 Tibero ODBC Driver 설정... 4 2.2 PowerBuilder Connection 설정... 5 3. Tibero - PowerBuilder

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리

Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리 튜닝및모니터링 Linux 권고커널파라미터 2014. 12. 11 Linux 권장커널파라미터 1. 커널파라미터별설명및설정방법 1.1 nofile ( max number of open files ) 설명 : 지원되는열린파일수를지정합니다. 기본설정이보통대부분의응용프로그램에대해충분합니다. 이매개 변수에설정된값이너무낮으면파일열기오류, 메모리할당장애또는연결설정오류가발생할수있습니다.

More information

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL

More information

슬라이드 1

슬라이드 1 Developer Course for Tibero RDBMS 2012 Tibero Co., Ltd. All Rights Reserved. 2012 Tibero Co., Ltd. All Rights Reserved. 1 Update History Date Worker Comments 2012.03.02 김범석문서업데이트 2012 Tibero Co., Ltd.

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

MySQL-.. 1

MySQL-.. 1 MySQL- 기초 1 Jinseog Kim Dongguk University jinseog.kim@gmail.com 2017-08-25 Jinseog Kim Dongguk University jinseog.kim@gmail.com MySQL-기초 1 2017-08-25 1 / 18 SQL의 기초 SQL은 아래의 용도로 구성됨 데이터정의 언어(Data definition

More information

튜닝및모니터링 OS 별 TCP Recommend Parameter for WebtoB/JEUS

튜닝및모니터링 OS 별 TCP Recommend Parameter for WebtoB/JEUS OS 별 TCP Recommend Parameter for WebtoB/JEUS 2014. 11. 26 목차 1. AIX... 3 1.1 TCP_KEEPINIT... 3 1.2 TCP_KEEPIDLE... 3 1.3 TCP_KEEPINTVL... 4 1.4 TCP_KEEPCNT... 4 1.5 TCP_TIMEWAIT... 4 1.6 CLEAN_PARTIAL_CONNS...

More information

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

Microsoft PowerPoint - Oracle Data Access Pattern.ppt Special Key Note Oracle Data Access Pattern ( 주 ) 오픈메이드컨설팅 오동규수석컨설턴트 1 What is Data Access Pattern? > 데이터를 I/O 하는방식 Index Scan Full Table Scan Rowid 2 Why is The Pattern Important? >SQL 의성능을좌지우지함. >SQL

More information

Microsoft Word - SQL튜닝_실습교재_.doc

Microsoft Word - SQL튜닝_실습교재_.doc * 실습환경 * 1. 오라클데이터베이스의튜닝실습을하기위해서는기본적인테이블과데이터가필요합니다. 다음과같은절차에의해환경설정을하십시오. 1) 강사가제공하는 Export 된파일 (scott.dmp) 을자신의 ORACLE 경로에저장하십시오. [C: ] cd C: ORACLE ORA92 BIN [C: ] dir scott.dmp scott.dmp 2) SYSTEM 사용자로접속하여

More information

설치및환경설정 JEUS Thread State Notify 설정

설치및환경설정 JEUS Thread State Notify 설정 JEUS Thread State Notify 설정 2014. 07. 02 목차 1. thread-state-notify 설정... 3 1.1 시나리오 #1. max-thread-active-time : 10초... 3 1.2 시나리오 #2. max-thread-active-time : 10초, thread-interrupt-execution : true...

More information

SQL Tuning Business Development DB

SQL Tuning Business Development DB SQL Tuning Business Development DB Oracle Optimizer 4.1 Optimizer SQL SQL.. SQL Optimizer :.. Rule-Based Optimization (RBO), Cost-Based Optimization (CBO) SQL Optimizer SQL Query Parser Dictionary Rule-Based

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 4 장 JOIN 을배웁니다 1 2 1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770> 제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY;

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY; Study Room Doc.02 : SQLD 예상문제 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 21 회기출문제를바탕으로작성 작성자 : 월야루 2016-09-04 객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES

More information

,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan scan I/O scan Index Scan ROWID scan I/O Fast Full Index Scan scan scan I/O Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

untitled

untitled (shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,

More information

5장 SQL 언어 Part II

5장 SQL 언어 Part II 5 장 SQL 언어 Part II 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 1 / 26 데이터조작문 데이터검색 : SELECT 문데이터추가 : INSERT 문데이터수정 : UPDATE 문데이터삭제 : DELETE 문 박창이 ( 서울시립대학교통계학과 ) 5 장 SQL 언어 Part II 2 / 26 SELECT

More information

Jerry Held

Jerry Held ,, - - - : DELETE : ROW (ROWID) row ROWID : I/O Full Table Scan I/O Index Scan ROWID I/O Fast Full Index Scan scan scan scan I/O scan scan Unique, nonunique. (Concatenated Index) B* Tree Bitmap Reverse

More information

TITLE

TITLE CSED421 Database Systems Lab MySQL Basic Syntax SQL DML & DDL Data Manipulation Language SELECT UPDATE DELETE INSERT INTO Data Definition Language CREATE DATABASE ALTER DATABASE CREATE TABLE ALTER TABLE

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 6 장. DML 을배웁니다 1 - SQL 명령어들 DML (Data Manipulation Language) : INSERT( 입력 ), UPDATE( 변경 ), DELETE( 삭제 ), MERGE( 병합 ) DDL (Data Definition Language) : CREATE ( 생성 ), ALTER

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

6장. SQL

6장. SQL 학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

빅데이터분산컴퓨팅-5-수정

빅데이터분산컴퓨팅-5-수정 Apache Hive 빅데이터분산컴퓨팅 박영택 Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를사용 Hadoop 클러스터에서 MapReduce 잡을생성함 Facebook 에서데이터웨어하우스를위해개발되었음 현재는오픈소스인 Apache 프로젝트 Hive 유저를위한

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

강의 개요

강의 개요 정규화와 SELECT (II) 웹데이터베이스 학과 학생 과목 학과 지도교수 학과학번성명 수강과목 담당교수 A 김수정 A 0001 고길동 성질이론 김수정 B 허영만 A 0002 둘리 한식의멋 허영만 C 강풀 B 0003 희동이 심리학의이해 강풀 과목 _ 성적 학번 수강과목 성적 0001 성질이론 A 0001 한식의멋 C 0002 성질이론 A 0002 한식의멋

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

0. Intro ORACLE 社 Oracle, My SQL, Exadata IBM 社 DB2, Informix SAP 社 ASE, IQ, ASA Microsoft 社 SQL Server Teradata 社 Teradata 공통점은? Altibase 社 Altibase

0. Intro ORACLE 社 Oracle, My SQL, Exadata IBM 社 DB2, Informix SAP 社 ASE, IQ, ASA Microsoft 社 SQL Server Teradata 社 Teradata 공통점은? Altibase 社 Altibase 목 차 SQL 기본과활용 2010. 09. 29 삼성 S D S 정성철수석 ( D A / T A ) 1. RDBMS 2. SQL 3. SELECT 4. INDEX 5. MODELING 6. JOIN 7. DRIVING TABLE 8. SUBQUERY 9. OPTIMIZER 10. 과목2. ERD 11. 과목2. 목차 0. Intro ORACLE 社 Oracle,

More information

FlashBackt.ppt

FlashBackt.ppt 1. Flashback 목적 Flashback 이란? 사용자실수에의한손상된데이터를 Database 의크기와상관없이복구를할수있는기능이다. 이 Flashback 기능은일반적인복구에서우려되는데이터베이스의크기를걱정하지않아도된다. 보통의사용자실수는커다란시스템장애가수반되며, 이를복구하기위해서는많은자원과시간이필요하다. 하지만 9i 에서지원되느 flashback query

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 3 장 SQL 복수행함수 ( 그룹함수 ) 를배웁니다 1 함수이름 의 미 사용예 COUNT 입력되는데이터들의건수를출력 COUNT(sal) SUM 입력되는데이터들의합계값을출력 SUM(sal) AVG 입력되는데이터들의평균값을출력 AVG(sal) MAX 입력되는데이터들중최고값을출력 MAX(sal) MIN

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양핚예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 10 장 view 를배웁니다 1 - View 란가상의테이블이다! 2 1. 단순 View (Simple View) SCOTT>CONN / AS SYSDBA; SYS>GRANT CREATE VIEW TO scott ; CREATE [OR REPLACE] [ FORCE NOFORCE] VIEW view

More information

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 ) SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 ) 이많기때문에, 실행계획생성시 SQL 의 Cost 를잘못계산하여최적의실행계획을세우지못하는경우가발생한다.

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL (section 4-6) 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) 2-5 제약조건 SECTION 03 데이터조작어 (DML)

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

Microsoft PowerPoint - Oracle Data Join Method.pptx [읽기 전용]

Microsoft PowerPoint - Oracle Data Join Method.pptx [읽기 전용] Special Key Note Oracle Data Join Method ( 주 ) 오픈메이드컨설팅 오동규수석컨설턴트 1 What is Join? JOIN is Multiply. 2 Why is the Join Method so important? 잘못사용하면큰재앙이따른다.( 위의그림처럼 ) 두개의집합을연결할수있는유일한수단. Join Method 는모든 DBMS

More information

SSL 접속테스트 본문서에서 WebtoB 가설치된디렉토리는 [WEBTOBDIR] 로표기하겠습니다.. 윈도우계열과리눅스 / 유닉스계열모두명령은동일하므로윈도우를기준으로설명하도록하겠습니다. 1. WebtoB 설정 1.1 Test 용인증서생성 SSL 접속테스트를위해 Webto

SSL 접속테스트 본문서에서 WebtoB 가설치된디렉토리는 [WEBTOBDIR] 로표기하겠습니다.. 윈도우계열과리눅스 / 유닉스계열모두명령은동일하므로윈도우를기준으로설명하도록하겠습니다. 1. WebtoB 설정 1.1 Test 용인증서생성 SSL 접속테스트를위해 Webto 개발및운영 SSL 접속테스트 Console 을통한 SSL 접속테스트 2014. 06. 27 SSL 접속테스트 본문서에서 WebtoB 가설치된디렉토리는 [WEBTOBDIR] 로표기하겠습니다.. 윈도우계열과리눅스 / 유닉스계열모두명령은동일하므로윈도우를기준으로설명하도록하겠습니다. 1. WebtoB 설정 1.1 Test 용인증서생성 SSL 접속테스트를위해 WebtoB

More information

PowerPoint Presentation

PowerPoint Presentation 6 장 SQL 목차 SECTION 01 SQL 의개요 1-1 SQL의역사 1-2 SQL의유형별종류 SECTION 02 데이터정의어 (DDL) 2-1 스키마 2-2 테이블생성 (CREATE TABLE) 2-3 테이블변경 (ALTER TABLE) 2-4 테이블제거 (DROP TABLE) SECTION 03 데이터조작어 (DML) 3-1 데이터검색 (SELECT)

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다. 설치및환경설정 JDBC 접속세션구분 / 확인 2013. 11. 01 개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다. 사용하기 JEUS 에서설정방법

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

PowerPoint Presentation

PowerPoint Presentation FORENSICINSIGHT SEMINAR SQLite Recovery zurum herosdfrc@google.co.kr Contents 1. SQLite! 2. SQLite 구조 3. 레코드의삭제 4. 삭제된영역추적 5. 레코드복원기법 forensicinsight.org Page 2 / 22 SQLite! - What is.. - and why? forensicinsight.org

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

객관식 1번풀이사전지식 * 비교연산자 ANY ( 서브쿼리 ) - 서브쿼리의결과에존재하는어느하나의값이라도만족하는조건을의미. 비교연산자로 " > " 를사용했다면메인쿼리는서브쿼리의값들중어떤값이라도만족하면되므로서브쿼리의결과의최소값보다큰모든건이조건을만족 - SOME 과동일 1번

객관식 1번풀이사전지식 * 비교연산자 ANY ( 서브쿼리 ) - 서브쿼리의결과에존재하는어느하나의값이라도만족하는조건을의미. 비교연산자로  >  를사용했다면메인쿼리는서브쿼리의값들중어떤값이라도만족하면되므로서브쿼리의결과의최소값보다큰모든건이조건을만족 - SOME 과동일 1번 Study Room Doc.02 : SQLD 예상문제 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 21 회기출문제를바탕으로작성 작성자 : 월야루 2016-09-04 객관식 1번풀이사전지식 * 비교연산자 ANY ( 서브쿼리 ) - 서브쿼리의결과에존재하는어느하나의값이라도만족하는조건을의미.

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT 3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, FOREIGN KEY (parent_id) REFERENCES Comments(comment_id)

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

오라클 명령어 와 SQL 정리

오라클 명령어 와 SQL 정리 1. 현재접속된계정의모든테이블를보기위한 SQL문 select * from tab; 2. 테이블구조확인하기 desc tablename ------------------------! SQL PLUS 명령어! ------------------------ 3. SQL PLUS 사용환경설정명령어 SET system_variable value system_variable

More information

PowerPoint Presentation

PowerPoint Presentation MySQL 한번에끝내기 목차 1. MySQL 소개 2. MySQL 설치 3. SQL 기본 4. SQL 고급 MySQL 한번에끝내기 3 1. MySQL 소개 MySQL 소개 MySQL 은가장널리사용되고있는관계형데이터베이스관리시스템 (RDBMS: Relational DBMS) MySQL 은오픈소스이며, 다중사용자와다중스레드를지원 C 언어, C++, JAVA, PHP

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUERY 을실행하게된다면 BLOCK I/O 가많이발생하게된다. 이런이유로 QUERY 의성능은좋지못할것이다.

More information

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r -------------------------------------------------------------------- -- 1. : ts_cre_bonsa.sql -- 2. :

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

FileMaker SQL Reference

FileMaker SQL Reference FileMaker 14 5 5 5 5 5 6 7 7 7 8 9 9 10 11 11 12 12 13 14 17 17 18 19 21 22 22 22 23 23 24 24 25 25 25 27 27 28 28 30 31 33 33 4 35 38 1 http://www.filemaker.com/documentation/ko 1 1 1 1 1 http://www.filemaker.com/documentation/ko

More information

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc 특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력

More information

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터 Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터를사용자에게전송하게되며 Parsing 단계에서실행계획이생성된다. Bind 변수를사용하는 SQL

More information

목차 JEUS JNLP Client Sample 가이드 JNLP 란 JNLP의이점 TEST TEST 환경 TEST Sample sample application 셋팅 (ser

목차 JEUS JNLP Client Sample 가이드 JNLP 란 JNLP의이점 TEST TEST 환경 TEST Sample sample application 셋팅 (ser 기술교육 JEUS JNLP Sample 가이드 2015. 06. 19 목차 JEUS JNLP Client Sample 가이드... 3 1. JNLP 란... 3 2. JNLP의이점... 3 3. TEST... 3 3.1 TEST 환경... 3 3.2 TEST Sample... 4 3.2.1 sample application 셋팅 (server side)...

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

Microsoft Word - CNVZNGWAIYSE.doc

Microsoft Word - CNVZNGWAIYSE.doc SQL 실습 - 개요 A. SQL 실습환경 i. 운영체제 : UNIX 또는 Windows 서버 데이터베이스관리시스템 : Oracle 9i 또는 10g B. SQL 문장유형 Data Manipulation Language(DML) SELECT INSERT UPDATE DELETE MERGE Data Definition Language(DDL) CREATE ALTER

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

ORACLE-SQL

ORACLE-SQL ORACLE-SQL SELECT 문 2014-04-12 Blog.ksh123jjang.me 내용 SELECT문이란?... 2 SLELECT문사용하기... 3 모든열선택... 4 특정열검색... 5 SQL문작성방법... 6 열머리글기본값... 7 산술식... 8 NULL... 9 열 alias... 10 연결연산자... 11 대체인용연산자 (q)... 12 중복행제거...

More information

튜닝및모니터링 Tibero EVENT 가이드

튜닝및모니터링 Tibero EVENT 가이드 Tibero EVENT 가이드 2014. 07. 14. 목차 1. TB_EVENT 띾?... 3 2. TB_EVENT 설정... 3 2.1. EVENT 파라미터... 3 2.1.1. EVENT_TRACE... 3 2.1.2. EVENT_TRACE_DEST... 4 2.1.3. EVENT_TRACE_MAP... 4 2.1.4. EVENT_TRACE_FILE_SIZE...

More information

슬라이드 제목 없음

슬라이드 제목 없음 4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여

More information

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý 5 중 1 2007-06-12 오후 5:52 Home Login Register SQL Query SQL Tuning Oracle Administration Tools References Boards SoQooL? 쏘쿨 SoQooL) 이란? Q&A Tips Lectures Function Lectures Oracle Spatial Tips Scripts SQL

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본으로사용할수도있음 여러개의테이블에서서로유기적인관계를설정하여하나의테이블에서작업하는것처럼작업이가능 2- 쿼리 (Query) 종류 1) 선택쿼리가장일반적인방법형태의쿼리

More information

SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다

SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다 기타지식 SSL 과 TLS 2015. 07.20 SSL(Secure Socket Layer) 과 TLS(Transport Layer Security) 개요 전자상거래가활발해지면서웹보안이매우중요해지고있으며, 최근정보통신망법의개정으로아무리소상공인이라 도홈페이지운영시개인정보를취급하고있다면아래와같은내용을조치하도록되어있습니다 이러한 보안서버 의기반이되는 SSL/TLS

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

빅데이터 분산 컴퓨팅 -6

빅데이터 분산 컴퓨팅 -6 Hive Data Management Join in Hive 빅데이터분산컴퓨팅박영택 Hive 에서의 Joins Hive 에서서로다른데이터간의 Join 은빈번하게발생 Hive 에서지원하는 Join 의종류 Inner joins Outer joins(left, right, and full) Cross joins( Hive 0.1 이상버전 ) Left semi joins

More information

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt . SQL(Structured Query Language) 특징 [ 출제빈도 상 ] 사용자 SQL ) 관계대수와관계해석을기초로한고급데이터언어 ) 이해하기쉬운형태 3) 대화식질의어로사용가능 4) 데이터정의, 조작, 제어기능제공 5) COBOL, C, PASCAL 등의언어에삽입 -> 내장 SQL 6) 레코드집합단위로처리 7) DBMS 에서사용되는비절차적대화형 Language

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

Microsoft Word - PLSQL.doc

Microsoft Word - PLSQL.doc PL/SQL 2008 DB system and programming 보충자료 PL/SQL의실행절 BEGIN 절에서의몇가지규칙 - 실행문은여러라인에걸쳐사용할수있다. - 변수명의명명규칙은오라클의일반적인명명규칙과동일하다. PL/SQL 블록내에서 SQL 문을사용할때에는컬럼명과같은변수명은피해야한다. - SQL에서와마찬가지로날짜와문자는홑따옴표 ( ) 를사용하여인용하여야한다.

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

SQL

SQL 데이터베이스및 SQL 언어의기초 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 1 / 36 Part I 데이터베이스 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 2 / 36 데이터의구성및표현 개체 (entity): DB가표현하려는유형 / 무형적정보의대상속성 (attribute): 개체가갖는특성도메인

More information