슬라이드 1
|
|
- 서국 하
- 6 years ago
- Views:
Transcription
1 Introduction TO SQL Altibase Education Center Copyrightc2013 Altibase.corp All rights reserved
2 1. ALTIBASE CONCEPT 1. ALTIBASE HDB 2. 관계형데이터모델 3. ISQL
3 1.1 ALTIBASE HDB
4 ALTIBASE HDB Hybrid DBMS 비즈니스변화 IT 인프라변화 IT 환경분석 새로운비즈니스모델등장 고객중심의환경 정보흐름의가속화 글로벌경쟁시대 Memory 가격의지속적인하락 - 대용량 Memory 탑재서버출현 통신장비속도의지속적인발전 - M Byte G Byte 전송속도 - 트랜잭션의대용량화 Mobile Device 보급률확대 디지털화 유비쿼터스컴퓨팅환경 데이터홍수 요구사항변화 고성능데이터처리 대용량데이터처리
5 데이터차별화 시간의흐름에따라데이터의속성은변함 데이터속성변화 시스템요구사항 HOT DATA, 실시간처리가요구, 접근빈도 80% 최근 6 개월이전 1 년이전 WARM DATA, 준실시간처리요구, 접근빈도 10% TEPID DATA, 대용량처리, 접근빈도 7% COLD DATA, 대용량이력보관용, 접근빈도 3% 10 년이전 효율적인데이터관리를위한 Data 차별화필요 (Hot Data 와 Cold Data 구분 ) IDC 조사기록 : Worldwide Disk Storage System Forecast
6 데이터차별화 Hybrid DBMS 를통한효율성증대 일반적 MMDBMS 의적용 ( 혼용구조 ) Hybrid DBMS 의적용 MMDBMS 데이터동기화필요 DBA APPLICATION Resource Hybrid DBMS 통합엔진 DBA APPLICATION Resource DRDBMS 유지보수 유지보수 관리에서운영, 구성적인모든비용과노력들이두개의 DBMS 를전부제어해야만함 메모리와디스크저장장치를하나의엔진에서완벽하게융합되어제공함으로효율성극대화 관리적비용 : DRDBMS + MMDBMS 비용추가 운영적비용 : DRDBMS + MMDBMS 비용추가 구성적비용 : DRDBMS + MMDBMS 비용추가 관리적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ] 운영적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ] 구성적비용 : Hybrid DBMS 만을관리 [ 비용 ½ 절감 ]
7 Hybrid DBMS Hybrid DBMS 테이블스페이스구조 DBMS Engine Memory Tablespace Buffer for Disk TBS Memory Disk Tablespace Storage
8 1.2 관계형데이터모델
9 관계형데이터모델 관계형데이터베이스 관계형데이터모델 DB 데이터를이차원테이블에저장하고테이블들간관계를정의하는구조 데이터의독립성, 일관성, 무결성을보장 기본키와이를참조하는외래키로데이터간의관계를표현 ER(Entity Relationship) 모델로표현 SQL(Structured Query Language) 을이용하여 DBMS와통신
10 관계형데이터모델 관계형데이터모델에서사용되는객체 Primary key Attribute Relation Tuple 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN 김철수 경기 23-SEP 박영희 부산 01-JAN-2010 용어개념특징 Relation Attribute Tuple 테이블 열 (column) 행 (row) 각열 (Column) 은유일한값을가지며행의순서무의미 속성의이름은모두달라야함속성들간의순서는중요하지않음 연관된속성의모임파일구조의레코드와같은의미 Primary Key 유일한식별자테이블의모든행들을구별하기위해사용 Domain 속성값들의집합 여러개의속성에서공유속성의이름과는달라도무관
11 관계형데이터모델 SQL(Structured Query Language) 데이터베이스에저장되는데이터를조작하고, 관리하며, 검색하기위한언어 ;( 세미콜론 ) 으로종료, 대소문자를구분하지않음 SQL 종류 데이터정의어 (Data Definition Language) 메타정보가변경되는 SQL 문, 객체를생성, 변경, 삭제하는 SQL 문 CREATE, ALTER, DROP, TRUNCATE, RENAME, GRANT, REVOKE 데이터조작어 (Data Manipulation Language) 데이터를질의하거나데이터를변경하는 SQL 문 AUTOCOMMIT 이 OFF 인경우명시적인 COMMIT, ROLLBACK 이필요 INSERT, DELETE, UPDATE, SELECT, MOVE, ENQUEUE, DEQUEUE, LOCK 데이터제어어 (Data Control Language) 시스템, 세션제어문 ALTER SYSTEM, ALTER SESSION 트랜잭션제어문 COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION
12 1.3 ISQL
13 isql isql ALTIBASE에접속하여질의수행및결과를조회할수있는유틸리티 DBA권한으로 ALTIBASE 구동및종료, 백업및복구등수행가능 $ALTIBASE_HOME/bin 에위치 Shell::/home/alti2> isql u sys p manager port nls_use MS949 s ALTIBASE Client Query utility. Release Version Copyright 2000, ALTIBASE Corporation or its subsidiaries. All Rights Reserved ISQL_CONNECTION = TCP, SERVER = , PORT_NO = isql>
14 isql is 스크립트 $ALTIBASE_HOME/bin 에위치 isql의입력시옵션들을생략하고접속할수있도록제공하는스크립트 Shell::/home/alti2> cat $ALTIBASE_HOME/bin/is #!/bin/sh trap "" TSTP ${ALTIBASE_HOME}/bin/isql -s u sys -p manager $*
15 isql isql 실행시입력옵션 입력옵션 설명 -s ALTIBASE 서버가위치한 IP 를지정 -u ALTIBASE DB 사용자명을지정 -p DB 사용자의패스워드를지정 -port -nls_use ALTIBASE Listen Port 번호를지정 ALTIBASE DB 생성시입력한문자셋을지정 -o isql 에서실행한결과를저장할파일명을지정 -f isql 에서수행할질의및명령을저장한입력파일명을지정 -h 입력옵션에대한도움말을출력
16 isql isql 실행후입력옵션 (1) 옵션 설명 테이블구성정보를확인 지정된파일명을실행! OS 명령을수행하고자할경우 h 수행된질의의목록을확인 / 직전에수행한질의를재수행 ed autocommit spool [filename] show all show user 직전에수행한질의를편집하고자할경우현재세션의 autocommit 모드를변경할경우 (on/off) spool 명령에입력된파일에현재수행결과를기록 isql의현재설정상태및사용자명을출력현재 isql로서버에접속중인사용자명을출력
17 isql isql 실행후입력옵션 (2) 옵션 설명 colsize linesize pagesize heading timing vertical foreignkeys 칼럼사이즈의길이를지정 하나의레코드의출력라인의길이를지정 지정된개수만큼레코드출력후칼럼타이틀을출력 출력결과에서칼럼타이틀을보이거나감추도록설정 실행한질의의수행시간을 1/100 초단위로출력 칼럼들을세로로출력한라인에 ( 칼럼명 : Value ) 형태로결과를출력 desc 명령으로테이블조회시참조키정보를출력 (on/off)
18 isql isql 사용예 : 테이블목록의조회 isql> SELECT * FROM TAB; USER NAME TABLE NAME TYPE SYSTEM_ STO_COLUMNS_ SYSTEM TABLE SYSTEM_ STO_DATUMS_ SYSTEM TABLE SYSTEM_ STO_ELLIPSOIDS_ SYSTEM TABLE SYSTEM_ STO_GEOCCS_ SYSTEM TABLE SYSTEM_ STO_GEOGCS_ SYSTEM TABLE.. isql>
19 isql isql 사용예 : 테이블구성의조회 isql> DESC t1; [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] NAME TYPE IS NULL A INTEGER FIXED NOT NULL [ INDEX ] NAME TYPE IS UNIQUE COLUMN SYS_IDX_ID_102 BTREE UNIQUE A ASC [ PRIMARY KEY ] A isql>
20 2. SELECT 1. SELECT 기초 2. 단일행함수 3. 그룹함수 & 윈도우함수 4. JOIN 5. 서브쿼리 6. SET 연산자 7. 계층질의
21 2.1 SELECT 기초
22 데이터검색 SELECT 데이터베이스에서데이터를검색하는문장 SELECT 문의기능 SELECTION PROJECTION 테이블에서일부의행만검색 테이블에서일부의열만검색 JOIN 서로다른테이블을연결하여데이터를함께검색
23 데이터검색 기본 SELECT 구문 예제 SELECT * { [DISTINCT ALL] column expression [alias], } FROM table_name; Employee 테이블의모든사원정보를검색 isql> SELECT * 2 FROM employee; Employee 테이블중사원이름과급여를검색 isql> SELECT ename, salary 2 FROM employee; 중복된데이터제거 isql> SELECT dno 2 FROM employee; isql> SELECT DISTINCT dno 2 FROM employee;
24 NULL NULL 알수없는값 0 또는공백과다름 테이블생성시 NOT NULL 또는 PRIMARY KEY 로정의되지않은모든타입의칼럼은 NULL 을포함할수있음 예제 Employee 테이블의급여정보를검색 isql> SELECT salary 2 FROM employee; SALARY NULL 을의미
25 Alias Alias 컬럼과테이블의별명을지정 칼럼의별명은 display 시칼럼의이름을바꿔주고, 테이블의별명은 join/subquery 등에서사용 구문 SELECT column_name [AS] alias, FROM table_name [AS] alias; AS 는생략가능 공백, 특수문자를포함하거나대소문자를구별할때는 " ", ' ' 를사용 예제 ename 대신 Employee Name 으로검색 isql> SELECT ename AS "Employee name" 2 FROM employee; Employee name EJJUNG HJNO - Employee name 으로 display
26 WHERE SELECTION 테이블에서필요한행만검색 WHERE 절사용 구문 SELECT column_name, FROM table_name WHERE conditions; conditions 에는칼럼이름, 표현식, 상수, 비교연산자등으로구성 예제 KSKIM 사원의급여를검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE ename='kskim'; ENAME SALARY KSKIM row selected.
27 WHERE 조건절구성항목 칼럼, 문자나숫자상수 연산자 (+, -, *, /, =, >, < 등 ) LIKE, IN, BETWEEN, EXISTS, NOT IS NULL, IS NOT NULL 함수 AND, OR, NOT ANY, ALL 상수의표현 문자열 대소문자를구별하며, '( 작은따옴표 ) 로묶는다. ex) 'KSKIM' 날짜 날짜형식을구별하며, '( 작은따옴표 ) 로묶는다. 기본형식은 'DD-MON-YYYY' ex) '05-MAY-2011' 숫자 '( 작은따옴표 ) 로묶지않고숫자만작성한다. ex) 1234
28 Operator 산술연산자 NUMBER, DATE 데이터에대해사용 산술연산자 설명 사용가능한데이터타입 + 더하기 NUMBER, DATE - 빼기 NUMBER, DATE * 곱하기 NUMBER / 나누기 NUMBER 산술연산자우선순위 곱셈과나눗셈은덧셈과뺄셈보다우선순위가높음 우선순위가동일한연산자는왼쪽에서오른쪽으로계산 괄호 () 를이용하여우선순위를조정 예제 사원이름, 급여정보와연봉을함께검색 isql> SELECT ename, salary, salary * 12 2 FROM employee;
29 Operator 산술연산자와 NULL NULL 에연산을수행하면그결과값도 NULL 이리턴 예제 사원이름, 급여정보와연봉을함께검색 isql> SELECT ename, salary, salary * 12 2 FROM employee; ENAME SALARY SALARY* EJJUNG HJNO HSCHOI KSKIM SJKIM HYCHOI HJMIN salary 가 NULL 일경우 salary*12 도 NULL 이리턴
30 Operator 연결연산자 문자열을연결할때는 기호를사용 칼럼과칼럼을연결하거나문자열과칼럼들을연결 예제 사원이름과급여를함께검색 isql> SELECT ename salary 2 FROM employee; ENAME SALARY EJJUNG HJNO HSCHOI 사원이름과급여를함께검색 ( 문자열포함 ) isql> SELECT ename ' 의급여는 ' salary 2 FROM employee; ENAME ' 의급여는 ' SALARY 연결된 1 개의칼럼 EJJUNG 의급여는문자열을함께연결 HJNO 의급여는
31 Operator 비교연산자 (1) 비교연산자 설명 = 같음 > ~ 보다큼 >= ~ 보다크거나같음 < ~ 보다작음 <= ~ 보다작거나같음 <>,!= 같지않음 예제 급여가 이상인사원을검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary >= ; 4002 부서에서일하지않는사원을검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE dno <> 4002;
32 Operator 비교연산자 (2) 비교연산자 설명 BETWEEN ~ AND ~ 지정한값을포함하여두값사이인가? IN(list) list 에같은값이있는가? IS NULL NULL 값인가? LIKE 문자패턴비교 BETWEEN AND 지정한값사이에있는지를비교. 지정한값은포함하여판단 예제 급여가 과 사이인사원을검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary BETWEEN AND ;
33 Operator IN () 안에지정된목록의값이일치하는지를비교 예제 4001 또는 4002 부서에서일하는사원을검색 isql> SELECT ename, dno 2 FROM employee 3 WHERE dno IN (4001, 4002); KSKIM, YHBAE 와 CHLEE 사원을검색 isql> SELECT ename 2 FROM employee 3 WHERE ename IN ('KSKIM', 'YHBAE', 'CHLEE');
34 Operator IS NULL NULL 값인지를비교 = NULL 로비교하면 No rows selected. 예제 급여가아직확정되지않은사원을검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary = NULL; ENAME SALARY No rows selected. isql> SELECT ename, salary 2 FROM employee 3 WHERE salary IS NULL; ENAME SALARY EJJUNG JDLEE DIKIM 3 rows selected.
35 Operator LIKE 문자패턴을비교 문자패턴비교시사용가능한기호 기호 설명 _ 하나의문자를대체 ESCAPE %, _ 를포함한문자열을비교시사용 예제 % 문자가없거나하나이상의문자를대체 이름이 K 로시작하는사원정보를검색 isql> SELECT ename 2 FROM employee 3 WHERE ename LIKE 'K%'; 이름의두번째문자가 A 인사원을검색 isql> SELECT ename 2 FROM employee 3 WHERE ename LIKE '_A%';
36 Operator 이름에 _ 를포함한사원을검색 isql> SELECT ename 2 FROM employee 3 WHERE ename LIKE '%\_%' ESCAPE '\'; ESCAPE 과함께임의의문자를사용가능
37 Operator 논리연산자 두개의조건의결과를결합하여하나의조건으로생성 논리연산자 AND OR NOT 설명두조건이모두 TRUE이면 TRUE, 그렇지않으면 FALSE. 두조건중에하나라도 TRUE이면 TRUE, 둘다 FALSE이면 FALSE. 조건이 TRUE이면 FALSE, FALSE이면 TRUE 예제 급여가 이상이면서 4002 부서에서일하는사원을검색 isql> SELECT ename, dno, salary 2 FROM employee 3 WHERE salary >= AND dno = 4002; 급여가 이상이거나 4002 부서에서일하는사원을검색 isql> SELECT ename, dno, salary 2 FROM employee 3 WHERE salary >= OR dno = 4002;
38 Operator 급여가 과 사이가아닌사원을검색 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary NOT BETWEEN AND ; 4001, 4002 부서에서일하지않는사원을검색 isql> SELECT ename, dno 2 FROM employee 3 WHERE dno NOT IN (4001, 4002); 이름에 A 를포함하지않는사원을검색 isql> SELECT ename, dno 2 FROM employee 3 WHERE ename NOT LIKE '%A% ;
39 ORDER BY 결과를정렬 검색결과를정렬 내림차순, 오름차순으로정렬이가능 구문 ASC( 기본값 ) 는오름차순, DESC 는내림차순으로정렬 예제 SELECT column_name, FROM table_name [WHERE conditions] ORDER BY {column_name alias column_index} [ASC DESC]; 사원정보를사원이름순으로내림차순으로정렬하여검색 isql> SELECT ename 2 FROM employee 3 ORDER BY ename DESC; ENAME YHBAE DIKIM CHLEE
40 ORDER BY 사원정보를사원이름순으로내림차순으로정렬하여검색 (alias 사용 ) isql> SELECT ename AS employee_name 2 FROM employee 3 ORDER BY employee_name DESC; ENAME YHBAE DIKIM CHLEE 사원정보를사원이름순으로내림차순으로정렬하여검색 (column_index 사용 ) isql> SELECT ename 2 FROM employee 3 ORDER BY 1 DESC; ENAME YHBAE DIKIM CHLEE
41 ORDER BY 사원정보를부서번호의오름차순순으로정렬하고부서번호가같다면사원 이름의내림차순순으로정렬 isql> SELECT dno, ename, salary 2 FROM employee 3 ORDER BY dno, ename DESC; DNO ENAME SALARY JHCHOI HSCHOI KWKIM HYCHOI YHBAE MSKIM MYLEE KMKIM HJMIN DIKIM HJNO rows selected.
42 LIMIT 결과집합을제한 검색결과의일부분만반환 구문 start index 생략시첫번째행부터시작 예제 SELECT column_name, FROM table_name [WHERE conditions] [ORDER BY column_name,..] LIMIT [start_index,] row_count; 사원중다섯번째부터 3 명의사원만검색 isql> SELECT * 2 FROM employee 3 LIMIT 5, 3; 급여를내림차순으로정렬한후상위 5 명만검색 isql> SELECT ename 2 FROM employee 3 ORDER BY salary DESC 4 LIMIT 5;
43 PIVOT PIVOT PIVOT 이란 ROW 형태로주어진 DATA 를 Column 형태로보여주는쿼리 구문 SELECT column_name, FROM table_name PIVOT (pivot_clause pivot_for_clause pivot_in_clause) [WHERE conditions] Pivot_clause Aggregate 되는컬럼을정의하는부분으로 7 가지 (COUNT, MIN, MAX, SUM, AVG, STDDEV, VARIANCE) Aggregate Function 만올수있다. Pivot_for_clause Pivot 되는컬럼을정의하며컬럼이름만올수있다. Pivot_in_clause Pivot For 구문에사용된컬럼의 Filter 를정의하며 Alias 를지정할수있다.
44 PIVOT 예제 부서별로 PM, PL, MANAGER가몇명인지를확인하는내용을 PIVOT 구문을사용하여검색 isql> SELECT * FROM 2 (SELECT e.emp_job, d.dname, e.eno 3 FROM employee e, department d 4 WHERE e.dno = d.dno) 5 PIVOT (COUNT(eno) 6 FOR emp_job 7 IN ( PM, PL, MANAGER ) ); DNAME 'PM' 'PL' 'MANAGER' RESEARCH DEVELOPMENT DEPT RESEARCH DEVELOPMENT DEPT SOLUTION DEVELOPMENT DEPT QUALITY ASSURANCE DEPT CUSTOMER SUPPORT DEPT PRESALES DEPT MARKETING DEPT BUSINESS DEPT rows selected.
45 PIVOT 유의사항 중복 Alias 를허용하지않는다. Pivot_clause에 Aggregate Function 만올수있다. Pivot_for 에는순수 column 만올수있다. Pivot_for 의항목개수와 Pivot_in의 sublist 의개수가같아야한다.
46 2.2 단일행함수
47 함수 함수 입력값에대해작업을수행하여결과값을리턴 SELECT, WHERE, ORDER BY, START WITH 절에서사용가능 중첩해서사용가능 인수 1 인수 2 인수 n 함수 함수가작업을수행 결과값 함수의기능 데이터의계산수행 출력결과를조작 날짜및숫자형식을지정 칼럼의데이터유형변경
48 함수 함수의유형 단일행함수 : 하나의입력값에하나의결과값을반환 다중행함수 : 여러개의입력값에하나의결과값을반환 ( 그룹함수 ) 인수 1 단일행함수 결과값 인수 1 인수 2 인수 n 다중행함수 결과값 단일행함수의유형 문자 : 문자를입력하면문자또는숫자를반환 숫자 : 숫자를입력하면숫자를반환 날짜 : Date 데이터의값을연산, Date 값혹은숫자를반환 변환 : 값의데이터타입을변환 기타
49 함수 단일행함수구문 function_name (column expression [arg1, arg2, ] ) 예제 사원이름을소문자로변경 isql> SELECT ename, LOWER(ename) FROM employee; ENAME LOWER(ENAME) EJJUNG ejjung HJNO hjno HSCHOI hschoi 을 19 로나누었을때나머지를검색 isql> SELECT MOD(10000,19) FROM dual; MOD(10000,19) row selected. dual 은하나의칼럼만가지고있는 dummy 테이블. 주로일시적인연산에사용
50 문자함수 문자함수 (1) 함수결과설명 ASCII('A') 65 ASCII 코드값을반환 CHAR_LENGTH ('ALTIBASE V5') CHARACTER_LENGTH('ALTIBASE V5') LENGTH('ALTIBASE V5') 11 문자열의길이를반환 CHR(65) A ASCII 코드값을받아서해당하는문자로반환 CONCAT('ALTIBASE', 'V5') ALTIBASEV5 첫번째문자와두번째문자를연결 INITCAP('altibase V5') INSTR('ALTIBASE V5', 'V5') POSITION('ALTIBASE V5', 'V5') Altibase V5 단어의첫문자를대문자, 나머지문자를소문자로반환 10 문자열을찾아그위치를반환 LOWER('ALTIBASE V5') altibase v5 소문자로변환 LPAD(12000, 8, '*') ***12000 LTRIM('ALTIBASE V5','ALTIBASE ') OCTET_LENGTH('ALTIBASE HDB') LENGTHB('ALTIBASE HDB') V5 첫번째문자가두번째지정한숫자길이가되도록왼쪽에서부터세번째문자를삽입하여반환 첫번째문자열이두번째문자열로시작할경우두번째문자열을삭제한후반환 12 입력한문자열의바이트크기를반환
51 문자함수 문자함수 (2) 함수결과설명 REPLACE2('ALTIBASE V5', 'ALTIBASE,'A.') A.V5 첫번째문자열에포함된두번째문자열을세번째문자열로변환 REPLICATE('Alti', 3) AltiAltiAlti 문자열을지정한숫자만큼반복하여반환 RPAD(12000, 8, '*') 12000*** RTRIM('ALTIBASE V5', 'V5') ALTIBASE SIZEOF('ALTIBASE V5') 11 SUBSTR('ALTIBASE V5', 1, 4) TRANSLATE('ALTIBASE V4', '4', '5') TRIM('ALTIBASE V5', 'A') ALTI ALTIBASE V5 LTIBASE V5 UPPER('ALTIBASE V5') ALTIBASE V5 대문자로변환 첫번째문자가두번째지정한숫자길이가되도록오른쪽에서부터세번째문자를삽입하여반환 첫번째문자열이두번째문자열로끝날경우두번째문자열을삭제한후반환 문자열혹은열에할당된크기를반환테이블생성시정의된칼럼크기를반환 REVERSE_STR('ALTIBASE') ESABITLA 문자열을거꾸로반환 문자열의일부를반환. 첫번째문자부터 4 개의문자열을반환 첫번째문자열에포함되어있는두번째문자를모두세번째문자로변환 첫번째문자열이두번째문자열로시작하거나끝날경우두번째문자열을삭제한후반환
52 문자함수 예제 이름이 kskim 인사람의정보를검색 isql> SELECT ename, INITCAP(ename), SUBSTR(ename,2,3), REVERSE_STR(ename), INSTR(ename,'K') 2 FROM employee 3 WHERE LOWER(ename) = 'kskim'; ENAME INITCAP(ENAME) SUBSTR(ENAME,2,3) REVERSE_STR(ENAME) INSTR(ENAME,'K') KSKIM Kskim SKI MIKSK 1 emp_job 에여러가지문자함수를사용 isql> SELECT emp_job, SIZEOF(emp_job), LENGTH(emp_job), RPAD(emp_job,8,'*'), 2 TRANSLATE(emp_job,'E','Z') 3 FROM employee; EMP_JOB SIZEOF(EMP_JOB) LENGTH(EMP_JOB) RPAD(EMP_JOB,8,'*') TRANSLATE(EMP_JOB,'E','Z') CEO 15 3 CEO***** CZO DESIGNER 15 8 DESIGNER DZSIGNZR ENGINEER 15 8 ENGINEER ZNGINZZR...
53 숫자함수 숫자함수 (1) 함수결과설명 ABS( ) 절대값 ACOS(0.3) ACOS ASIN(0.3) ASIN ATAN(0.3) ATAN ATAN2(0.3, 0.2) ATAN2 CEIL(99.9) 100 올림. 소수점을기준 COS(180 * /180) -1 COS COSH(0) 1 COSH EXP(2.4) e n (e는 ) FLOOR(-99.9) -100 내림. 소수점을기준 LN(2.4) 자연로그
54 숫자함수 숫자함수 (2) 함수결과설명 LOG(10, 100) 2 log 함수 MOD(10, 3) 1 첫번째인자값을두번째인자값으로나눈나머지 POWER(3, 2) 9 RANDOM(2) 첫번째인자값을두번째인자값만큼반복해서곱한값. 지수 random 값을반환. 입력한숫자가같으면같은값을반환 ROUND( , 3) 반올림. 두번째숫자가반올림할소수점자릿수를의미 SIGN(15) 1 부호를리턴. 0 이면 0, 양수면 1, 음수면 -1 을리턴 SIN(30 * /180) 0.5 SIN SINH(1) SINH SQRT(10) 제곱근 TAN(135 * /180 ) -1 TAN TANH(0.5) TANH TRUNC(15.79, 1) 15.7 버림. 두번째숫자가버림할소수점자릿수를의미
55 숫자함수 예제 salary 를 12 로나누었을때나머지를질의 isql> SELECT ename, salary, MOD(salary,12) 2 FROM employee; ENAME SALARY MOD(SALARY,12) EJJUNG HJNO HSCHOI KSKIM SJKIM 숫자에대해여러가지숫자함수를사용 isql> SELECT ROUND( ,2), TRUNC( ,-1), CEIL( ), FLOOR( ), SQRT( ) 2 FROM dual; ROUND( ,2) TRUNC( ,-1) CEIL( ) FLOOR( ) SQRT( )
56 숫자함수 random 함수사용 isql> SELECT RANDOM(100) 2 FROM dual; RANDOM(100) isql> SELECT RANDOM(200) 2 FROM dual; RANDOM(200) isql> SELECT RANDOM(100) 2 FROM dual; RANDOM(100)
57 날짜함수 날짜함수 함수결과설명 SYSDATE 28-APR-2011 시스템의날짜를반환 ADD_MONTHS(SYSDATE,5) 28-SEP-2011 날짜에월을더함 DATEADD(SYSDATE, -30, 'DAY') DATEDIFF(SYSDATE, '01-JAN-11', 'DAY') 29-MAR 날짜에세번째포맷을두번째숫자만큼더함. -30 일을더함 두번째날짜에서첫번째날짜를포맷만큼뺀수를반환 01-JAN-11 에서 SYSDATE 만큼며칠이지났는지를뺌 DATENAME(SYSDATE,'DAY') EXTRACT(SYSDATE,'MONTH') DATEPART(SYSDATE,'MONTH') THURSDAY 날짜에서월 / 요일이름을추출. MONTH 는월을, DAY 는요일을나타냄 4 날짜에서주어진포맷을추출 LAST_DAY(SYSDATE) 30-APR-2011 날짜에서해당월의마지막날짜를반환 MONTHS_BETWEEN(SYSDATE, '01-JAN-11') 첫번째날짜에서두번째날짜를뺀값을개월수로반환 NEXT_DAY(SYSDATE,'SUNDAY') 01-MAY-2011 날짜이후에돌아오는요일의날짜를반환 ROUND(SYSDATE,'MONTH') 01-MAY-2011 날짜에서두번째포맷에맞춰반올림 TRUNC(SYSDATE,'MONTH') 01-APR-2011 날짜에서두번째포맷에맞춰버림
58 날짜함수 예제 현재시스템의날짜 (SYSDATE) 와 SYSDATE 에대한여러가지날짜함수를사용 isql> SELECT SYSDATE, DATEADD(SYSDATE, 2, 'WEEK'), DATEDIFF(SYSDATE, '01-APR-11', 'DAY') 2 FROM dual; SYSDATE DATEADD(SYSDATE, 2, 'WEEK') DATEDIFF(SYSDATE, '01-APR-11', 'DAY') APR MAY isql> SELECT EXTRACT(SYSDATE,'QUARTER'), DATENAME(SYSDATE,'DAY'), 2 DATENAME(SYSDATE, 'DY') 3 FROM dual; EXTRACT(SYSDATE,'QUARTER') DATENAME(SYSDATE,'DAY') DATENAME(SYSDATE, 'DY') FRIDAY FRI isql> SELECT ROUND(SYSDATE,'YEAR'), ROUND(SYSDATE), TRUNC(SYSDATE, 'DAY'), 2 TRUNC(SYSDATE) 3 FROM dual; ROUND(SYSDATE,'YEAR') ROUND(SYSDATE) TRUNC(SYSDATE, 'DAY') TRUNC(SYSDATE) JAN APR APR APR-2011
59 날짜함수 예제 입사일 (join_date), 입사일 6 개월이후의날짜, 입사한지몇개월이지났는지 검색 isql> SELECT ename, join_date, ADD_MONTHS(join_date, 6), 2 MONTHS_BETWEEN(SYSDATE, join_date) 3 FROM employee; ENAME JOIN_DATE ADD_MONTHS(JOIN_DATE,6) MONTHS_BETWEEN(SYSDATE, JOIN_DATE) HJNO 18-NOV MAY HSCHOI 11-JAN JUL 입사일이후돌아오는월요일, 입사일해당월의마지막날짜를검색 isql> SELECT ename, join_date, NEXT_DAY(join_date, 'MONDAY'), LAST_DAY(join_date) 2 FROM employee; ENAME JOIN_DATE NEXT_DAY(JOIN_DATE, 'MONDAY') LAST_DAY(JOIN_DATE) HJNO 18-NOV NOV NOV-1999 HSCHOI 11-JAN JAN JAN-2000
60 변환함수 변환함수 함수 결과 설명 TO_BIN(10) 1010 숫자를 2진수형태로변환 TO_CHAR(SYSDATE,'HH:MI:SS') 09:41:01 날짜나숫자를지정한포맷을적용하여문자로변환 TO_DATE('110430','YYMMDD') 30-APR-2011 문자를날짜로변환 TO_HEX(100) 64 숫자를 16 진수형태로변환 TO_NUMBER('$1000','$9999') 1000 문자를지정한포맷을적용하여숫자로변환 TO_OCT(100) 144 숫자를 8 진수형태로변환 ASCIISTR(' 알티 ') \C54C\D2F0 문자열을 ASCII 문자열로반환. ASCII 가아닌문자는 '\xxxx' 와같이 UTF-16 코드로표현 CONVERT('ALTI','MS949','UTF8') ALTI 두번째캐릭터셋의문자를세번째캐릭터셋으로변환 UNISTR('\C54C\D2F0') 알티문자를지정한캐릭터셋으로변환
61 변환함수 예제 ' ' 은입사일후며칠지났는지검색 isql> SELECT ename, join_date, TO_DATE(' ','YYYY-MM-DD') - join_date 2 FROM employee; ENAME JOIN_DATE TO_DATE(' ','YYYY-MM-DD') - JOIN_DATE HJNO 18-NOV HSCHOI 11-JAN ( 날짜 - 날짜 ) 연산은첫번째날짜에서두번째날짜를뺀 day 값을반환 숫자 100 에대해여러가지진법값을반환 isql> SELECT 100, TO_BIN(100), TO_OCT(100), TO_HEX(100) 2 FROM dual; 100 TO_BIN(100) TO_OCT(100) TO_HEX(100)
62 기타함수 기타함수 함수결과설명 CASE2(a, b, c) DECODE(a, b, c, d) DUMP('A') a 값이참이면 b 를반환. 거짓이면 c 를반환 a 값이 b 이면 c 를반환. b 가아니면 d 를반환.b 를생략하면 NULL 을반환 Type=CHAR(KSC5601) Length=3: 1,0,65 자료형, 길이, 메모리내용출력 GREATEST(10,20,30) 30 인자값중가장큰값을출력 LEAST(10,20,30) 10 인자값중가장작은값을출력 NVL(salary,0) NVL2(salary,salary,0) salary 의값이 NULL 이면 0 로대체 salary 의값이 NULL 이아니면 salary 를출력. NULL 이면 0 를출력 DIGEST('alti', 'SHA-1') A6769CDF8D5EE5D33937A39F1 SHA-1 알고리즘으로변환한문자출력 ROWNUM 테이블이나조인된뷰의레코드번호를정수형태로반환
63 기타함수 예제 급여가 보다크면 1 그렇지않으면 2 를반환 isql> SELECT ename, salary, CASE2(salary> , 1, 2) 2 FROM employee; ENAME SALARY CASE2(SALARY> , 1, 2) KSKIM SJKIM HYCHOI dno 가 4001 이면 salary*1.1, 4002 이면 salary*1.2 그렇지않으면 salary 를반환 isql> SELECT ename, dno, salary, 2 DECODE(dno, 4001, salary*1.1, 4002, salary*1.2, salary) AS new_sal 3 FROM employee; ENAME DNO SALARY NEW_SAL DIKIM CHLEE KMKIM
64 기타함수 급여가 NULL 일경우 0 으로반환 isql> SELECT ename, salary, NVL(salary, 0) 2 FROM employee; ENAME SALARY NVL(SALARY,0) EJJUNG 0 HJNO HSCHOI isql> SELECT ename, salary, NVL2(salary, salary, 0) 2 FROM employee; ENAME SALARY NVL2(SALARY, SALARY, 0) EJJUNG 0 HJNO HSCHOI
65 2.3 그룹함수 & 윈도우함수
66 그룹함수 그룹함수 여러행에대해 grouping 하여결과를계산 함수 설명 MIN MAX SUM AVG STDDEV VARIANCE COUNT 최소값최대값합계평균표준편차분산행의수 COUNT(*) 를제외한모든그룹함수는 NULL 을제외하고계산
67 그룹함수 예제 사원들의최소급여, 최대급여, 평균급여, 급여의합, 사원수를검색 isql> SELECT MIN(salary), MAX(salary), AVG(salary), SUM(salary), COUNT(*) 2 FROM employee; MIN(SALARY) MAX(SALARY) AVG(SALARY) SUM(SALARY) COUNT 평균급여 (NULL 을포함하여계산 ) isql> SELECT AVG(NVL(salary,0)) 2 FROM employee; AVG(NVL(SALARY,0)) 사원의수 isql> SELECT COUNT(salary), COUNT(NVL(salary,0)), COUNT(*) 2 FROM employee; COUNT(SALARY) COUNT(NVL(SALARY,0)) COUNT
68 GROUP BY 데이터를 grouping 데이터를그룹으로나눈후그룹함수를적용 구문 예제 SELECT column_name, group_function(), FROM table_name [WHERE conditions] [GROUP BY grouping_expression] ORDER BY {column_name alias column_index} [ASC DESC] LIMIT [start_index,] row_count; 부서번호별로급여의합, 급여의평균을검색 isql> SELECT dno, SUM(salary), AVG(salary) 2 FROM employee 3 GROUP BY dno; DNO SUM(SALARY) AVG(SALARY)
69 GROUP BY 여러칼럼을 GROUP BY 그룹내그룹 첫번째칼럼을먼저 grouping 하고, 그그룹을두번째칼럼을기준으로또 grouping 을수행 예제 부서번호, 직무별로급여의합, 급여의평균을검색 isql> SELECT dno, emp_job, SUM(salary), AVG(salary) 2 FROM employee 3 GROUP BY dno, emp_job 4 ORDER BY 1, 2; DNO EMP_JOB SUM(SALARY) AVG(SALARY) ENGINEER MANAGER PM PROGRAMMER PM PROGRAMMER WEBMASTER PM PL
70 HAVING 그룹의제한 WHERE 절을사용하여그룹을제한할수없다. HAVING 절을이용하여그룹을제한할수있다. 구문 isql> SELECT dno, SUM(salary) 2 FROM employee 3 WHERE SUM(salary) > GROUP BY dno; [ERR : An aggregate function is not allowed here. isql> SELECT dno, SUM(salary) 2 FROM employee 3 GROUP BY dno 4 HAVING SUM(salary) > ; SELECT column_name, group_function(), FROM table_name [WHERE conditions] [GROUP BY grouping_expression] [HAVING group_condition] [ORDER BY column_name] LIMIT [start_index,] row_count;
71 HAVING 예제 급여의최대값이 이넘는부서를검색 isql> SELECT dno, MAX(salary) 2 FROM employee 3 GROUP BY dno 4 HAVING MAX(salary) > ; DNO MAX(SALARY) rows selected.
72 WINDOWS FUNCTION 윈도우함수 행과행의관계를정의하거나, 행과행을비교, 연산하는함수 그룹함수와는다르게결과가줄어들지않음 ALTIBASE에서는윈도우함수중그룹별집계함수와순위함수를제공 종류 집계함수 SUM(), AVG(), MAX(), MIN(), COUNT(), STDDEV(), VARIANCE() 순위함수 RANK(), DENSE_RANK(), ROW_NUMBER() 구문 SELECT window_function([argument]) OVER ( [PARTITION BY value expression1 ORDER BY value expression2 [ASC DESC] ] ) FROM table_name;
73 WINDOWS FUNCTION 집계함수예제 사원정보와사원이속한부서의급여의합, 평균, 최대, 최소값을검색 isql> SELECT ename, dno, salary, 2 SUM(salary) OVER (PARTITION BY dno ) sum_dno_sal, 3 AVG(salary) OVER (PARTITION BY dno) avg_dno_sal, 4 MAX(salary) OVER (PARTITION BY dno) max_dno_sal, 5 MIN(salary) OVER (PARTITION BY dno) min_dno_sal 6 FROM employee; ENAME DNO SALARY SUM_DNO_SAL AVG_DNO_SAL MAX_DNO_SAL MIN_DNO_SAL HSCHOI JHCHOI KWKIM HYCHOI JHSEOUNG MSKIM KCJUNG YHBAE DIKIM KSKIM SJKIM rows selected.
74 WINDOWS FUNCTION 순위함수예제 사원정보를급여가높은순서부터순위함수를이용하여검색 isql> SELECT eno, ename, salary, 2 RANK() OVER (ORDER BY salary DESC ) RANK, 3 DENSE_RANK() OVER (ORDER BY salary DESC) DENSE_RANK, 4 ROW_NUMBER() OVER (ORDER BY salary DESC) ROW_NUMBER 5 FROM employee; ENO ENAME SALARY RANK DENSE_RANK ROW_NUMBER YHBAE MSKIM SJKIM JHCHOI KCJUNG HSCHOI CHLEE MYLEE KMKIM KSKIM HYCHOI HJNO rows selected.
75 2.4 JOIN
76 JOIN 개념 두개이상의테이블들을연결하여데이터를출력 EMPLOYEE ENO ENAME DNO 6 gdhong A001 DEPARTMENT DNO DNAME DEP_LOCATION A001 응용기술팀마포 ENAME DNO DNAME gdhong A001 응용기술팀
77 JOIN 종류 JOIN 조건으로사용되는연산자에따른분류 JOIN EQUI JOIN NON EQUI JOIN 설명 두테이블간의칼럼값들이서로일치하는경우 JOIN 조건으로 '=' 연산자를사용 두테이블간의칼럼값들이서로일치하지않는경우 JOIN 조건으로 'BETWEEN ~ AND' 등의범위비교연산자를사용 FROM 절의 JOIN 형태에따른분류 JOIN INNER JOIN OUTER JOIN 설명 JOIN 조건에서값이일치하는행만반환 JOIN 조건에서값이일치하지않더라도행을반환
78 JOIN EQUI JOIN 두테이블간의칼럼값들이서로정확하게일치하는경우에사용 WHERE 절에 '=' 연산자를사용해서비교 구문 SELECT table1.column_name, table2.column_name, FROM table1, table2 WHERE table1.column_name = table2.column_name; 예제 사원이어떤부서에서근무하는지를검색 isql> SELECT employee.eno, employee.ename, department.dno, department.dname 2 FROM employee, department 3 WHERE employee.dno = department.dno; 테이블별칭을통한검색 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e, department d 3 WHERE e.dno = d.dno;
79 JOIN N 개의테이블을 JOIN 최소 (N-1) 개의 JOIN 조건이필요 CUSTOMER ORDERS GOODS CNAME CNO CNO GNO ORDER_DATE GNO GNAME SNKIM A A IM-300 CNAME GNAME ORDER_DATE SNKIM IM 예제 고객이주문한상품에대한정보를조회 isql> SELECT c.cname, g.gname, o.orders_date 2 FROM customer c, orders o, goods g 3 WHERE c.cno = o.cno 4 AND o.gno = g.gno 5 ORDER BY c.cname;
80 JOIN NON EQUI JOIN 두테이블간의칼럼값들이서로일치하지않는경우에사용 WHERE 절에 BETWEEN AND, >, <, >=, <= 등의비교연산자를사용구문 EMPLOYEE ENO ENAME SALALY 6 gdhong SALGRADE GRADE LOSAL HISAL ENAME SALARY GRADE gdhong 예제 사원이받는급여의등급을조회 isql> SELECT e.ename, e.salary, s.grade 2 FROM employee e, salgrade s 3 WHERE e.salary BETWEEN s.losal AND s.hisal;
81 JOIN INNER JOIN JOIN 조건에서값이일치하는행만반환 ON 절을사용하여 JOIN 조건을명시 구문 SELECT table1.column_name, table2.column_name, FROM table1 [INNER] JOIN table2 ON table1.column_name = table2.column_name; 예제 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e, department d 3 WHERE e.dno = d.dno; isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e INNER JOIN department d 3 ON e.dno = d.dno;
82 JOIN OUTER JOIN JOIN 조건을만족하지않는값도반환 EMPLOYEE ENO ENAME DNO 6 gdhong DEPARTMENT DNO DNAME DEP_LOCATION A001 응용기술팀마포 ENAME DNO DNAME gdhong 구문 SELECT table1.column_name, table2.column_name, FROM table1 {LEFT RIGHT FULL} OUTER JOIN table2 ON table1.column_name = table2.column_name; LEFT OUTER JOIN 왼쪽테이블을기준으로해서조인조건에만족하지않는값까지반환 RIGHT OUTER JOIN 오른쪽테이블을기준으로해서조인조건에만족하지않는값까지반환
83 JOIN FULL OUTER JOIN 양쪽테이블을기준으로해서조인조건에만족하지않는값까지반환 예제 사원이어떤부서에서근무하는지를검색부서를아직배정받지못한사원정보까지함께검색 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e LEFT OUTER JOIN department d 3 ON e.dno = d.dno; isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM department d RIGHT OUTER JOIN employee e 3 ON e.dno = d.dno; 사원이어떤부서에서근무하는지검색부서를아직배정받지못한사원및사원이아직없는부서정보도함께검색 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM department d FULL OUTER JOIN employee e 3 ON e.dno = d.dno;
84 JOIN ORACLE STYLE OUTER JOIN 오라클데이터베이스와응용프로그램을 ALTIBASE HDB 로좀더쉽게포팅할수있도록, 오라클스타일의 OUTER JOIN 연산자를지원 예제 사원이어떤부서에서근무하는지검색부서를아직배정받지못한사원정보까지함께검색 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e LEFT OUTER JOIN department d 3 ON e.dno = d.dno; isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM employee e, department d 3 WHERE e.dno = d.dno(+); 사원정보가없는부서정보까지함께검색 isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM department d LEFT OUTER JOIN employee e 3 ON e.dno = d.dno; isql> SELECT e.eno, e.ename, d.dno, d.dname 2 FROM department d, employee e 3 WHERE e.dno(+) = d.dno;
85 JOIN 유의사항 JOIN 조건이잘못되거나생략했을경우 cartesian product 가발생한다. ( 각테이블의행의수를곱한만큼결과집합이생성 ) INNER JOIN 사용시 ON 절은반드시작성해야한다. NATURAL JOIN, CROSS JOIN, USING 절을이용한 JOIN 은지원하지않는다.
86 2.5 SUBQUERY
87 SUBQUERY 개념 하나의 SQL 문안에포함되어있는또다른 SQL 문 main query 가실행되기전에먼저실행 subquery 에서는 main query 의모든칼럼을참조할수있지만 main query 에서는 subquery 의칼럼을참조할수없음 Main Query gildong 보다많은급여를받는사원은? Subquery gildong 의급여는? Main Query Subquery ( SELECT FROM WHERE ) SELECT.. FROM.. WHERE.. WHERE..
88 SUBQUERY 구문 예제 SELECT select_list FROM table_name WHERE 표현식연산자 (SELECT select_list FROM table_name WHERE 조건식 ); gildong 보다급여를많이받는사원을출력 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary > (SELECT salary 4 FROM employee 5 WHERE ename = 'gildong') ; LA 에서일하는사원을출력 isql> SELECT ename, dno 2 FROM employee 3 WHERE dno = (SELECT dno 4 FROM department 5 WHERE dep_location= 'LA') ;
89 SUBQUERY subquery 유형 단일행 subquery subquery 에서한행만반환 Main Query Subquery 다중행 subquery subquery 에서여러행을반환 Main Query Subquery 다중열 subquery subquery 에서여러열을반환 반환 반환 KIM KIM LEE PARK Main Query Subquery 반환 KIM 10 LEE 20
90 SUBQUERY subquery 유형 subquery 에서한행만반환 단일행비교연산자를사용 연산자 의미 예제 = 같음 > 보다큼 >= 크거나같음 < 보다작음 <= 작거나같음 <>,!= 같지않음 20 번사원과같은부서에서일하는사원을출력 isql> SELECT ename, dno 2 FROM employee 3 WHERE dno = (SELECT dno 4 FROM employee 5 WHERE eno = 20) ;
91 SUBQUERY 20 번사원과같은부서에서일하면서 17 번사원보다급여를많이받는사원을출력 isql> SELECT ename, dno, salary 2 FROM employee 3 WHERE dno = (SELECT dno 4 FROM employee 5 WHERE eno = 20) 6 AND salary > (SELECT salary 7 FROM employee 8 WHERE eno=17); 급여를가장많이받는사원을출력 subquery 내에그룹함수를사용 isql> SELECT ename, salary 2 FROM employee 3 WHERE salary = (SELECT max(salary) 4 FROM employee);
92 SUBQUERY 평균급여가 4002 번부서의평균급여보다많은부서번호를출력 HAVING 절에서 subquery 를사용 isql> SELECT dno, AVG(salary) 2 FROM employee 3 GROUP BY dno 4 HAVING AVG(salary) > (SELECT AVG(salary) 5 FROM employee 6 WHERE dno=4002);
93 SUBQUERY 다중행 subquery subquery 에서여러행을반환 다중행비교연산자를사용 연산자 IN ANY ALL EXISTS 의미 subquery 결과에존재하는임의의값과일치 subquery 결과에존재하는어느하나의값이라도만족 >ANY : 최소값보다큰경우 <ANY : 최대값보다작은경우 subquery 결과에존재하는모든값에만족 >ALL : 최대값보다큰경우 <ALL : 최소값보다작은경우 NULL 을포함할경우 No rows selected. subquery 결과를만족하는값이존재하는지여부를확인 예제 1003 부서에서근무하고있는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary = (SELECT salary 4 FROM employee 5 WHERE dno = 1003); [ERR : A single-row subquery returns more than one row.]
94 SUBQUERY 1003 부서에서근무하고있는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary IN (SELECT salary 4 FROM employee 5 WHERE dno = 1003); DNO ENAME SALARY YHBAE MSKIM KCJUNG JHSEOUNG rows selected.
95 SUBQUERY 4002 번부서에서근무하는사원중급여를가장많이받는사람보다급여를 적게받는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary <ANY (SELECT salary 4 FROM employee 5 WHERE dno=4002); , , 번부서에서근무하는사원중급여를가장적게받는사람보다도급여를적게받는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary <ALL (SELECT salary 4 FROM employee 5 WHERE dno=4002); , ,
96 SUBQUERY 4002 번부서에서근무하는사원중급여를가장많이받는사람보다급여를 많이받는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary >ALL (SELECT salary 4 FROM employee 5 WHERE dno=4002) ; , , 번부서에서근무하는사원중급여를가장적게받는사람보다도급여를많이받는사원들을출력 isql> SELECT dno, ename, salary 2 FROM employee 3 WHERE salary >ANY (SELECT salary 4 FROM employee 5 WHERE dno=4002) ; , ,
97 SUBQUERY 다중열 subquery subquery 에서여러칼럼의데이터를반환 () 와 IN 연산자를이용하여비교 예제 13 번사원과같은부서이면서같은직무를하는사람과 15 번사원과같은부서이면서같은직무를하는사원을출력 isql> SELECT eno, ename, dno, emp_job 2 FROM employee 3 WHERE (dno, emp_job) IN (SELECT dno, emp_job 4 FROM employee 5 WHERE eno IN (13, 15)) ; ENO ENAME DNO EMP_JOB MSKIM 1003 WEBMASTER 13 KWKIM 1002 PM 15 JHSEOUNG 1003 WEBMASTER 3 rows selected.
98 SUBQUERY 13, 15 번사원과같은부서이면서 13, 15 번사원과같은직무를하는사원을 출력 isql> SELECT eno, ename, dno, emp_job 2 FROM employee 3 WHERE dno IN (SELECT dno 4 FROM employee 5 WHERE eno IN (13, 15)) 6 AND emp_job IN (SELECT emp_job 7 FROM employee 8 WHERE eno IN (13,15)); ENO ENAME DNO EMP_JOB KWKIM 1002 PM 11 MSKIM 1003 WEBMASTER 14 KCJUNG 1003 PM 15 JHSEOUN 1003 WEBMASTER 4 rows selected.
99 SUBQUERY scalar subquery SELECT 절에서사용하는 subquery main query의 row 수만큼반복되어실행 조건에만족하는 subquery의데이터가없을경우 NULL을반환 하나의행, 열만출력해야함 예제 사원정보와각사원이속한부서의평균급여를함께출력 isql> SELECT ename, salary, 2 (SELECT AVG(salary) FROM employee WHERE dno = e.dno) avg_sal 3 FROM employee e; ENAME SALARY AVG_SAL HSCHOI KSKIM SJKIM HYCHOI HJMIN
100 SUBQUERY inline view FROM 절에서사용하는 subquery 동적인 view main query 에서 inline view 의칼럼사용가능 (subquery 에서는사용불가 ) 예제 사원정보와각사원이속한부서의평균급여를함께출력 isql> SELECT e.ename, e.salary, a.avg_sal 2 FROM employee e, (SELECT dno, AVG(salary) avg_sal FROM employee GROUP BY dno) a 3 WHERE e.dno = a.dno; ENAME SALARY AVG_SAL HSCHOI JHCHOI HYCHOI KWKIM YHBAE
101 SUBQUERY 유의사항 subquery 는 ( ) 로묶는다. subquery 에 ORDER BY 절은사용할수없다. isql> SELECT ename, salary 2 FROM employee 3 WHERE salary > (SELECT salary 4 FROM employee 5 WHERE ename = 'gildong' 6 ORDER BY salary) ; 다중행 subquery 는다중행연산자를사용한다. scalar subquery 는 main query 의레코드수만큼반복되어실행되므로성능저하가일어날수있다.
102 2.6 SET 연산자
103 SET Operator 개념 여러개의질의결과를집합연산을수행하여하나의결과집합으로반환 종류 SET Operator UNION UNION ALL MINUS INTERSECT 설명합집합을출력. 교집합부분은한번만출력합집합을출력. 교집합부분은반복출력차집합을출력교집합을출력 구문 SELECT statement1 {UNION UNION ALL MINUS INTERSECT} SELECT statement2;
104 SET Operator UNION 합집합 첫번째검색문과두번째검색문의결과를모두출력 동일한검색결과가있을경우한번만출력 결과순서는보장하지않음 예제 customer_co 테이블과 customer_pe 테이블의모든 name 정보를얻어온다. 만약 name이중복되면한번만출력 isql> SELECT name FROM customer_co; NAME ALTIBASE KIM isql> SELECT name FROM customer_pe; NAME LEE KIM isql> SELECT name FROM customer_co 2 UNION 3 SELECT name FROM customer_pe; NAME ALTIBASE KIM LEE
105 SET Operator UNION ALL 첫번째검색문과두번째검색문의결과를모두출력 동일한검색결과가있을경우반복해서출력 첫번째결과집합을출력후두번째결과집합을출력 예제 customer_co 테이블과 customer_pe 테이블의모든 name 정보를얻어온다. isql> SELECT name FROM customer_co; NAME KIM ALTIBASE isql> SELECT name FROM customer_pe; NAME LEE KIM isql> SELECT name FROM customer_co 2 UNION ALL 3 SELECT name FROM customer_pe; NAME KIM ALTIBASE LEE KIM
106 SET Operator MINUS 차집합 첫번째검색결과에서두번째검색결과를제외한결과를출력 예제 customer_pe 테이블에존재하지않는 customer_co 테이블의 name 정보를얻어 온다. isql> SELECT name FROM customer_co; NAME KIM ALTIBASE isql> SELECT name FROM customer_pe; NAME LEE KIM isql> SELECT name FROM customer_co 2 MINUS 3 SELECT name FROM customer_pe; NAME ALTIBASE
107 SET Operator INTERSECT 교집합 첫번째검색결과와두번째검색결과중중복된검색결과를출력 예제 customer_pe 테이블에도존재하고 customer_co 테이블에도존재하는 name 정보 를얻어온다. isql> SELECT name FROM customer_co; NAME KIM ALTIBASE isql> SELECT name FROM customer_pe; NAME LEE KIM isql> SELECT name FROM customer_co 2 INTERSECT 3 SELECT name FROM customer_pe; NAME KIM
108 SET Operator 유의사항 첫번째검색 column 의수와두번째검색 column 의수는같아야한다. isql> SELECT name, cust_no FROM customer_co 2 INTERSECT 3 SELECT name FROM customer_pe; [ERR : Mismatched number of expressions in the target lists of SELECT statements for a SET query] 첫번째검색 column 의타입과두번째검색 column 의타입은같아야한다. isql> SELECT cust_no FROM customer_co 2 INTERSECT 3 SELECT name FROM customer_pe; [ERR : Invalid literal] ORDER BY 절은마지막에위치해야한다. isql> SELECT name, cust_no FROM customer_co 2 ORDER BY 1 3 INTERSECT 4 SELECT name FROM customer_pe; UNION ALL 을제외한 SET Operator 사용시집합연산을위한비용이들기때문에성능이느려질수있다.
109 2.7 계층질의
110 Hierarchical Query 개념 동일테이블에계층적으로상위와하위데이터가있을때계층적조건을만족하는행들을검색 사원 eno mgr 데이터모델 2. 계층형구조 3. 테이블
111 Hierarchical Query 구문 SELECT select_list FROM table_name WHERE condition START WITH condition CONNECT BY condition [IGNORE LOOP]; START WITH 절 계층구조전개의시작위치를지정 조건에만족하는모든행들을루트로사용 CONNECT BY 절 계층구조의부모행들과자식행들간의관계를식별하는조건을명시 이전에검색된행과현재행을구분하기위해 PRIOR 연산자를사용 IGNORE LOOP 계층구성에서 loop 이발생될경우 loop 을발생시키는행을질의의결과집합에추가하지않음 ( 기본적으로 loop 이발생되면 error 발생 )
112 Hierarchical Query PRIOR 이전에검색된행과현재행을구분하기위해서사용 CONNECT BY, select_list, WHERE절에서사용가능 PRIOR 하위 = 상위 상위데이터에서하위데이터방향으로전개 isql> SELECT ename, eno, mgr 2 FROM employee; ENAME ENO MGR KIM 1 LEE 2 1 PARK 3 1 CHOI 4 3 HAN 5 3 SEO 6 2 JOON 7 2 isql> SELECT ename, eno, mgr 2 FROM employee 3 START WITH mgr IS NULL 4 CONNECT BY PRIOR eno = mgr; ENAME ENO MGR KIM 1 LEE 2 1 SEO 6 2 JOON 7 2 PARK 3 1 CHOI 4 3 HAN 5 3
113 Hierarchical Query PRIOR PRIOR 상위 = 하위 하위데이터에서상위데이터방향으로전개 isql> SELECT ename, eno, mgr 2 FROM employee; ENAME ENO MGR KIM 1 LEE 2 1 PARK 3 1 CHOI 4 3 HAN 5 3 SEO 6 2 JOON 7 2 isql> SELECT ename, eno, mgr 2 FROM employee 3 START WITH eno = 7 4 CONNECT BY PRIOR mgr = eno; ENAME ENO MGR JOON 7 2 LEE 2 1 KIM 1
114 Hierarchical Query LEVEL 질의결과가 root 데이터 ( 가장처음에전개 ) 이면 1, 그하위데이터는 2 로하여 leaf 데이터까지 1 씩증가시키는 pseudo column select_list, WHERE, ORDER BY, GROUP BY, HAVING 절에서사용가능 isql> SELECT ename, eno, mgr, level 2 FROM employee 3 START WITH mgr IS NULL 4 CONNECT BY PRIOR eno = mgr; ENAME ENO MGR LEVEL KIM 1 1 LEE SEO JOON PARK CHOI HAN isql> SELECT ename, eno, mgr, level 2 FROM employee 3 START WITH eno = 7 4 CONNECT BY PRIOR mgr = eno; ENAME ENO MGR LEVEL JOON LEE KIM 1 3
115 Hierarchical Query IGNORE LOOP 데이터전개도중이미나타났던동일한데이터가다시나타나면 loop 발생 A loop in hierarchical query detected. 오류발생 loop 발생하더라도오류없이이후데이터는전개하지않음 isql> SELECT * FROM employee; ENAME ENO MGR KIM 1 7 isql> SELECT ename, eno, mgr, level 2 FROM employee 3 START WITH eno = 1 4 CONNECT BY PRIOR eno = mgr; ENAME ENO MGR LEVEL KIM LEE SEO JOON [ERR-311A4 : A loop in hierarchical query detected.] isql> SELECT ename, eno, mgr, level 2 FROM employee 3 START WITH eno = 1 4 CONNECT BY PRIOR eno = mgr IGNORE LOOP; ENAME ENO MGR LEVEL KIM LEE SEO JOON PARK CHOI HAN 5 3 3
116 Hierarchical Query 유의사항 START WITH 절은 CONNECT BY 절이없는경우사용할수없음 START WITH, CONNECT BY 절에는 subquery를포함할수없음 inline view, view에대해 hierarchical query는사용할수없음 isql> SELECT ename, eno, mgr, level 2 FROM (SELECT ename, eno, mgr 3 FROM employee) 4 START WITH eno = 1 5 CONNECT BY eno = mgr; [ERR-311A1 : A hierarchical query on neither a created view nor inline view is allowed
117 3. 데이터변경 (DML) 1. INSERT 2. UPDATE 3. DELETE 4. MOVE
118 3.1 INSERT
119 데이터변경 DML (Data Manipulation Language) 데이터조작어로칭하며, 새로운행의삽입및기존행의삭제, 기존칼럼 의변경과이동등을가능하게하는 SQL DML 문의종류및기능 종류 기능 INSERT 데이터베이스의특정테이블에새로운레코드를삽입 UPDATE 데이터베이스의특정테이블에서조건에해당하는레코드를찾아명시한칼럼들의값을변경 DELETE 특정테이블에서원하는조건의레코드를찾아삭제 MOVE 원천테이블에서원하는조건의레코드를찾아대상테이블로이동
120 INSERT INSERT 테이블에새로운레코드를삽입 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN 김철수 경기 23-SEP 박영희 부산 01-JAN-2010 INSERT 4 장동건인천 18-JUL-2011
121 INSERT 기본 INSERT 구문 INSERT INTO table_name[(column_name,..)] VALUES (value,..); 예제 고객테이블에데이터를입력 isql> INSERT INTO customer 2 VALUES ( , 'HJKIM', 3 'STUDENT', ' ', 'F', '0101', '150763', 4 ' 서울영등포구여의도동 63 대한생명빌딩 '); 1 row inserted. 주문테이블에데이터를입력 isql> INSERT INTO orders(ono, order_date, eno, cno, gno, qty, arrival_date, processing) 2 VALUES ( , TO_DATE ('2000/11/29 01:17:00', 'YYYY/MM/DD HH:MI:SS'), 3 12, , 'E ', 1000, 4 TO_DATE('2000/12/01 09:10:00', 'YYYY/MM/DD HH:MI:SS'), 'D'); 1 row inserted.
122 Subquery 를이용한 INSERT Subquery 를이용한 INSERT 예제 INSERT INTO table_name[(column_name,..)] SELECT column_name, FROM table_name [WHERE conditions] [ORDER BY column_name,..] LIMIT [start_index,] row_count; 주문테이블중 processing= D 의조건을만족하는레코드를찾아 delayed_processing 테이블에입력 isql> DESC delayed_processing NAME TYPE IS NULL CNO CHAR(14) FIXED ORDER_DATE DATE FIXED isql> INSERT INTO delayed_processing 2 SELECT cno, order_date 3 FROM orders 4 WHERE processing = 'D'; 1 row inserted.
123 INSERT 시 DEFAULT 값사용 DEFAULT INSERT INTO table_name[(column_name)] VALUES (DEFAULT value,..) DEFAULT VALUES; 예제 고객테이블에 DEFAULT 값을이용해입력 isql> INSERT INTO customer 2 VALUES ( , 'DJKIM', 'DESIGNER', ' ', DEFAULT, '1111', , 'Jigu Bank'); 1 row inserted. t1 테이블의전체칼럼들에 DEFAULT 값을입력 isql> CREATE TABLE t1 (c1 INTEGER DEFAULT 0, C2 DATE DEFAULT SYSDATE); Create seccess. isql> INSERT INTO t1 DEFAULT VALUES; 1 row inserted isql> SELECT * FROM t1; C1 C /06/09 17:31:55
124 INSERT 시주의사항 주의사항 칼럼이름을명시하지않았을경우테이블을생성할때테이블의칼럼의개수보다더많은데이터를입력하거나적은데이터를입력할경우오류발생 칼럼이름을명시하지않았을경우테이블을생성할때나열한칼럼순서대로입력 칼럼이름을명시한경우칼럼의개수와삽입할값들의개수는동일해야하며호환가능한데이터형이어야함 일부칼럼은명시하고일부칼럼을명시하지않을경우에명시하지않는칼럼에정의된 DEFAULT 값이삽입되거나 NULL 이삽입 동일한테이블을이용하여 INSERT ~ SELECT 구문을사용가능 NOT NULL 제약조건이명시된칼럼에 NULL 값을입력할수없음
125 3.2 UPDATE
126 UPDATE UPDATE 테이블에서명시한칼럼들의데이터를변경 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN 김철수 경기 23-SEP 박영희 부산 01-JAN-2010 UPDATE 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN 김철수 인천 23-SEP 박영희 부산 01-JAN-2010
127 UPDATE 기본 UPDATE 구문 UPDATE table_name SET column_name = value,... [WHERE conditions]; 예제 사원테이블에서 KMLEE 의급여를변경 isql> UPDATE employee 2 SET salary = WHERE ename = 'KMLEE'; 1 row updated. 사원테이블에서모든사원들의급여를일괄적으로 7% 씩인상 isql> UPDATE employee 2 SET salary = salary * 1.07; 20 rows updated. 사원테이블에서 KMKIM 의직책과급여를변경 isql> UPDATE employee 2 SET emp_job = PM, salary = WHERE ename = 'KMKIM'; 1 row updated.
128 UPDATE 다중칼럼수정 UPDATE table_name SET (column_name, column_name,...) = (value, value,...) [WHERE conditions]; 예제 고객테이블에서 KSKIM 고객의직업과주소를변경 isql> UPDATE customer 2 SET (cus_job, address) = ('BANKER', 'JungGu Pusan') 3 WHERE cname = 'KSKIM'; 1 row updated.
129 UPDATE SET 절에 subquery 를갖는 UPDATE UPDATE table_name SET column_name = (SELECT statement ) [WHERE conditions]; 예제 보너스테이블에서 10 번사원의직책을 PM 으로변경하고, bonus 를평균에서 10% 인상한값으로변경 isql> UPDATE bonuses 2 SET emp_job = 'PM, 3 bonus = (SELECT 1.1 * AVG(bonus) FROM bonuses) 4 WHERE eno = 10; 1 row updated.
130 UPDATE WHERE 절에 subquery 를갖는데이터수정 UPDATE table_name SET column_name = value, WHERE column_name 연산자 (SELECT statement ); 예제 주문테이블에서 MYLEE 사원이받은주문량을 50 개씩줄임 isql> UPDATE orders 2 SET qty = qty 50 3 WHERE eno = (SELECT eno FROM employee WHERE ename = MYLEE ); 12 row updated.
131 UPDATE 시주의사항 주의사항 UPDATE 사용시 WHERE 절을생략할경우, 명시한테이블의전체행을변경 같은칼럼을두번이상사용불가능 SET 절에 subquery 사용시 = 연산자로이용해야하며 subquery 에서 2 개이상의데이터를리턴하면에러발생 NOT NULL 제약조건이있는칼럼을 NULL 로변경할수없음
132 3.3 DELETE
133 DELETE DELETE 테이블에서레코드를삭제 고객번호 고객이름 거주도시 가입일 1 홍길동 서울 11-JAN 김철수 경기 23-SEP 박영희 부산 01-JAN-2010 DELETE 고객번호고객이름거주도시가입일 1 홍길동서울 11-JAN 박영희부산 01-JAN-2010
134 DELETE 기본 DELETE 구문 DELETE [FROM] table_name [WHERE conditions]; 예제 주문테이블의전체데이터를삭제 isql> DELETE FROM orders; 1 row deleted. 물품테이블에서물품명이 IM-300 인레코드를삭제 isql> DELETE FROM goods 2 WHERE gname = 'IM-300'; 1 row deleted.
135 DELETE WHERE 절에 subquery 를갖는데이터삭제 DELETE [FROM] table_name [WHERE column_name 연산자 ( SELECT statement ); 예제 주문테이블에서 KMKIM 사원이받은주문을삭제 isql> DELETE FROM orders 2 WHERE eno = (SELECT eno FROM employee 3 WHERE ename = 'KMKIM'); 9 rows deleted.
136 LIMIT LIMIT 삭제되는행의수를제한 DELETE 구문의맨끝에사용 구문 예제 DELETE [FROM] table_name [WHERE conditions] LIMIT [start_index,] row_count; 사원테이블에서부서명이 PRESALES DEPT 인데이터중한건을삭제 isql> DELETE FROM employee 2 WHERE dno = (SELECT dno 3 FROM department 4 WHERE dname = 'PRESALES DEPT') 5 LIMIT 1; Delete success.
137 DELETE 시주의사항 DELETE 시주의사항 WHERE 조건절을생략할경우테이블의모든레코드를삭제함 대량의데이터를 DELETE 시 LIMIT 을사용하여작업단위를나눌수있음
138 3.4 MOVE
139 MOVE MOVE source 테이블에서원하는조건의레코드를찾아 target 테이블로이동 Target 테이블에 INSERT + source 테이블에 DELETE 수행 source 테이블에서 target 테이블로 INSERT target 테이블로 INSERT 후 source 테이블에서 DELETE 1 홍길동 서울 2 김철수 경기 3 박영희 부산 TABLE1 2 김철수 경기 3 박영희 부산 TABLE1 10 장동건 인천 11 현빈 천안 1 홍길동 서울 TABLE2
140 MOVE 기본 MOVE 구문 예제 MOVE INTO target_table_name FROM source_table_name [WHERE conditions]; t1 테이블에서 t2 테이블로전체레코드를이동 isql> MOVE INTO t2 2 FROM t1; 10 rows moved. t1 테이블에서 t2 테이블로 c1=10 인레코드만이동 isql> MOVE INTO t2 2 FROM t1 3 WHERE c1 = 10; 10 rows moved.
141 MOVE 특정칼럼만이동 예제 MOVE INTO target_table_name[(column_name,..)] FROM source_table_name [(column_name,..)] [WHERE conditions]; t2 테이블의 i2=4 를만족하는데이터중 i1 과 i2 칼럼의데이터만 t1 으로이동 isql> MOVE INTO t1(i1, i2) 2 FROM t2(i1, i2) 3 WHERE T2.I2 = 4; 2 rows moved T2 테이블의 (i1, i2, i3) 칼럼의데이터를 t1 으로이동 isql> MOVE INTO t1 2 FROM t2(i1, i2, i3); 5 rows moved
142 LIMIT LIMIT MOVE 구문으로이동하는레코드의수를제한 MOVE 구문의맨끝에사용 MOVE INTO target_table_name FROM source_table_name [WHERE conditions] LIMIT [start_index,] row_count; 예제 고객테이블에서고객번호가 과 사이인 레코드중 3 건만 customer_new 테이블로이동 isql> MOVE INTO customer_new 2 FROM customer 3 WHERE cno BETWEEN AND LIMIT 3; 3 rows moved.
143 MOVE 시주의사항 주의사항 WHERE 조건절을생략했을경우테이블의모든행이이동 FROM 절에서테이블의칼럼명을생략할경우, 전체칼럼이이동 칼럼의이름을명시할경우명시하지않은칼럼에는 NULL 값이들어감명시되지않은칼럼이 NOT NULL 제약조건인경우는에러발생 Source 테이블과 Target 테이블은동일테이블일수없음 두테이블간의칼럼개수가같아야하며, 데이터타입도호환가능해야함
144 4. 트랜잭션관리 1. COMMIT / ROLLBACK / SAVEPOINT
145 4.1 COMMIT / ROLLBACK / SAVEPOINT
146 트랜잭션관리 트랜잭션의정의 트랜잭션이란하나이상의 SQL 로이루어진논리적인작업단위 데이터베이스의동시성을제어하고데이터의일관성을유지 트랜잭션의특징 ACID 정상적인트랜잭션의경우데이터베이스무결성을유지하기위해서 ACID 특성을만족시켜야함 Atomicity 트랜잭션내의모든문장이반영 (COMMIT) 되거나, 철회 (ROLLBACK) 되어야함 Consistency 트랜잭션으로인해데이터베이스의무결성이깨지지않아야함 Isolation 한개의트랜잭션이다른트랜잭션의영향을받지않아야함 Durability 완료된트랜잭션은어떤상황에서도영구적으로유지되어야함
147 COMMIT COMMIT 지금까지트랜잭션안에서수행한모든 SQL 문의결과를데이터베이스에영구적으로반영하면서해당트랜잭션을종료시키는구문 구문 COMMIT; 예제 HSCHOI 사원의급여를 으로변경한후 COMMIT 을수행 isql> UPDATE employee 2 SET salary = WHERE ename = HSCHOI ; isql> COMMIT; isql> SELECT ename, salary 2 FROM employee 3 WHERE ename = HSCHOI ; ENAME SALARY HSCHOI
148 ROLLBACK ROLLBACK 지금까지트랜잭션안에서수행한모든 SQL 문들을취소시키고, 데이터를트랜 잭션수행이전상태로복원 구문 예제 ROLLBACK; HSCHOI 사원의급여를변경한후 ROLLBACK 구문을사용해변경을취소 isql> SELECT ename, salary FROM employee 2 WHERE ename = HSCHOI ; ENAME SALARY HSCHOI isql> UPDATE employee 2 SET salary = WHERE ename = HSCHOI ; isql> ROLLBACK; isql> SELECT ename, salary FROM employee 2 WHERE ename = HSCHOI ; ENAME SALARY HSCHOI
149 SAVEPOINT SAVEPOINT 하나의트랜잭션을여러개의부분으로나누어저장점을표시 ROLLBACK 구문을이용하여해당부분까지만취소가가능 구문 SAVEPOINT savepoint_name; ROLLBACK TO SAVEPOINT savepoint_name;
150 SAVEPOINT ROLLBACK 과 SAVEPOINT DML1 SAVEPOINT A DML 2 DML 3 SAVEPOINT B DML 4 Time ROLLBACK TO SAVEPOINT B ROLLBACK TO SAVEPOINT A ROLLBACK
151 SAVEPOINT 예제 사원테이블을변경할때마다저장점을저장하고저장점으로트랜잭션을되돌림 isql> UPDATE employee 2 SET salary = WHERE ename = 'HSCHOI'; 1 row updated. isql> SAVEPOINT save1; isql> DELETE FROM employee 2 WHERE ename = 'KMKIM'; 1 row deleted. isql> SAVEPOINT save2; isql> INSERT INTO employee(eno, ename, salary, sex) 2 VALUES(21, 'MSJUNG', , 'F'); 1 row inserted isql> ROLLBACK TO SAVEPOINT save1; isql> SELECT * FROM employee 2 WHERE ename IN ( HSCHOI, KMKIM, MSJUNG ); ENO ENAME SALARY SEX HSCHOI F 21 KMKIM M 2 rows selected.
152 트랜잭션관리 데이터일관성 트랜잭션이진행중일때자신의트랜잭션에서는변경이후데이터를조회 트랜잭션이진행중일때다른트랜잭션에서는변경이전데이터를조회 트랜잭션을 COMMIT하면다른트랜잭션에서도변경이후데이터를조회 isql> SELECT eno, salary FROM employee 2 WHERE eno = 10; ENO SALARY isql> UPDATE employee 2 SET salary= WHERE eno = 10; isql> SELECT eno, salary FROM employee 2 WHERE eno = 10; ENO SALARY isql> COMMIT; isql> SELECT eno, salary FROM employee 2 WHERE eno = 10; ENO SALARY isql> SELECT eno, salary FROM employee 2 WHERE eno = 10; ENO SALARY
153 트랜잭션관리 한트랜잭션이변경중인데이터를다른트랜잭션이변경할수없음 Tx1 Tx2 isql> UPDATE employee 2 SET salary= WHERE eno = 10;... isql> COMMIT; isql> UPDATE employee 2 SET salary= WHERE eno = 10; Tx1 트랜잭션이 COMMIT/ROLLBACK 할때까지 Blocking 상태에빠져무한정대기
154 트랜잭션관리 트랜잭션유의사항 ALTIBASE 는기본적으로 AUTOCOMMIT 모드로동작하며 DML 수행시자동으로 ( 암묵적으로 ) COMMIT DDL 문은수행이완료됨과동시에자동으로 COMMIT 이수행 NON-AUTOCOMMIT 모드에서만 SAVEPOINT 가유효함 AUTOCOMMIT 모드변경 isql isql> AUTOCOMMIT OFF; isql> AUTOCOMMIT ON; 현재세션 isql> ALTER SESSION SET AUTOCOMMIT = FALSE; isql> ALTER SESSION SET AUTOCOMMIT = TRUE;
155 5. ALTIBASE 객체 1. 객체종류 2. 테이블스페이스 & 사용자 3. 테이블 4. 인덱스 5. 뷰 6. 시퀀스 7. 시노님 8. 트리거 9. 큐
156 5.1 객체종류
157 객체종류 ALTIBASE HDB 객체 데이터베이스객체는스키마객체와비스키마객체로구분함 스키마객체스키마에포함되어특정사용자에의해관리되는객체 스키마객체의종류 종류 Constraint Index Sequence Synonym Table Procedure/Function View Trigger Queue 설명데이터의정합성을보장하기위한제약조건질의성능향상을위해사용되는물리적인저장구조순차적으로증감하는유일한숫자값을자동으로생성객체에정의한별칭행과열로구성된 2차원저장구조절차적질의처리를제공하는객체논리적가상테이블 (logical table) DML 발생시 DBMS에서절차적질의처리를자동수행메시지를저장하는큐테이블구조의객체
158 객체종류 비스키마객체 특정스키마에포함되지않고전체데이터베이스수준에서관리되는객체 비스키마객체의종류 종류 Replication User Tablespace Directory 설명트랜잭션로그를네트워크를통해전송하여실시간데이터복제기능을수행스키마의구성단위가장큰논리적데이터저장구조저장프로시저에서파일처리를위해사용하는객체
159 객체종류 객체이름생성규칙 객체들은한사용자내에서유일한이름을사용 최대 40 바이트까지사용가능 A-Z, a-z, 0-9, _, $ 만을사용 ALTIBASE 의예약어는사용할수없음 첫글자는반드시문자나 _ 로사용해야함 대소문자를구별하거나, 특수문자사용할경우큰따옴표를이용하여표현 ex) CREATE TABLE "support@altibase.com"
160 5.2 테이블스페이스 & 사용자
161 ALTIBASE Storage 스토리지구조 하나의데이터베이스는한개이상의테이블스페이스로구성되며, 하나의테이블스페이스는다수의세그먼트또는, 다수의페이지로구성됨 ALTIBASE Storage 구조 Database 메모리테이블스페이스 32K 크기의페이지들로구성 Tablespace Segment Extent Page Tablespace Page 디스크테이블스페이스 다수의세그먼트로구성 세그먼트는다수의익스텐트로구성 익스텐트는 8K 크기의페이지 64 개로구성됨 (512K) 디스크테이블스페이스 메모리테이블스페이스
162 테이블스페이스개념 테이블스페이스 (Tablespace / TBS) 데이터베이스를구성하는최상위논리적인구조 테이블, 인덱스등의데이터베이스객체들이저장되는논리적인저장소 데이터베이스운영을위해기본적으로하나이상의테이블스페이스가필요
163 테이블스페이스종류 ALTIBASE 에서제공하는테이블스페이스 데이터속성에따른분류 메모리테이블스페이스 (Memory Tablespace) 디스크테이블스페이스 (Disk Tablespace) 생성시점에따른분류 시스템테이블스페이스 (System Tablespace) 사용자 시스템 일반사용자, SYS 테이블스페이스종류 SYSTEM DICTIONARY TABLESPACE SYSTEM UNDO TABLESPACE SYSTEM MEMORY DEFAULT TABLESPACE SYSTEM DISK DEFAULT TABLESPACE SYSTEM DISK TEMPORARY TABLESPACE 사용자테이블스페이스 (User Tablespace) 사용자의필요에따라선택적으로생성 임시 TBS, 데이터 TBS( 메모리 TBS, 휘발성 TBS, 디스크 TBS)
164 메모리테이블스페이스생성 메모리테이블스페이스 데이터를메모리에저장하여, 모든트랜잭션처리를메모리상에서처리 체크포인트시에물리적인파일 (checkpoint image file) 에저장 DB 구동시에모든데이터를하드디스크에저장된물리적인파일로부터읽어서메모리로업로드하여사용 구문 ( 기본 ) CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) ; 예제 초기사이즈가 512M 인메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M ; Create success. isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 510M ; [ERR-110EE : The initial size of the tablespace should be multiple of expand chunk size ( EXPAND_CHUNK_PAGE_COUNT * PAGE_SIZE(32K) = 4096K )] 메모리테이블스페이스는기본적으로 4M 단위로생성및확장가능함
165 메모리테이블스페이스생성 구문 ( 자동확장추가 ) CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size] [MAXSIZE size] OFF) ] 예제 초기사이즈가 512M 이고, 128M 단위로자동확장가능한최대크기가 2G 인메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 2G ; Create success. 초기사이즈가 512M 이고, 자동확장을하지않는메모리테이블스페이스를생성 isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND OFF ; Create success.
166 메모리테이블스페이스생성 구문 ( 체크포인트경로추가 ) 예제 CREATE MEMORY [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size] [MAXSIZE size] OFF) ] [CHECKPOINT PATH path [SPLIT EACH size]] ; 초기사이즈가 512M 이고, 최대 1G 까지 128M 단위로자동확장가능한메모리테이블스페이스를생성 ( 체크포인트이미지파일은다중화를위해 3 개의디렉토리에나누어저장 ) isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G 4 CHECKPOINT PATH /dbs/path1, /dbs/path2, /dbs/path3 ; Create success. isql> CREATE MEMORY TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G 4 CHECKPOINT PATH /dbs/path1, /dbs/path2, /dbs/path3 5 SPLIT EACH 256M ; Create success.
167 휘발성테이블스페이스생성 휘발성테이블스페이스 메모리테이블스페이스와동일한구조의테이블스페이스 체크포인트를하지않고, 리두로그를기록하지않음 구문 CREATE VOLATILE [DATA] TABLESPACE tablespace_name SIZE size (K M G) [AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] ; 예제 초기사이즈가 512M 이고, 최대 1G 까지 128M 단위로자동확장가능한휘발성테이블스페이스를생성 isql> CREATE VOLATILE DATA TABLESPACE test_mem 2 SIZE 512M 3 AUTOEXTEND ON NEXT 128M MAXSIZE 1G ; Create success.
168 디스크테이블스페이스생성 디스크테이블스페이스 모든데이터가디스크에저장되는테이블스페이스 물리적으로데이터파일로구성되고, 논리적으로세그먼트, 익스텐트, 페이지로구성 구문 CREATE [DISK] [DATA] TABLESPACE tablespace_name DATAFILE datafile_name ' ; 예제 기본경로에데이터파일 test01.dbf 를생성하는 test_disk 테이블스페이스를 생성 isql> CREATE TABLESPACE test 2 DATAFILE 'test01.dbf'; Create success.
169 디스크테이블스페이스생성 구문 ( 자동확장추가 ) 예제 CREATE [DISK] [DATA] TABLESPACE tablespace_name DATAFILE datafile_name ' [SIZE size (K M G) ] [REUSE] [AUTOEXTEND [ON [NEXT size][maxsize size] OFF)]; 데이터파일 test01.dbf, test02.dbf, test03.dbf 로구성된 100MB 의 test_disk 테이블스페이스를생성 ( 자동확장하지않음 ) isql> CREATE TABLESPACE test_disk 2 DATAFILE test01.dbf, test02.dbf, test03.dbf 3 SIZE 100M AUTOEXTEND OFF; Create success. 데이터파일 test01.dbf, test02.dbf, test03.dbf 로구성되고, 초기크기가 100MB, 2G 까지자동확장하는 test_disk 테이블스페이스를생성 isql> CREATE TABLESPACE test_disk 2 DATAFILE test01.dbf, test02.dbf, test03.dbf 3 SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 2G ; Create success.
170 임시테이블스페이스생성 임시테이블스페이스 디스크데이터에대한질의수행중생성되는임시결과를저장하기위한테이블스페이스 트랜잭션이종료하는시점에해당질의가남긴모든데이터들은사라짐 구문 CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE tempfile_name [SIZE size (K M G) ] [REUSE] [AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] ; 예제 tbs.temp 로구성된 test_temp 임시테이블스페이스를생성. 임시파일의크기는 10M 이고, 5M 크기로자동확장. isql> CREATE TEMPORARY TABLESPACE test_temp 2 TEMPFILE 'tbs.temp 3 SIZE 10M AUTOEXTENED ON NEXT 5M ; Create success.
171 테이블스페이스변경 테이블스페이스변경 ALTER TABLESPACE 구문으로테이블스페이스에데이터파일추가 / 삭제, 자동확장설정, 최대크기등에대해서변경이가능 구문 ( 자동확장추가 ) ALTER TABLESPACE tablespace_name { [ ADD DROP ] [ DATAFILE TEMPFILE ] [ ALTER [ DATAFILE TEMPFILE ] file_name SIZE [ AUTOEXTEND [ON [NEXT size][maxsize size] OFF) ] }; 예제 test_disk 테이블스페이스에 64 MB 의데이터파일 test01.dbf 를추가 ( 공간이더필요할때는 500K 씩파일이자동확장 ) isql> ALTER TABLESPACE test_disk 2 ADD DATAFILE test01.dbf SIZE 64M 3 AUTOEXTEND ON NEXT 500K; Alter success.
172 테이블스페이스변경 test_disk 디스크테이블스페이스가자동확장을하지않도록변경 isql> ALTER TABLESPACE test_disk 2 ALTER DATAFILE ' test01.dbf' AUTOEXTEND OFF; Alter success. test_disk 테이블스페이스의데이터파일 test01.dbf 를삭제하시오. isql> ALTER TABLESPACE test_disk 2 DROP DATAFILE test01.dbf ; Alter success.
173 테이블스페이스삭제 테이블스페이스삭제 데이터베이스에서테이블스페이스를제거함 시스템테이블스페이스는삭제할수없음 구문 예제 DROP TABLESPACE tablespace_name [INCLUDING CONTENTS] [ AND DATAFILES CASCADE CONSTRAINTS] ; 메모리테이블스페이스 test_mem 을삭제 isql> DROP TABLESPACE test_mem; Drop success. 디스크테이블스페이스 test_disk 의모든객체, 데이터파일들과함께테이블스페이스를삭제 isql> DROP TABLESPACE test_disk 2 INCLUDING CONTENTS AND DATAFILES; Drop success.
174 사용자개념 USER 스키마를구성하는단위 DB 생성초기에는시스템관리자인 SYSTEM_ 와 SYS 사용자만존재 일반스키마를구축하기위해서는일반사용자를생성 사용자종류 SYSTEM_ 메타테이블의소유자 SYS DBA 로모든권한을가지며, 시스템수준의모든작업을수행함 일반사용자 CREATE 구문을통해생성된사용자로자신이소유한스키마객체에대한권한을가짐
175 사용자개념 비밀번호규칙 객체이름과유사한규칙 지정할수있는최대크기는운영체제에따라다르며 8~40자사이 Solaris10, Windows XP 이후 : 40자 Solaris 2.8 이후, Windows NT : 11자 그외운영체제 : 8자 최대크기보다많이입력된경우, 이후문자는무시함
176 사용자생성 사용자생성 CREATE 구문을이용하여생성하며, 사용자생성시비밀번호를지정하고테이블스페이스를지정할수있음 최대크기보다많이입력된경우, 이후문자는무시함 구문 ( 기본 ) CREATE USER user_name IDENTIFIED BY password; 예제 사용자명이 alti 암호가 altibase 인사용자를생성 isql> CREATE USER alti 2 IDENTIFIED BY altibase; Create success.
177 사용자생성 구문 ( 테이블스페이스추가 ) CREATE USER user_name IDENTIFIED BY password [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE tablespace_name [ACCESS tablespace_name ON OFF]; 예제 사용자명이 alti, 암호가 altibase 인사용자가 SYS_TBS_MEM_DATA 테이블스페이스에대해사용권한을갖도록생성 isql> CREATE USER alti 2 IDENTIFIED BY altibase 3 ACCESS sys_tbs_mem_data ON; Create success.
178 사용자생성 사용자명이 alti, 암호는 altibase 인사용자가 default tablespace 로 test_disk 를, temporary tablespace 로 SYS_TBS_DISK_TEMP 를사용하며, test_mem 테이블스페이스에대해사용권한을갖도록생성 isql> CREATE USER alti 2 IDENTIFIED BY altibase 3 DEFAULT TABLESPACE test_disk 4 TEMPORARY TABLESPACE sys_tbs_disk_temp 5 ACCESS test_mem ON; Create success.
179 사용자변경 사용자변경 사용자의암호, 기본테이블스페이스 / 임시테이블스페이스 / 테이블스페이스사용권한을변경 구문 예제 ALTER USER user_name [IDENTIFIED BY password ] [DEFAULT TABLESPACE tablespace_name] [TEMPORARY TABLESPACE tablespace_name [ACCESS tablespace_name ON/OFF]; alti 사용자의비밀번호를 edu 로변경 isql> ALTER USER alti 2 IDENTIFIED BY edu; Alter success.
180 사용자변경 alti 사용자의 default tablespace 를 sys_tbs_disk_data 로변경 isql> ALTER USER alti 2 DEFAULT TABLESPACE sys_tbs_disk_data; Alter success. alti 사용자가 sys_tbs_mem_data 에접근하지못하도록변경 isql> ALTER USER alti 2 ACCESS sys_tbs_mem_data OFF; Alter success.
181 사용자삭제 사용자삭제 데이터베이스에명시된사용자를제거함 구문 DROP USER user_name [CASCADE]; 예제 사용자 alti 와사용자가소유한모든객체들을삭제 isql> DROP USER alti 2 CASCADE; Drop success.
182 5.3 테이블
183 테이블개념 테이블정의 데이터를저장하기위한가장기본적인논리적데이터저장구조 열 (column) 과행 (row) 으로구성됨 관계형데이터베이스시스템에서가장중요한객체 테이블종류 메모리테이블 데이터를메모리에적재후, 모든트랜잭션처리를메모리상에서진행함 디스크 I/O가거의발생하지않음 디스크테이블 데이터를디스크에적재후, 일부의데이터를메모리영역 ( 버퍼 ) 에올려서사용 데이터변경이나조회시디스크 I/O 가발생할수있음
184 테이블생성 구문 ( 기본 ) CREATE TABLE table_name ( column_name datatype [DEFAULT expr] [column_constraint], [table_constraint] ) ; 예제 isql> CREATE TABLE emp 2 (ename VARCHAR(10), 3 age NUMBER, 4 phone VARCHAR(20)); Create success.
185 테이블개념 데이터타입 분류데이터타입설명 문자형 CHAR NCHAR VARCHAR NVARCHAR 고정길이문자형데이터타입. 최대 32KB 고정길이유니코드문자형데이터타입가변길이문자형데이터타입. 최대 32KB 가변길이유니코드문자형데이터타입 숫자형 Native Type Non-Native Type SMALLINT INTEGER BIGINT REAL DOUBLE NUMERIC NUMBER DECIMAL FLOAT 2Bytes 크기의정수형데이터타입 4Bytes 크기의정수형데이터타입 8Bytes 크기의정수형데이터타입 C 의 FLOAT 과동일한데이터타입. 4Bytes 크기 8 bytes 크기의부동소수점데이터타입 고정소수점데이터타입 NUMERIC 데이터타입과동일 precision, scale 아무것도안주면 FLOAT 와동일 NUMERIC 데이터타입과동일 부동소수점데이터타입 precision 만지정가능
186 테이블개념 데이터타입 분류데이터타입설명 날짜형 DATE 8Bytes 마이크로초까지저장 / 검색가능. HH 는 HH24 와동일 이진형 대용량 BIT BYTE NIBBLE BLOB CLOB 0 과 1 로만이루어진고정길이이진데이터타입최대크기 고정길이이진데이터타입최대 32KB 가변길이이진데이터타입최대크기 254 대용량이진형데이터타입최대 2GB 대용량문자형데이터타입최대 2GB 공간형 GEOMETRY 공간형데이터타입. 최대 100MB
187 데이터타입 문자형데이터타입 CHAR 명시된크기만큼고정길이를가지는문자형데이터타입 명시된크기보다입력값의크기가작을경우뒷부분은공백으로채워짐 CHAR [(size)] isql> CREATE TABLE emp ( ename CHAR(20) ); VARCHAR 명시된크기내에서가변길이를가지는문자형데이터타입 명시된크기는최대저장가능한문자열의길이 VARCHAR [(size)] isql> CREATE TABLE emp ( ename VARCHAR(50) );
188 데이터타입 NCHAR 명시된크기만큼고정길이를가지는문자형데이터타입 칼럼의문자하나당크기는내셔널캐릭터셋의설정에따라서다르게저장됨 NCHAR [(size)] NVARCHAR 명시된크기내에서가변길이를가지는문자형데이터타입 칼럼의문자하나당크기는내셔널캐릭터셋의설정에따라서다르게저장됨 NVARCHAR [(size)]
189 데이터타입 숫자형데이터타입 (Native Type) BIGINT 8 바이트크기의정수형데이터타입 C의 long(64 bit) 이나 long long(32 bit) 과동일한데이터타입 BIGINT isql> CREATE TABLE emp ( eno BIGINT) ; DOUBLE 8 바이트크기의부동소수점형타입 ( C의 double과동일함 ) DOUBLE isql> CREATE TABLE emp ( price DOUBLE) ; INTEGER 4 바이트크기의정수형데이터타입 ( C의 int와동일함 ) INTEGER isql> CREATE TABLE emp ( eno INTEGER) ;
190 데이터타입 SMALLINT 2바이트크기의정수형데이터타입 C의 short와동일한데이터타입 SMALLINT isql> CREATE TABLE t1 ( c1 SMALLINT) ; REAL 4 바이트크기의부동소수점형타입 C의 float 와동일한데이터타입 REAL isql> CREATE TABLE t1 ( c1 REAL) ;
191 데이터타입 숫자형데이터타입 (Non Native Type) NUMERIC Precision 과 scale 을가지는숫자형데이터타입으로 precision 만큼의유효숫자와 scale 만큼의소수점이하정밀도를가지는고정소수점형 precision 과 scale 이모두생략되면 precision 은 38, scale 은 0 인정수를표현하는형식인고정소수점으로사용 FLOAT NUMERIC [(precision, scale)] isql> CREATE TABLE t1 ( c1 NUMERIC(5,0) ) ; -1E+120 에서 1E+120 까지의부동소수점숫자데이터타입 FLOAT [ (precision) ] DECIMAL NUMERIC 데이터타입과동일한데이터타입 DECIMAL [(precision, [ scale])]
192 데이터타입 NUMBER NUMERIC type의 alias형으로 precision과 scale이명시되지않으면 FLOAT과동일하게취급 NUMBER [(precision, scale)] isql> CREATE TABLE t1 ( c1 NUMBER(10,2) ) ;
193 데이터타입 날짜형데이터타입 DATE 날짜를표현하는데이터타입 8 바이트크기를가짐 Microsec까지표현가능 DATE isql> CREATE TABLE emp ( birth DATE ) ; 이진데이터타입 BYTE 명시된크기만큼고정된길이를가지는이진데이터타입 (16 진수로표현 ) 1 바이트는 2 개의문자를입력할수있음 (ex. BYTE(1) => 00~FF) BYTE [(size)] isql> CREATE TABLE orders ( gno BYTE(2) ) ;
194 데이터타입 NIBBLE 명시된크기만큼가변길이를가지는이진데이터타입 (16 진수로표현 ) 칼럼의크기는기본값으로한개의문자크기이며, 최대 255 크기까지허용 BYTE 와달리명시된 size 만큼의문자만을입력가능 (ex. NIBBLE(1) => 0~F) NIBBLE [(size)] BIT 0과 1로만이루어진고정길이를갖는이진데이터타입 기본값으로 1 bit이며, 최대길이는 bit BIT [(size)] VARBIT 0과 1로만이루어진가변길이를갖는이진데이터타입 기본값으로 1bit이며, 최대길이는 bit (128KB) VARBIT [(size)] isql> CREATE TABLE emp ( code VARBIT(10) ) ;
195 데이터타입 LOB 데이터타입 대용량데이터를저장할수있는데이터타입 최대 2G 까지저장 이진데이터를저장하는 BLOB 과문자열데이터를저장하는 CLOB 으로구분 BLOB 이진형데이터를저장하기위한타입으로 2G 크기내에서가변길이를가지는이진형데이터타입 CLOB BLOB 문자형대용량데이터를저장하기위한것으로, 2GB 크기내에서가변길이를가지는문자형데이터타입 CLOB 예제 isql> CREATE TABLE emp ( address CLOB, image BLOB) ;
196 데이터타입유의사항 숫자형데이터타입 가능하면 SMALLINT, INTEGER, BIGINT, REAL, DOUBLE등 native type으로지정을권장 => 데이터처리시변환비용에따른 overhead를줄일수있음. 저장공간의효율성이좋음 LOB 타입제약사항 NON-AUTOCOMMIT MODE 로수행하지않으면오류발생 Connection is in autocommit mode. One can not operate on LOB datas with autocommit mode on 프로시저나트리거에서사용할수없음 Temp Tablespace 에서사용할수없음 인덱스를생성할수없음
197 제약조건 Constraints in ALTIBASE 제약조건 설명 PRIMARY KEY PRIMARY KEY 값은테이블내에서유일해야하며, NULL 값을가질수없다. 한테이블내에정의가능한 PRIMARY KEY 개수는하나이다. UNIQUE UNIQUE 값은테이블내에서유일해야한다. NULL 값은포함가능하다. FOREIGN KEY 다른테이블의 PRIMARY KEY/UNIQUE 값을참조하는외래키를정의한다. NOT NULL/NULL DEFAULT NOT NULL : 해당칼럼에 NULL 값을가질수없다. NULL : 해당칼럼에 NULL 값을가질수있다. 칼럼값을명시해주지않을경우기본으로저장될값을명시. 지정되지않으면기본값은 NULL 로명시된다. CHECK 제약조건은제공하지않는다.
198 테이블생성 구문 ( 제약조건 ) column_level CREATE TABLE table_name ( column_name datatype [DEFAULT expr] [CONSTRAINT constraint_name] constraint_type, ) ; table_level CREATE TABLE table_name ( column_name datatype [DEFAULT expr], [CONSTRAINT constraint_name] constraint_type (column_name), ) ; NOT NULL, NULL, DEFAULT 제약조건은 column_level 로만정의가능 복합칼럼으로구성되는제약조건은 table_level 로만정의가능
199 제약조건 예제 Primary key isql> CREATE TABLE t1(c1 INTEGER PRIMARY KEY, c2 CHAR(10)); Create success. isql> DESC t1 [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] NAME TYPE IS NULL C1 INTEGER FIXED NOT NULL C2 CHAR(10) FIXED [ INDEX ] NAME TYPE IS UNIQUE COLUMN SYS_IDX_ID_122 BTREE UNIQUE C1 ASC [ PRIMARY KEY ] C1
200 제약조건 Foreign Key isql> CREATE TABLE t2(c1 INTEGER PRIMARY KEY, c3 CHAR(10)); Create success. isql> CREATE TABLE t1 (c1 INTEGER, c2 CHAR(10), 2 FOREIGN KEY(c1) REFERENCES t2(c1)); Create success. isql> CREATE TABLE t1 (c1 INTEGER, c2 CHAR(10), 2 FOREIGN KEY(c1) REFERENCES t2(c1)); [ERR : TABLE NOT FOUND] isql> CREATE TABLE t2(c1 INTEGER, c3 CHAR(10)); Create success. isql> CREATE TABLE t1 (c1 INTEGER, c2 CHAR(10), 2 FOREIGN KEY(c1) REFERENCES t2(c1)); [ERR : Unable to find referenced constraint] 참조할테이블 T2 가없어서오류발생 참조할테이블 T2 에기본키가없어서오류발생
201 제약조건 Unique / Default isql> CREATE TABLE t1(c1 INTEGER UNIQUE, c2 CHAR(10) DEFAULT 'ALTIBASE'); Create success. isql> DESC t1 [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] NAME TYPE IS NULL C1 INTEGER FIXED C2 CHAR(10) FIXED [ INDEX ] NAME TYPE IS UNIQUE COLUMN SYS_IDX_ID_125 BTREE UNIQUE C1 ASC T1 has no primary key isql> INSERT INTO t1(c1) VALUES(1); 1 row inserted. isql> SELECT * FROM t1; C1 C ALTIBASE 1 row selected.
202 제약조건 NULL / NOT NULL isql> CREATE TABLE t1 (c1 INTEGER NULL, c2 CHAR(10) NOT NULL); Create success. isql> DESC t1 [ TABLESPACE : SYS_TBS_MEM_DATA ] [ ATTRIBUTE ] NAME TYPE IS NULL C1 INTEGER FIXED C2 CHAR(10) FIXED NOT NULL T1 has no index T1 has no primary key isql> INSERT INTO t1(c2) VALUES('ALTIBASE'); 1 row inserted. isql> SELECT * FROM t1; C1 C ALTIBASE C2 칼럼에는 NULL 이들어갈수없어서오류발생 1 row selected. isql> INSERT INTO t1(c1) VALUES(1); [ERR : Unable to insert(or update) NULL into NOT NULL column.]
203 테이블생성 예제 column_level 제약조건생성 isql> CREATE TABLE emp( 2 eno INTEGER CONSTRAINT emp_pk PRIMARY KEY, 3 ename VARCHAR(10) NOT NULL, 4 age NUMBER DEFAULT 1, 5 dno INTEGER REFERENCES dept(dno)); Create success. isql> SET FOREIGNKEYS ON isql> DESC emp; NAME TYPE IS NULL ENO INTEGER FIXED NOT NULL ENAME VARCHAR(10) FIXED NOT NULL AGE FLOAT FIXED DNO SMALLINT FIXED [ PRIMARY KEY ] ENO [ FOREIGN KEYS ] * SYS_CON_ID_411 * SYS_IDX_ID_405 ( DNO ) ---> SYS.DEPT ( DNO )
204 테이블생성 table_level 제약조건생성 isql> CREATE TABLE emp( 2 eno INTEGER, 3 ename VARCHAR(10) NOT NULL, 4 age NUMBER DEFAULT 1, 5 dno INTEGER, 6 CONSTRAINT emp_pk PRIMARY KEY(eno), 7 CONSTRAINT emp_fk FOREIGN KEY (dno) REFERENCES dept(dno)); Create success. isql> SET FOREIGNKEYS ON isql> DESC emp; NAME TYPE IS NULL ENO INTEGER FIXED NOT NULL ENAME VARCHAR(10) FIXED NOT NULL AGE FLOAT FIXED DNO SMALLINT FIXED [ PRIMARY KEY ] ENO [ FOREIGN KEYS ] * EMP_FK * SYS_IDX_ID_405 ( DNO ) ---> SYS.DEPT ( DNO )
205 테이블생성 사원번호, 사원이름, 부서번호, 성별, 생일을칼럼으로가지는테이블을생성 isql> CREATE TABLE employee( 2 eno INTEGER, 3 ename CHAR(20), 4 dno INTEGER, 5 sex CHAR(1), 6 birth DATE ) ; Create success. 주문번호, 주문일자, 판매사원, 고객주민번호, 상품번호, 주문수량을칼럼으로갖는 orders 테이블을생성. 주문번호와주문일자를기본키로생성 isql> CREATE TABLE orders( 2 ono INTEGER, 3 order_date DATE, 4 eno INTEGER NOT NULL, 5 cno CHAR(14) NOT NULL, 6 gno INTEGER NOT NULL, 7 qty INTEGER DEFAULT 1, 8 PRIMARY KEY(ono, order_date)); Create success.
206 테이블생성 구문 ( 추가구문 ) CREATE TABLE table_name ( column_name datatype [DEFAULT expr] [column_constraint], [table_constraint] ) [MAXROWS integer ] [TABLESPACE tablespace_name ] [AS subquery ]; 예제 column_level 제약조건생성 isql> CREATE TABLE employee( 2 eno INTEGER PRIMARY KEY, 3 ename CHAR(20) NOT NULL, 4 dno INTEGER, 5 sex CHAR(1) DEFAULT 'M' NOT NULL, 6 birth DATE ) 7 TABLESPACE edu_mem ; Create success.
207 테이블생성 employee 테이블을 edu_mem 테이블스페이스에생성하고최대 row 수는 으로지정 isql> CREATE TABLE employee( 2 eno INTEGER PRIMARY KEY, 3 ename CHAR(20) NOT NULL, 4 dno INTEGER, 5 sex CHAR(1) DEFAULT 'M' NOT NULL, 6 birth DATE ) 7 MAXROWS TABLESPACE edu_mem; Create success. employee 테이블에서부서번호가 10 인조건을만족하는데이터를가진 emp_dept_10 테이블을생성 isql> CREATE TABLE emp_dept_10 2 AS 3 SELECT * 4 FROM employee 5 WHERE dno = 10 ; Create success.
208 테이블생성 주의사항 칼럼크기지정시최대허용크기를넘거나최소크기보다작으면오류발생 PRIMARY KEY 는한테이블에 2 개이상존재할수없음 참조제약조건의경우 FOREIGN KEY 와 PRIMARY KEY 의칼럼개수는동일해야함 참조제약조건의경우 FOREIGN KEY 와 PRIMARY KEY 의칼럼데이터타입은동일해야함 한테이블에 PRIMARY KEY 또는 UNIQUE 의총합이 32 개를넘을수없음 CREATE TABLE AS SELECT 의경우칼럼명을명시하였다면그개수는검색대상에명시한칼럼개수와동일해야함 CREATE TABLE AS SELECT 의경우 CREATE TABLE 문에칼럼명을명시하지않고검색대상에표현식을사용한경우반드시생성할테이블의칼럼명으로사용하기위해별명 (alias) 이존재해야함
209 테이블생성 고려사항 Tablespace 와데이터 Memory Tablespace Disk Tablespace Volatile tablespace 고성능데이터 대용량데이터 logging 이필요없는고성능데이터 테이블생성시 tablespace 절지정하여데이터특성에맞게테이블을생성 Ex) 최신일주일동안의데이터를자주 access 한다고하면, 최신일주일데이터는 memory table 로, 일주일이지난 history 성데이터는 disk table 로생성 동일테이블을디스크, 메모리테이블스페이스에나눠서생성할수없음
210 테이블변경 구문 ( 추가구문 ) 예제 ALTER TABLE table_name { ADD [ COLUMN ] ( column_name data_type ) ALTER [ COLUMN ] ( column_name { SET DEFAULT DROP DEFAULT NULL NOT NULL } MODIFY COLUMN ( column_name data_type ) DROP [ COLUMN ] ( column_name ) ADD table_level_constraint DROP {CONSTRAINT constraint_name PRIMARY KEY UNIQUE(column_name)} RENAME COLUMN column_name TO new_column_name MAXROWS ALL INDEX [ENABLE DISABLE] COMPACT }; orders 테이블에주문상태칼럼을추가 isql> ALTER TABLE orders 2 ADD COLUMN (processing CHAR(1) DEFAULT '0'); Alter success.
211 테이블변경 orders 테이블의주문상태칼럼의크기를 CHAR(2) 로변경 isql> ALTER TABLE orders 2 MODIFY COLUMN (processing CHAR(2)); Alter success. orders 테이블의주문상태칼럼의이름을변경 isql> ALTER TABLE orders 2 RENAME COLUMN processing TO process; Alter success. orders 테이블의주문상태칼럼을삭제 isql> ALTER TABLE orders 2 DROP COLUMN process; Alter success.
212 테이블 COMPACT 테이블 COMPACT 데이터가없는빈페이지들에대하여페이지를반환 메모리 / 휘발성테이블과큐만지원 구문 ALTER TABLE table_name COMPACT ; 예제 데이터가삭제된후에 orders 테이블에할당되어있는빈공간을반환 isql> ALTER TABLE orders 2 COMPACT; Alter success.
213 테이블 TRUNCATE 테이블 TRUNCATE 명시된테이블에서모든데이터를삭제하고 삭제된데이터는취소할수없음 구문 TRUNCATE TABLE table_name ; 예제 orders 테이블의모든데이터를삭제 isql> SELECT COUNT(*) FROM orders; COUNT isql> TRUNCATE TABLE orders; Truncate success. isql> SELECT COUNT(*) FROM orders; COUNT
214 테이블삭제 테이블 DROP 테이블을삭제 구문 예제 DROP TABLE table_name [CASCADE [CONSTRAINTS] ] ; orders 테이블을삭제 isql> DROP TABLE orders; Drop success. dept 테이블에의해참조되는 emp 테이블을삭제 isql> DROP TABLE emp; [ERR-3102A : A foreign key constraint that depends on the table or column exists.] isql> DROP TABLE emp 2 CASCADE CONSTRAINTS; Drop success.
215 테이블 RENAME 테이블 RENAME 테이블의이름변경 구문 RENAME table_name TO new_table_name ; 예제 employee 테이블의이름을 emp 로변경 isql> RENAME employee TO emp; Rename success. isql> SELECT ename 2 FROM emp 3 LIMIT 1; ENAME EJJUNG isql> ALTER TABLE employee 2 RENAME TO emp; Alter success.
216 5.4 인덱스
217 인덱스개념 INDEX 질의문의성능향상을위해테이블과는별도로저장되는객체 Index 대상칼럼값을 sorting 하여저장 Unique, Primary Key 로지정한칼럼은내부적으로 Unique Index 가생성 메모리테이블의인덱스는메모리에, 디스크테이블의인덱스는디스크에 생성 테이블에대해물리적, 논리적으로독립적인객체이기때문에테이블에관계없이삭제, 수정이가능 테이블의레코드가수정되면해당인덱스도수정이됨 디스크인덱스는질의및인덱스저장시디스크 I/O 비용을줄이기위해테이블과별도의디스크에분리해서저장하는것을권장
218 인덱스개념 인덱스종류 인덱스속성 Unique Index 인덱스칼럼에중복을허용하지않는인덱스 Non-Unique Index 인덱스칼럼에중복값을허용하는인덱스 UNIQUE 옵션생략시기본적으로생성이되는인덱스 Composite Index 여러개의칼럼들로구성된인덱스 Single Index 하나의칼럼으로구성된인덱스 인덱스저장위치 Memory Index Memory Table 에대한 Index 실제 Table 의데이터에대한 pointer(16bytes) 만저장 Disk Index Disk Table 에대한 Index 칼럼의값과테이블의레코드주소값이저장
219 인덱스생성 구문 CREATE [UNIQUE ] INDEX index_name ON table_name ( column_name [ ASC DESC ], ) ; 예제 employee 테이블의 salary 칼럼에오름차순의인덱스생성 isql> CREATE INDEX emp_idx1 2 ON employee (salary ASC) ; Create success. employee 테이블의 ename 칼럼에 unique 인덱스생성 isql> CREATE UNIQUE INDEX emp_idx2 2 ON employee (ename) ; Create success. employee 테이블에 dno, emp_job 칼럼에 composite 인덱스생성 isql> CREATE UNIQUE INDEX emp_idx3 2 ON employee (dno, emp_job) ; Create success.
220 인덱스생성 구문 ( 추가 ) 예제 CREATE [ UNIQUE ] INDEX index_name ON table_name ( column_name [ ASC DESC ], ) [TABLESPACE tablespace_name ] [NOPARALLEL PARALLEL parallel_factor ] ; employee 테이블의 salary 칼럼에 4 개의 CPU 를사용하도록병렬옵션을지정하여 test_mem 테이블스페이스에인덱스를생성 isql> CREATE INDEX emp_idx1 2 ON employee (salary ASC) 3 TABLESPACE test_mem 4 PARALLEL 4; Create success.
221 인덱스변경 인덱스변경 인덱스를재구축하거나인덱스의이름을변경 구문 ALTER INDEX index_name [REBUILD] [RENAME TO new_ index_name ]; 예제 인덱스 t1_idx1 을재구축 isql> ALTER INDEX t1_idx1 2 REBUILD ; Alter success. 인덱스 t1_idx1 의이름을 t1_idx 로변경 isql> ALTER INDEX t1_idx1 2 RENAME TO t1_idx; Alter success.
222 인덱스삭제 인덱스 DROP 인덱스를삭제 구문 DROP INDEX index_name ; 예제 인덱스 t1_idx1 를삭제 isql> DROP INDEX t1_idx1; Drop success.
223 5.5 뷰
224 뷰개념 View 하나이상의테이블에서데이터의부분집합을논리적으로표시 실제데이터가저장되지않는가상테이블 사용목적 데이터 access 를제한하기위해사용 복잡한질의를쉽게작성하기위해사용 ALTIBASE View 의특징 View 를통해조회만가능 DML(INSERT, UPDATE, DELETE) 이가능한 Updatable View 는제공하지않음 View 의부연질의에대한제한사항 검색대상표현식의개수는최대 1024개 CURRVAL, NEXTVAL 의사열을사용할수없음
225 뷰생성 구문 예제 CREATE [OR REPLACE] [[NO] FORCE] VIEW view_name [( alias_name)] AS sub_query [WITH READ ONLY]; 사원테이블에서각부서의평균월급을부서별로질의하는뷰를생성 isql> CREATE VIEW avg_sal 2 AS 3 SELECT dno, AVG(salary) emp_avg_sal 4 FROM employee 5 GROUP BY dno; Create success. isql> SELECT * FROM avg_sal ; DNO EMP_AVG_SAL
226 뷰삭제 뷰삭제 뷰를삭제하며 base table 은삭제되지않음 구문 DROP VIEW view_name ; 예제 뷰 avg_sal 을삭제 isql> DROP VIEW avg_sal; Drop success. isql> SELECT * FROM avg_sal ; [ERR : Table not found isql> SELECT ename FROM employee; ENAME EJJUNG HJNO HSCHOI
227 5.6 시퀀스
228 시퀀스개념 SEQUENCE 연속적인숫자를생성하는객체 PRIMARY KEY 칼럼의유일값을생성하는데주로사용 트랜잭션과무관한객체. ROLLBACK 등으로인해값이복구되지않음 시퀀스는테이블과독립적이므로테이블에대한블로킹현상이없음 메모리에일정개수를캐시해놓기때문에성능이빠름.NEXTVAL 을먼저사용한후에.CURRVAL 을사용할수있음
229 시퀀스개념 시퀀스를사용하지않을때의문제점 유일값을얻어올때테이블데이터를조회 (ex. MAX(column)+1) 하는방법은 블로킹현상이발생 User 1 SELECT MAX(c1)+1 FROM t1;.. INSERT INTO t1 VALUSE(10003,..);. COMMIT; T1.c User 2 SELECT MAX(c1)+1 FROM t1;.. INSERT INTO t1 VALUSE(10003,..); =>Blocking. => DUP 오류발생
목차 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 informationDBMS & 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 information5장 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 informationMySQL-.. 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다양한 예제로 쉽게 배우는 오라클 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목차 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 informationInsertColumnNonNullableError(#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 informationWINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역
WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,
More information<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>
제 8강 SQL: 관계데이터베이스언어 강의목표 관계데이타베이스언어로서상용 DBMS에서가장널리사용되는 SQL의동작원리에관하여학습하고, 이를이용하여다양한질의문을작성하는방법을습득한다 기대효과 SQL의데이터정의기능을이해한다 SQL의데이터조작기능중질의기능을이해한다 SQL의데이터조작기능중데이터갱신기능을이해한다 SQL의데이터조작기능중뷰및인덱스관련기능을이해한다 SQL 의개요
More information단답형 (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 informationALTIBASE 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목차 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강의 개요
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강의 개요
정규화와 SELECT (II) 웹데이터베이스 학과 학생 과목 학과 지도교수 학과학번성명 수강과목 담당교수 A 김수정 A 0001 고길동 성질이론 김수정 B 허영만 A 0002 둘리 한식의멋 허영만 C 강풀 B 0003 희동이 심리학의이해 강풀 과목 _ 성적 학번 수강과목 성적 0001 성질이론 A 0001 한식의멋 C 0002 성질이론 A 0002 한식의멋
More informationMicrosoft PowerPoint - 10Àå.ppt
10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어
More informationPowerPoint 프레젠테이션
MySQL - 명령어 1. 데이터베이스관련명령 2. 데이터베이스테이블관련명령 3. SQL 명령의일괄실행 4. 레코드관련명령 5. 데이터베이스백업및복원명령 1. 데이터베이스관련명령 데이터베이스접속명령 데이터베이스접속명령 mysql -u계정 -p비밀번호데이터베이스명 C: > mysql -ukdhong p1234 kdhong_db 데이터베이스생성명령 데이터베이스생성명령
More informationuntitled
(shared) (integrated) (stored) (operational) (data) : (DBMS) :, (database) :DBMS File & Database - : - : ( : ) - : - : - :, - DB - - -DBMScatalog meta-data -DBMS -DBMS - -DBMS concurrency control E-R,
More informationSQL
데이터베이스및 SQL 언어의기초 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 1 / 36 Part I 데이터베이스 박창이 ( 서울시립대학교통계학과 ) 데이터베이스및 SQL 언어의기초 2 / 36 데이터의구성및표현 개체 (entity): DB가표현하려는유형 / 무형적정보의대상속성 (attribute): 개체가갖는특성도메인
More information다양한 예제로 쉽게 배우는 오라클 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 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------
More informationTITLE
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 information6장. SQL
학습목표 SQL이 무엇인지 개념을 설명 테이블을 생성, 변경, 제거할 할 수 있다. 수 있다. 데이터를 검색, 갱신, 삽입, 삭 제할 수 있다. 뷰, 시스템 카탈로그, 저장 프 로시저, 트리거에 대한 개념 을 설명할 수 있다. 2 목차 SECTION 01 SQL의 개요 11 SQL의 역사 12 SQL의 유형별 종류 SECTION 0 21 스키마 22 테이블
More informationMicrosoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx
05-01 SQL의소개 SQL을이용한데이터정의 SQL을이용한데이터조작 뷰 삽입 SQL 학습목표 SQL의역할을이해하고, 이를기능별로분류해본다. SQL의데이터정의기능을예제를통해익힌다. SQL의데이터조작기능을예제를통해익힌다. 뷰의개념과장점을이해한다. 삽입 SQL의역할을이해한다. 2 01 SQL 의소개 SQL (Structured Query Language) 의미
More information슬라이드 제목 없음
4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여
More information다양한 예제로 쉽게 배우는 오라클 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 informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationCH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본
1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본으로사용할수도있음 여러개의테이블에서서로유기적인관계를설정하여하나의테이블에서작업하는것처럼작업이가능 2- 쿼리 (Query) 종류 1) 선택쿼리가장일반적인방법형태의쿼리
More informationPowerPoint 프레젠테이션
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빅데이터분산컴퓨팅-5-수정
Apache Hive 빅데이터분산컴퓨팅 박영택 Apache Hive 개요 Apache Hive 는 MapReduce 기반의 High-level abstraction HiveQL은 SQL-like 언어를사용 Hadoop 클러스터에서 MapReduce 잡을생성함 Facebook 에서데이터웨어하우스를위해개발되었음 현재는오픈소스인 Apache 프로젝트 Hive 유저를위한
More informationPowerPoint 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 informationMicrosoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt
변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short
More informationPowerPoint 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 informationORACLE-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문서 템플릿
HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,
More information다양한 예제로 쉽게 배우는 오라클 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 informationBind 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 informationMicrosoft Word - SQL튜닝_실습교재_.doc
* 실습환경 * 1. 오라클데이터베이스의튜닝실습을하기위해서는기본적인테이블과데이터가필요합니다. 다음과같은절차에의해환경설정을하십시오. 1) 강사가제공하는 Export 된파일 (scott.dmp) 을자신의 ORACLE 경로에저장하십시오. [C: ] cd C: ORACLE ORA92 BIN [C: ] dir scott.dmp scott.dmp 2) SYSTEM 사용자로접속하여
More informationRDB개요.ppt
1 2 3 < > 1 SQL SQL 2 SQL 3 column DEPT DEPT# DNAME BUDGET D1 D2 D3 Marketing Development Research 10M 12M 5M tuple EMP EMP# ENAME DEPT# SALARY D1 40 D1 45 E1 E2 E3 Lopez Cheng Finzi D2 30 E4 Satio D2
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
비트연산자 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 information13주-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 informationI 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 informationPowerPoint 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 informationchap 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 informationORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O
Orange for ORACLE V4.0 Installation Guide ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE...1 1....2 1.1...2 1.2...2 1.2.1...2 1.2.2 (Online Upgrade)...11 1.3 ORANGE CONFIGURATION ADMIN...12 1.3.1 Orange Configuration
More information@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 informationEEAP - Proposal Template
제품 : ArcGIS Desktop 제작일 : 2019 년 03 월 19 일 제작 : 개요 본문서는 ArcGIS 의쿼리식에사용되는일반적인쿼리요소에대한한국에스리 기술문서입니다. 다음내용을통해쿼리식에사용되는연산자에대한을확인할 수있습니다. 쿼리 (Query) 는 ArcGIS 에서피처및테이블레코드의하위집합을선택하는데사용됩니다. ArcGIS 쿼리표현식은표준 SQL 표현식을준수합니다.
More informationMicrosoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt
. SQL(Structured Query Language) 특징 [ 출제빈도 상 ] 사용자 SQL ) 관계대수와관계해석을기초로한고급데이터언어 ) 이해하기쉬운형태 3) 대화식질의어로사용가능 4) 데이터정의, 조작, 제어기능제공 5) COBOL, C, PASCAL 등의언어에삽입 -> 내장 SQL 6) 레코드집합단위로처리 7) DBMS 에서사용되는비절차적대화형 Language
More informationMicrosoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc
특정 Column 통계정보갱신가이드 유니원아이앤씨 DB 사업부이대혁 2015 년 03 월 02 일 문서정보프로젝트명서브시스템명 버전 1.0 문서명 특정 Column 통계정보갱신가이드 작성일 2015-03-02 작성자 DB사업부이대혁사원 최종수정일 2015-03-02 문서번호 UNIONE-201503021500-LDH 재개정이력 일자내용수정인버전 문서배포이력
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More information슬라이드 제목 없음
뷰와시스템카탈로그 관계데이터베이스시스템의뷰 (view) 는다른릴레이션으로부터유도된릴레이션 (derived relation) 으로서 ANSI/SPARC 3단계아키텍처의외부뷰와다름 뷰는관계데이터베이스시스템에서데이터베이스의보안메카니즘으로서, 복잡한질의를간단하게표현하는수단으로서, 데이터독립성을높이기위해서사용됨 시스템카탈로그는시스템내의객체 ( 기본릴레이션, 뷰, 인덱스,
More information오라클 명령어 와 SQL 정리
1. 현재접속된계정의모든테이블를보기위한 SQL문 select * from tab; 2. 테이블구조확인하기 desc tablename ------------------------! SQL PLUS 명령어! ------------------------ 3. SQL PLUS 사용환경설정명령어 SET system_variable value system_variable
More informationMicrosoft PowerPoint Python-DB
순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 데이터베이스 SQLite 데이터베이스 파이썬과데이터베이스연결 순천향대학교컴퓨터공학과 2 데이터베이스 (Database) 소개 데이터베이스 DBMS (DataBase Management System) 이라고도함 대용량의데이터를매우효율적으로처리하고저장하는기술 SQLite, 오라클, MySQL 등이있음
More informationMicrosoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS보다가격이매우저렴한편이고,
More information슬라이드 1
알티베이스의 DBMS 를바라보다! Session1. 오라클의눈으로알티베이스를보다 Session2. ALTIBASE HDB ZETA 소개 (New Feature & Utility) ALTIBASE 교육센터소개 Altibase Corp. 교육컨설팅팀성원준 AGENDA 1. Altibase 교육센터소개 2. Altibase 교육과정소개 Altibase 교육센터소개
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;
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 informationMS-SQL SERVER 대비 기능
Business! ORACLE MS - SQL ORACLE MS - SQL Clustering A-Z A-F G-L M-R S-Z T-Z Microsoft EE : Works for benchmarks only CREATE VIEW Customers AS SELECT * FROM Server1.TableOwner.Customers_33 UNION ALL SELECT
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More informationPowerPoint Presentation
Computer Science Suan Lee - Computer Science - 06 데이터베이스 1 06 데이터베이스 - Computer Science - 06 데이터베이스 2 목차 1. 데이터베이스의개요 2. 데이터모델 3. 관계형데이터베이스 4. SQL 5. 모바일데이터베이스 - Computer Science - 06 데이터베이스 3 데이터베이스의개념
More informationALTIBASE HDB Patch Notes
ALTIBASE HDB 5.3.3.93 Patch Notes Table of Contents BUG-27950 ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를 생성하지못한다. 3 BUG-38105 PASSWORD_LIFE_TIME 경과후유예기간 (PASSWORD_GRACE_TIME) 내에 접속을시도할경우알림메시지를발생해야한다.
More information슬라이드 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 informationALTIBASE HDB Patch Notes
ALTIBASE HDB 6.3.1.10.6 Patch Notes 목차 BUG-45060 offline replication start 와 replication drop 을동시에수행하는경우, replication start 가완료되지않았으면 replication drop 을수행하지못하도록수정하였습니다... 4 BUG-46193 메모리테이블의이중화병렬 sync
More information歯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 informationDatabase Applications - 멀티미디어 데이터베이스 – 제6장 텍스트 색인과 검색
- 데이터베이스시스템 2013. 09. 05 가천대학교 IT 대학 컴퓨터미디어융합학과 목차 4.1 개요 4.2 자료정의 4.3 자료질의 4.4 자료갱신 4.5 스키마변경 4.6 무결성제약조건 4.7 익힘문제 4.1 개요 SQL structured query language 상업용 RDB의표준언어, IBM 설계및구현. SQL1: 86년 ANSI와 ISO의합작
More informationMicrosoft 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´ÙÁß 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 information0. 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 information8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )
8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 ) - DDL(Data Definition Language) : show, create, drop
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More informationResult 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금오공대 컴퓨터공학전공 강의자료
데이터베이스및설계 Chap 1. 데이터베이스환경 (#2/2) 2013.03.04. 오병우 컴퓨터공학과 Database 용어 " 데이타베이스 용어의기원 1963.6 제 1 차 SDC 심포지움 컴퓨터중심의데이타베이스개발과관리 Development and Management of a Computer-centered Data Base 자기테이프장치에저장된데이터파일을의미
More information슬라이드 1
Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능
More information윈도우즈프로그래밍(1)
제어문 (2) For~Next 문 윈도우즈프로그래밍 (1) ( 신흥대학교컴퓨터정보계열 ) 2/17 Contents 학습목표 프로그램에서주어진특정문장을부분을일정횟수만큼반복해서실행하는문장으로 For~Next 문등의구조를이해하고활용할수있다. 내용 For~Next 문 다중 For 문 3/17 제어문 - FOR 문 반복문 : 프로그램에서주어진특정문장들을일정한횟수만큼반복해서실행하는문장
More informationFlashBackt.ppt
1. Flashback 목적 Flashback 이란? 사용자실수에의한손상된데이터를 Database 의크기와상관없이복구를할수있는기능이다. 이 Flashback 기능은일반적인복구에서우려되는데이터베이스의크기를걱정하지않아도된다. 보통의사용자실수는커다란시스템장애가수반되며, 이를복구하기위해서는많은자원과시간이필요하다. 하지만 9i 에서지원되느 flashback query
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationPowerPoint 프레젠테이션
Spider For MySQL 실전사용기 피망플러스유닛최윤묵 Spider For MySQL Data Sharding By Spider Storage Engine http://spiderformysql.com/ 성능 8 만 / 분 X 4 대 32 만 / 분 많은 DB 중에왜 spider 를? Source: 클라우드컴퓨팅구 선택의기로 Consistency RDBMS
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More information<4D F736F F F696E74202D20C4C4C8B031B1DEC7CAB1E22DC0FCC3BCB1B3C0E72D D3133B3E232C8B8B1EEC1F6202D20BAB9BBE7BABB2E707074>
[ 엑셀총정리 (3)] 구분 주요 정보 ISBLANK, ISERROR, CELL, ISERR, ISEVEN, ISLOGICAL, ISNONTEXT, ISNUMBER, ISODD, ISTEXT, N, TYPE 데이터베이스 DSUM, DAVERAGE, DCOUNT, DCOUNTA, DMAX, DMIN, DVAR, DSTEDEV, DGET, DPRODUCT VLOOKUP,
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue
More information<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>
3.2 관계데이터언어 0709 (1) 관계대수 0703 0705 0703 1) 관계대수정의 1 원하는정보와그정보를어떻게유도하는가를기술하는절차적인방법 0503 2 주어진관계로부터원하는관계를얻기위해연산자와연산규칙을제공하는언어 0503 3 릴레이션조작을위한연산의집합으로피연산자와결과가모두릴레이션이라는특성을가짐 2) 순수관계연산자 0305 관계데이터베이스에적용할수있도록특별히개발된관계연산자
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationSQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자
SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전
More information5장. 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학습목차 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 informationESQL/C
20 장. PL/SQL 커서 주요내용 암시적커서 명시적커서선언 명시적커서열기및닫기 명시적커서에서데이터 Fetch 커서의속성 (%ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND) 커서 FOR 루프 PL/SQL 의커서 (Cursor) 커서 SQL 문과프로그램실행과정에서결과를저장할수있는오라클메모리구조 ( 개별 SQL 작업영역 ) 암시적커서 (Implicit
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationMicrosoft PowerPoint - 27.pptx
이산수학 () n-항관계 (n-ary Relations) 2011년봄학기 강원대학교컴퓨터과학전공문양세 n-ary Relations (n-항관계 ) An n-ary relation R on sets A 1,,A n, written R:A 1,,A n, is a subset R A 1 A n. (A 1,,A n 에대한 n- 항관계 R 은 A 1 A n 의부분집합이다.)
More informationMicrosoft 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 informationMicrosoft 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컴파일러
YACC 응용예 Desktop Calculator 7/23 Lex 입력 수식문법을위한 lex 입력 : calc.l %{ #include calc.tab.h" %} %% [0-9]+ return(number) [ \t] \n return(0) \+ return('+') \* return('*'). { printf("'%c': illegal character\n",
More informationMicrosoft PowerPoint - QVIZMVUMWURI.pptx
데이타베이스시스템 2011.03 충북대학교경영정보학과조완섭 (wscho@chungbuk.ac.kr) Chap. 4 SQL 질의어 C4 2 목차 - SQL2에서데이터정의, 제약조건및스키마변경 - SQL에서의기본질의 - 더복잡한 SQL 질의들 - SQL에서삽입, 삭제, 갱신구문 - SQL 뷰 - 주장으로추가적인제약조건명시 - SQL의부가적인기능들 Ch4 3 SQL
More information10.ppt
: SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL
More information3 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다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서짂수저 1 장. SELECT 문을이용하여 원하는데이터가져오기 1 - DESC 명령어로컬럼을확인하자! SCOTT>DESC emp ; Name Null? Type ------------------------ ------------------ -------------------- EMPNO NOT NULL NUMBER(4)
More information목차 BUG ora(alti)adapter 에서복제대상 DB 장애로데이터정합성이깨진후맞춰지지않습니다... 3 BUG PERCENTILE_CONT, PERCENTILE_DISC, MEDIAN 에서 DATE 타입을지원해야합니다 BUG-438
ALTIBASE HDB 6.5.1.2.7 Patch Notes 목차 BUG-43540 ora(alti)adapter 에서복제대상 DB 장애로데이터정합성이깨진후맞춰지지않습니다... 3 BUG-43821 PERCENTILE_CONT, PERCENTILE_DISC, MEDIAN 에서 DATE 타입을지원해야합니다.... 5 BUG-43831 adapter 반영테이블의사용자를
More informationPowerPoint Presentation
FORENSIC INSIGHT; DIGITAL FORENSICS COMMUNITY IN KOREA SQL Server Forensic AhnLab A-FIRST Rea10ne unused6@gmail.com Choi Jinwon Contents 1. SQL Server Forensic 2. SQL Server Artifacts 3. Database Files
More informationPowerPoint 프레젠테이션
IT CookBook, SQL Server 로배우는데이터베이스개론과실습 [ 강의교안이용안내 ] 본강의교안의저작권은한빛아카데미 에있습니다. 이자료를무단으로전제하거나배포할경우저작권법 136 조에의거하여최고 5 년이하의징역또는 5 천만원이하의벌금에처할수있고이를병과 ( 倂科 ) 할수도있습니다. Chapter3. SQL 기초 SQL Server 로배우는데이터베이스개론과실습
More informationCommit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따
Commit Wait Class 대기시간감소방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 Wait Class 중 Commit 카테고리에해당하는 Wait Event 에의한대기현상으로 DB 시스템의성능저하현상이발생하는것은종종경험할수있다. 그중대표적인 Wait Event 는 Log File Sync 이다. 실제로대부분의 DB 시스템의 Top 5 Wait Event
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More information금오공대 컴퓨터공학전공 강의자료
데이터베이스및설계 Chap 6. SQL 2013.04.10. 오병우 컴퓨터공학과 SQL 의역사 SEQUEL(Structured English QUEry Language) 에연유 1974 년, IBM 연구소에서발표 IBM 은 'SYSTEM R' 의인터페이스로설계구현 실험적관계데이터베이스시스템인터페이스표준 SQL 1986 년, SQL-86 또는 SQL1 1992
More information