1 과목데이터모델링의이해 데이터모델의이해 모델의세가지관점 1) 데이터관점 : 업무가어떤데이터와관련이있는지또는데이터간의관계는무엇인지에대해서모델링하는방법 (What, Data) 2) 프로세스관점 : 업무가실제하고있는일은무엇인지또는무엇을해야하는지를모델링하는방법 (How, Process) 3) 데이터와프로세스의상관관점 : 업무가처리하는일의방법에따라데이터는어떻게영향을받고있는지모델링하는방법 (Interaction) 으로설명될수있다.(Data vs Process) 데이터모델링의중요성 1) 파급효과 2) 복잡한정보요구사항의간결한표현 3) 데이터품질 데이터모델링의유의점 1) 중복 (Duplication) 2) 비유연성 (Inflexibility) - 데이터의정의를데이터의사용프로세스와분리해야함. 3) 비일관성 (Inconsistency) - 데이터와데이터간상호연관관계에대해명확하게정의해야함. 데이터모델링의 3단계 데이터모델링 내용 수준 개념적데이터모델링 추상화수준이높고업무중심적이고포괄적인수준의모델링진행. 전사적데이터모델링, EA 수립시많이사용 추상적 논리적데이터모델링 시스템으로구축하고자하는업무에대해 Key, 속성, 관계등을정확하게표현, 재사용성이높음 물리적데이터모델링 실제로데이터베이스에이식할수있도록성능, 저장등물리적인성격을고려하여설계 구체적 1) 개념적데이터모델링 - 조직, 사용자의데이터요구사항을찾고분석하는데서시작한다. - 어떠한자료가중요하며또어떠한자료가유지되어야하는지를결정한다. - 주요활동은핵심엔터티와그들간의관계를발견하고, 그것을표현하기위해서엔티티-관계다이어그램을생성하는것이다. - 개념데이터모델은사용자와시스템개발자가데이터요구사항을발견하는것을지원한다. - 개념데이터모델은현시스템이어떻게변형되어야하는가를이해하는데유용하다.
2) 논리적데이터모델링 - 데이터베이스설계프로세스의 Input으로써비즈니스정보의논리적인구조와규칙을명확하게표현하는기법또는과정이라할수있다. - 논리데이터모델링의결과로얻어지는논리데이터모델은데이터모델링이최종적으로완료된상태라고정의할수있다. - 논리데이터모델의상세화는식별자확정, 정규화 M:M관계해소, 참조무결성규칙정의등을들수있다. - 정규화라는중요한활동을한다. * 정규화 : 논리데이터모델상세화과정의대표적인활동으로, 논리데이터모델의일관성을확보하고중복을제거하여속성들이가장적절한엔터티에배치되도록함으로써보다신뢰성있는데이터구조를얻는데목적이있다. 3) 물리적데이터모델링 - 논리데이터모델이데이터저장소로서어떻게컴퓨터하드웨어에표현될것인가를다룬다. - 데이터가물리적으로컴퓨터에어떻게저장될것인가에대한정의를물리적스키마라고한다. 순서 : 개념적데이터모델링 ==> 논리적데이터모델링 ==> 물리적데이터모델링 데이터독립성필요배경 - 유지보수비용증가 - 데이터중복성증가 - 데이터복잡도증가 - 요구사항대응저하 ANSI / SPARC 3 단계구조 외부단계 : 사용자와가까운단계로사용자개개인이보는자료에대한관점과관련된부분. 사용자가처리하고자하는데이터유형에따라, 관점에따라, 방법에따라다른스키마구조를가지고있음. 개념단계 : 사용자가처리하는데이터유형의공통적인사항을처리하는통합된뷰를스키마구조로디자인한형태. 사용자가처리하는통합된뷰를설계하는도구로이해해도무방. 내부적단계 : 데이터가물리적으로저장된방법에대한스키마구조
항목 내용 비고 외부스키마 사용자관점 - View 단계여러개의사용자관점으로구성, 즉개개사용자단접근하는계로서개개사용자가보는개인적 DB 스키마특성에따른 - DB의개개사용자나응용프로그래머가접근하는 DB 정의스키마구성 개념스키마 - 개념단계하나의개념적스키마로구성모든사용자관점을통합한조직전체의 DB를기술하는것 - 모든응용시스템들이나사용자들이필요로하는데이터를통합한조직전체의 DB를기술한것으로 DB에저장되는데이터와그들간의관계를표현한것 통합관점 내부스키마 - 내부단계, 내부스키마로구성, DB가물리적으로저장된형식물리적 - 물리적장치에서데이터가실제적으로저장되는방법을표현하저장구조는스키마 데이터독립성 독립성 내용 특징 - 개념스키마가변경되어도외부스키마에는영향을미논리적 - 사용자특성에맞는변경가능치지않도록지원하는것독립성 - 통합구조변경가능 - 논리적구조가변경되어도응용프로그램에영향없음 물리적독립성 - 내부스키마가변경되어도외부 / 개념스키마는영향을받지않도록지원하는것 - 저장장치의구조변경은응용프로그램과개념스키마에영향없음 - 물리적구조영향없이개념구조변경가능 - 개념구조영향없이물리적인구조변경가능 * 논리적인데이터독립성은외부의변경에도개념스키마가변하지않는특징을가진다. 좋은데이터모델의요소 1) 완전성 (Completeness) - 업무에필요로하는모든데이터가데이터모델에정의되어있어야한다. 2) 중복배제 (Non-Redundancy) - 하나의데이터베이스내에동일한사실은반드시한번만기록하여야한다. 3) 업무규칙 (Business Rules) - 데이터모델링과정에서도출되고규명되는수많은업무규칙을데이터모델에표현하고이를해당데이터모델을활용하는모든사용자가공유할수있도록제공하는것. 4) 데이터재사용 (Data Reusability) - 데이터의재사용성을향상시키고자한다면데이터통합성과독립성에대해서충분히고려해야한다. 5) 의사소통 (Communication) - 업무규칙들은해당정보시스템을운용, 관리하는많은관련자들이설계자가정의한업무규칙들을동일한의미로받아들이고정보시스템을활용할수있게하는역할을하게된다. 데이터모델이진정한의사소통의도구로서의역할을하게된다. 6) 통합성 (Integration) - 가장바람직한데이터구조의형태는동일한데이터는조직의전체에서한번만정의되고이를여러다른영역에서참조, 활용하는것이다.
엔터티 엔터티의개념 - 엔터티는명사에해당한다. - 엔터티는업무상관리가필요한관심사에해당한다. - 엔터티는저장이되기위한어떤것 (Thing) 이다. 엔터티의특징 1) 업무에서필요로하는정보 2) 식별이가능해야함 3) 인스턴스의집합 4) 업무프로세스에의해사용 5) 속성을포함 6) 관계의존재 엔터티의분류 1) 유무형에따른분류 - 유형엔티티 : 물리적인형태가있고안정적이며지속적으로활용되는엔티티로업무로부터엔터티를구분하기가가장용이하다. - 개념엔티티 : 물리적인형태는존재하지않고관리해야할개념적정보로구분이되는엔터티 - 사건엔터티 : 업무를수행함에따라발생되는엔터티 2) 발생시점에따른분류 - 기본엔터티 : 그업무에원래존재하는정보로서다른엔터티와관계에의해생성되지않고독립적으로생성이가능하고자신은타엔터티의부모역할을하게된다. - 중심엔터티 : 기본엔터티로부터발생되고그업무에있어서중심적인역할을한다. 다른엔터티와의관계를통해행위엔터티를생성한다. - 행위엔터티 : 두개이상의부모엔터티로부터발생되고자주내용이바뀌거나데이터량이증가된다.
속성 속성의개념 : 업무에서필요, 의미상미분리, 인스턴스의구성요소 엔터티, 인스턴스, 속성, 속성값의관계엔터티에는두개이상의인스턴스가존재한다. 인스턴스는속성의집합이다. 속성은한개의속성값만가질수있다. 속성의분류 1) 기본속성 2) 설계속성 ( 코드성속성 ) 3) 파생속성 ( 계산된값 ) 도메인 - 각속성은가질수있는값의범위가있는데이를그속성의도메인이라한다. 관계 관계의페어링 - 관계는엔터티안에인스턴스가개별적으로관계를가지는것 ( 패어링 ) 이고이것의집합을관계로표현한다. * 인스턴스의관계가패어링 --> 패어링의집합은관계 (Relation) * 엔터티의단수형은인스턴스, 관계의단수형은페어링 식별자 주식별자의특징 특징내용비고주식별자에의해엔터티내에모든인스턴스들을 ex) 사원번호가주식별자고모든직원유일성유일하게구분함들에대해개인별로고유하게부여됨 ex) 사원번호만으로도고유한구조인 최소성 불변성 존재성 주식별자를구성하는속성의수는유일성을만족 하는최소의수가되어야함 주식별자가한번특정엔터티에지정되면그식 별자값은변하지않아야함 주식별자가지정되면반드시데이터값이존재 (Null 안됨 ) 데사원분류코드 + 사원번호로식별자가 구성될경우부적절한주식별자구조 임 ex) 사원번호의값이변한다는의미는 이전기록이말소되고새로운기록이 발생되는개념임 ex) 사원번호없는회사직원은있을수 없음
식별자분류및표기법 분류 식별자 설명 대표성여부 주식별자엔터티내에서각어커런스를구분할수있는구분자이며, 타엔터티와참조관계를연결할수있는식별자보조식별자엔터티내에서각어커런스를구분할수있는구분자이나대표성을가지지못해참조관계연결을못함 스스로 내부식별자 엔터티내부에서스스로만들어지는식별자 생성여부 외부식별자 타엔터티와의관계를통해타엔터티로부터받아오는식별자 속성의수 단일식별자하나의속성으로구성된식별자복합식별자둘이상의속성으로구성된식별자 본질식별자 업무에의해만들어지는식별자 대체여부업무적으로만들어지지는않지만원조식별자가복잡한구성을인조식별자가지고있기때문에인위적으로만든식별자 식별자와비식별자관계비교 항목 식별자관계 비식별자관계 목적 강한연결관계표현 약한연결관계표현 자식 주식별자 자식주식별자의구성에포함됨 자식일반속성에포함됨 영향 표기법 실선 점선 - 약한종속관계 연결 고려사항 식별자관계 - 반드시부모엔터티종속 - 자식주식별자구성에부모주식별자포 함필요 - 상속받은주식별자속성을타엔터티에 이전필요 - 자식주식별자구성을독립적으로구성 - 자식주식별자구성에부모주식별자부분 필요 - 상속받은주식별자속성을타엔터티에차단 필요 - 부모쪽의관계참여가선택관계 자식엔터티의주식별자로부모의주식별자가상속이되는경우를식별자관계라고한다. 비식별자관계 부모엔터티로부터속성을받았지만자식엔터티의주식별자로사용하지않고일반적인속성으 로만사용하는경우를비식별자관계라고한다. 비식별자관계설정고려사항 관계분석 -> 관계의강 / 약분석 ( 약 ) -> 자식테이블독립 PK 필요 ( 필요 ) -> SQL 복잡도증가 ( 비식별자 )
정규화와성능 성능데이터모델링고려사항 1) 정규화 2) 용량산정 3) 트랜잭션유형파악 4) 반정규화 5) 이력모델조정, PK/FK조정, 슈퍼타입 / 서브타입조정 6) 성능관점데이터모델검증 정규화를수행하면데이터처리 (DML) 성능향상, 조회는향상또는저하될수있음. 반정규화된테이블의성능저하사례에대한예시숙지 1)
2) 3)
4) 함수적종속성 : 데이터들이어떤기준값에의해종속되는현상을지칭하는것이다. 이때기준값을결정자라고하고종속되는값을종속자라고한다.
반정규화와성능 반정규화의장점 : 일반적으로조회성능이향상됨. 반정규화절차 1. 반정규화대상조사 2. 다른방법유도검토 3. 반정규화적용 범위처리빈도수조사뷰 (VIEW) 테이블테이블반정규화대량의범위처리조사클러스터링적용 ==> ==> 속성의반정규화통계성프로세스조사인덱스의조정관계의반정규화테이블조인개수응용애플리케이션 ** 모든반정규화는무결성을깬다? -->X ( 관계의반정규화는무결성을깨지않는다.) 반정규화기법 1) 테이블반정규화 기법분류 기법 내용 1:1 관계테이블병합 1:1 관계통합 테이블병합 1:M 관계테이블병합 1:M 관계통합 슈퍼 / 서브타입테이블병합 슈퍼 / 서브관계통합 수직분할 칼럼단위의테이블을디스크 I/O를분산처리하기위해테이블을 1:1로분리하여성능향상 테이블분할 수평분할 로우단위로집중발생되는트랜잭션을분석하여디스크I/O 및데이터접근의효율성을높여성능을향상하기위해로우단위로테이블을쪼갬 중복테이블추가 다른업무이거나서버가다른경우동일한테이블구조를중복하여원격조인을제거하여성능을향상 통계테이블추가 SUM, AVG 등을미리수행하여계산해둠으로써조회시성능을향상 테이블추가 이력테이블추가 이력테이블중에서마스터테이블에존재하는레코드를중복하여이력테이블에존재하는방법은반정규화의유형 부분테이블추가 하나의테이블의전체칼럼중자주이용하는집중화된칼럼들이있을때디스크 I/O를줄이기위해해당칼럼등을모아놓은별도의반정규화된테이블을생성
2) 칼럼반정규화 반정규화기법중복칼럼추가파생칼럼추가이력테이블칼럼추가 PK에의한칼럼추가응용시스템오작동을위한칼럼추가 내용조인에의해처리할때성능저하를예방하기위해, 즉조인을감소시키기위해중복된칼럼을위치시킴트랜잭션이처리되는시점에계산에의해발생되는성능저하를예방하기위해미리값을계산하여칼럼에보관함. Derived Column 대량의이력데이터를처리할때불특정날조회나최근값을조회할때나타 날수있는성능저하를예방하기위해애력테이블에기능성칼럼을추가함복합의미를갖는 PK를단일속성으로구성하였을경우발생됨. 단일 PK안에서특정값을별도로조회하는경우성능저하가발생될수있음. 이때 PK안에데이터가존재하지만성능향상을위해일반속성으로포함하는방법업무적으로는의미가없지만사용자가데이터처리를하다가잘못처리하여원래값으로복구하기를원하는경우이전데이터를임시적으로중복하여보관하는기법. 3) 관계반정규화 반정규화기법 중복관계추가 내용데이터를처리하기위한여러경로를거쳐조인이가능하지만이때발생할수있는성능저하를예방하기위해추가적인관계를맺는방법이관계의반정규화임. 대량데이터에따른성능 대량데이터일경우테이블의수평, 수직분할로모델링해야한다는내용으로수평과수직분할의의미를파악해야함. 수평분할 : ROW 단위로분할하여 I/O 경감수직분할 : Column 단위로분할하여 I/O 경감 데이터베이스구조와성능 슈퍼 / 서브타입모델의성능고려이해 - 공통부분을슈퍼타입으로모델링하고공통으로부터상속받아다른엔터티와차이가있는속성에대해서는별도의서브엔터티로구분하여업무의모습을정확하게표현하면서물리적인데이터모델로변환을할때선택의폭을넓힐수있는장점이있다. 슈퍼 / 서브타입의데이터모델의변환
슈퍼 / 서브타입의데이터모델변환기술 1) 개별로발생되는트랜잭션에대해서는개별테이블로구성 2) 슈퍼타입 + 서브타입에대해발생되는트랜잭션에대해서는슈퍼타입 + 서브타입으로테이블구성 3) 전체를하나로묶어트랜잭션이발생할때는하나의테이블로구성 슈퍼 / 서브타입데이터모델의변환타입비교 구분 OneToOne Type Plus Type Single Type 특징 개별테이블유지 슈퍼 + 서브타입테이블 하나의테이블 확장성 우수함 보통 나쁨 조인성능 나쁨 나쁨 우수함 I/O량성능 좋음 좋음 나쁨 관리용이성 좋지않음 좋지않음 좋음 트랜잭션유형에 개별테이블로접근이 슈퍼 + 서브형식으로 전체를일괄적으로처리하는 따른선택방법 많은경우선택 데이터를처리하는경우선택 경우선택 인덱스특성을고려한 PK/FK 데이터베이스성능향상 1) PK : 순서중요 2) FK : FK 컬럼의인덱스컬럼화필요 분산데이터베이스와성능 분산데이터베이스의투명성 1) 분할투명성 ( 단편화 ) : 하나의논리적 Relation이여러단편으로분할되어각단편의사본이여러 site에저장 2) 위치투명성 : 사용하려는데이터의저장장소명시불필요. 위치정보가 System Catalog 에유지되어야함. 3) 지역사상투명성 : 지역DBMS와물리적 DB사이의 Mapping 보장. 각지역시스템이름과무관한이름사용가능 4) 중복투명성 : DB 객체가여러 site에중복되어있는지알필요가없는성질 5) 장애투명성 : 구성요소 (DBMS, Computer) 의장애에무관한 Transaction의원자성유지 6) 병행투명성 : 다수 Transaction 동시수행시결과의일관성유지, Time Stamp, 분산 2 단계 Locking을이용구현 분산데이터베이스의장단점 장점 - 지역자치성, 점증적시스템용량확장 - 신뢰성과가용성 - 효용성과융통성 - 빠른응답속도와통신비용절감 - 데이터의가용성과신뢰성증가 - 시스템규모의적절한조절 - 각지역사용자의요구수용증대 단점 - 소프트웨어개발비용 - 오류의잠재성증대 - 처리비용의증대 - 설계, 관리의복잡성과비용 - 불규칙한응답속도 - 통제의어려움 - 데이터무결성에대한위협
분산데이터베이스의적용기법 1) 테이블위치분산 2) 테이블분할분산 ( 수평분할, 수직분할 ) 3) 테이블복제분산 ( 부분복제, 광역복제 ) 4) 테이블요약분산 ( 분석요약, 통합요약 )
2 과목 SQL 기본및활용 관계형데이터베이스개요 SQL의분류이해 명령어의종류 명령어 설명 데이터베이스에들어있는데이터를조회하거나검색하기위 SELECT 데이터조작어한명령어를말하는것으로 RETRIEVE 라고도함 (DML : 데이터베이스의테이블에들어있는데이터에변형을가하는 INSERT Data Manipulation 종류의명령어들을말한다. 예를들어데이터를테이블에새 Language) UPDATE 로운행을집어넣거나, 원하지않는데이터를삭제하거나수 DELETE 정하는것들의명령어들을 DML이라고부른다. 데이터정의어 CREATE 테이블과같은데이터구조를정의하는데사용되는명령어들 (DDL : ALTER 로그러한구조를생성하거나변경하거나삭제하거나이름을 Data Definition DROP 바꾸는데이터구조와관련된명령어들을 DDL이라고부른다. Language) RENAME 데이터제어어 (DCL : Data Control GRANT REVOKE 데이터베이스에접근하고객체들을사용하도록권한을주고회수하는명령어를 DCL이라고부른다. Language) 트랜잭션제어어 (TCL : COMMIT 논리적인작업의단위를묶어서 DML에의해조작된결과를 T r a n s a c t i o n Control Language) ROLLBACK 작업단위 ( 트랜잭션 ) 별로제어하는명령어를말한다. 테이블의구조
DDL(DATA DEFINITION LANGUAGE) 테이블생성시주의할규칙 - 테이블명은의미할수있는적절한이름을사용 ( 가능한단수형 ) - 테이블명은다른테이블의이름과중복되지않아야함 - 테이블내에서는칼럼명이중복될수없음 - 테이블이름을지정하고각칼럼은괄호 () 로묶어지정 - 각칼럼들은콤마, 로구분하고테이블생성문끝에는세미콜론 ; 으로끝 - 칼럼은다른테이블도고려하여일관성있게사용 ( 데이터표준화관점 ) - 칼럼뒤에데이터유형꼭지정해야함 - 테이블명과칼럼명은반드시문자로시작해야함, 벤더별로길이에한계존재 - 벤더에서사전에정의한예약어는쓸수없음 - A-Z, a-z, 0-9, _, $, # 문자만허용 제약조건의종류 구분 PRIMARY KEY ( 기본키 ) UNIQUE & NOT NULL UNIQUE KEY ( 고유키 ) NULL 허용 NOT NULL CHECK FOREIGN KEY ( 왜래키 ) 설명 - 테이블에저장된행데이터를고유하게식별하기위한기본키. - 하나의테이블에하나의기본키제약만정의함. - 기본키제약을정의하면 DBMS가자동으로 UNIQUE 인덱스를생성하며, 기본키를구성하는칼럼에는 NULL 불가 - 기본키제약 = 고유키제약 & NOT NULL 제약 - 테이블에저장된행데이터를고유하게식별하기위한고유키정의 - NULL은고유키제약의대상이아니므로 NULL값을가진행이여러개가있어도고유키제약이위반되지않음. - NULL값의입력을금지함 - 디폴트상태에서는모든칼럼에서 NULL을허가하지만, 이제약을지정함으로써해당칼럼은입력필수가됨 - NOT NULL을 CHECK의일부분으로이해할수도있음 - 입력할수있는범위등을제한함 - CHECK 제약으로는 TRUE or FALSE로평가할수있는논리식지정등이있음 - 관계형데이터베이스에서테이블간의관계를정의하기위해기본키를다른테이블의외래키로복사하는경우생성됨 - 외래키지정시참조무결성제약옵션을선택할수있음 ** CTAS 의경우 NOT NULL 만복제, 나머지제약조건은복제되지않음 ** 각종 DDL 명령어에대해서는어떤종류가있는지만이해하면됨
DROP, TRUNCATE ** DROP TABLE의경우는테이블자체가없어지기때문에테이블구조를확인할수없다. ** TRUNCATE TABLE의경우는테이블구조는그대로유지한채데이터만전부삭제하는기능이다. TRUNCATE, DELETE ** 데이터전체데이터를삭제하는경우시스템활용측면에서 DELETE TABLE 보다는 TRUNCATE TABLE을권고한다. ** TRUNCATE TABLE의경우정상적인복구가불가능하다. DML(DATA MANIPULATION LANGUAGE) SELECT - ALL : Default 옵션이므로별도로표시하지않아도됨 ( 중복된데이터가있어도모두출력 ) - DISTINCT : 중복된데이터가있는경우 1건으로처리해서출력함. - SELECT에서문자및날짜데이터는좌측정렬, 숫자데이터는우측정렬임. ALIAS - 칼럼명바로뒤에온다 - 칼럼명과 ALIAS 사이에 AS, as 키워드를사용할수있음 (option) - 는 alias가공백, 특수문자를포함할경우와대소문자구분이필요할경우사용됨. 합성 (CONCATENATION) 연산자 - 문자와문자를연결하는경우 2개의수직바 ( ) 에의해이루어짐 (Oracle) - 문자와문자를연결하는경우 + 표시에의해이루어짐 (SQL Server) - 두벤더모두공통적으로 CONCAT(string1, string2) 함수를사용함 - 칼럼과문자또는다른칼럼과연결시킴 - 문자표현식의결과에의해새로운칼럼을생성 TCL(TRANSACTION CONTROL LANGUAGE) 트랜잭션의특성 특성원자성 (atomicity) 일관성 (consistency) 고립성 (isolation) 지속성 (durability) 설명트랜잭션에서정의된연산들은모두성공적으로실행되던지아니면전혀실행되지않은상태로남아있어야한다. (all or nothing) 트랜잭션이실행되기전의데이터베이스내용이잘못되어있지않다면트랜잭션이실행된이후에도데이터베이스의내용에잘못이있으면안된다. 트랜잭션이실행되는도중에다른트랜잭션의영향을받아잘못된결과를만들어서는안된다. 트랜잭션이성공적으로수행되면그트랜잭션이갱신한데이터베이스의내용은영구적으로저장된다.
COMMIT - COMMIT 명령어는 INSERT, UPDATE, DELETE 문장을사용한후에변경작업이완료되 었음을데이터베이스에알려주기위해사용한다. AUTO COMMIT 1) SQL SERVER의기본방식 2) DML, DDL을수행핼때마다 DBMS가트랜잭션을컨트롤하는방식 3) 명령어가수행되면자동으로 COMMIT 수행, 오류가발생하면자동으로 ROLLBACK 수행 암시적트랜잭션 1) ORACLE과같은방식으로처리됨 2) 트랜잭션시작은 DBMS가처리하고트랜잭션끝은사용자가명시적으로 COMMIT, ROLLBACK으로처리함 3) 인스턴스단위, 세션단위로설정할수있음. 명시적트랜잭션 1) 트랜잭션의시작과끝을모두사용자가명시적으로지정하는방식 2) BEGIN TRANSACTION으로트랜잭션을시작하고 COMMIT TRANSACTION 또는 ROLLBACK TRANSACTION으로트랜잭션을종료한다. 3) ROLLBACK 구문을만나면최초의 BEGIN TRANSACTION 시점까지모두 ROLLBACK이수행된다. **ORACLE 은 NOT AUTO COMMIT, SQL SERVER 는 AUTO COMMIT 이 DEFAULT SAVEPOINT 의이해, (ROLLBACK 과 SAVEPOINT)
WHERE 절 문자유형비교방법 구분 비교연산자의 양쪽이모두 CHAR 유형 타입인경우 비교연산자의 어느한쪽이 VARCHAR 유형 타임인경우 상수값과 비교할경우 비교방법길이가서로다른 CHAR형타입이면작은쪽에 SPACE를추가하여길이 를같게한후에비교서로다른문자가나올때까지비교달라진첫번째문자의값에따라크기결정 BLANK의수만다르다면서로같은값으로결정서로다른문자가나올때까지비교길이가다르다면짧은것이끝날때까지만비교한후길이가긴것이크다 고판단길이가같고다른것이없다면같다고판단 VARCHAR는 NOT NULL까지길이를말함상수쪽을변수타입과동일하게바꾸고비교변수쪽이 CHAR 유형타입이면위의 CHAR 유형타입의경우를적용함변수쪽이 VARCHAR 유형타입이면위의 VARCHAR 유형타입의경우를 적용함 와일드카드의종류 와일드카드설명 % 0개이상의어떤문자 _ 1개인단일문자 BETWEEN A AND B - A 이상 B 이하를의미 OR연산의의미이해 - 위치에따라 OR 연산의의미가달라짐 OR을기준으로앞과뒤가나뉨 WHERE 소속팀 = 삼성블루윙즈 OR 소속팀 = 전남드래곤즈 AND 포지션 = 미드필더 (MF) AND 키 >= 170 센티미터 AND 키 <= 180 센티미터 조건에맞게올바르게수정 WHERE ( 소속팀 = 삼성블루윙즈 OR 소속팀 = 전남드래곤즈 ) AND 포지션 = 미드필더 (MF) AND 키 >= 170 센티미터 AND 키 <= 180 센티미터
함수
변환형함수 - 특정데이터타입을다양한형식으로출력하고싶은경우데이터유형변환의종류종류설명명시적 (Explicit) 데이터변환형함수로데이터유형을변환하도록명시해주는경우데이터유형변환암시적 (Implicit) 데이터베이스가자동으로데이터유형을변환하여계산하는경우데이터유형변환 ** 암시적데이터유형변환의경우성능저하가발생할수있고에러를발생할가능성이높 아명시적데이터유형변환방법을사용하는것이바람직함 단일행 NULL 관련함수 일반형함수 NVL( 표현식1, 표현식2) ISNULL( 표현식1, 표현식2) NULLIF( 표현식1, 표현식2) COALESCE( 표현식1, 표현식2,...) 함수설명표현식 1의결과값이 NULL이면표현식 2값출력표현식1과표현식2의결과데이터타입이같아야함 NULL관련가장많이사용되는함수표현식1이표현식2와같으면 NULL, 같지않으면표현식1 리턴임의의개수표현식에서 NULL이아닌최초의표현식나타냄모든표현식이 NULL이라면 NULL 리턴 ** NULL 연산퀴즈로풀어보기 GROUP BY, HAVING 절 GROUP BY절과 HAVING절의특성 - GROUP BY절을통해소그룹별기준을정한후, SELECT 절에집계함수를사용함. - 집계함수통계정보는 NULL값을가진행을제외하고수행함 - GROUP BY 절에서는 SELECT 절과달리 ALIAS를사용할수없음 - 집계함수는 WHERE 절에는올수없음 ( 집계함수를사용할수있는 GROUP BY 절보다 WHERE 절이먼저수행됨 ) - WHERE 절은전체데이터를 GROUP으로나누기전에행들을미리제거시킴 - HAVING 절은 GROUP BY 절의기준항목이나소그룹의집계함수를이용한조건을표시할수있음 - GROUP BY절에의한소그룹별로만들어진집계데이터중 HAVING 절에서제한조건을두어조건을만족하는내용만출력 - HAVING절은일반적으로 GROUP BY 절뒤에위치함 ** 예제를직접해봐야함.
ORDER BY 절 ORDER BY 절의특징 - 기본적인정렬순서는오름차순 (ASC) - 숫자형데이터타입은오름차순정렬했을경우가장작은값부터출력 - 날짜형데이터타입은오름차순정렬했을경우날짜값이가장빠른값이먼저출력됨 - ORACLE에서는 NULL 값을가장큰값으로간주하여오름차순시가장마지막, 내림차순시가장먼저위치 - SQL Server에서는 NULL값을가장작은값으로간주하여오름차순시가장먼저, 내림차순시가장마지막에위치 SELECT 문장실행순서 5. SELECT 칼럼명 [ALIAS명] 1. FROM 테이블명 2. WHERE 조건식 3. GROUP BY 칼럼이나표현식 4. HAVING 그룹조건식 6. ORDER BY 칼럼이나표현식 1) 발췌대상테이블을참조한다 (FROM) 2) 발췌대상데이터가아닌것을제거한다 (WHERE) 3) 행들을소그룹화한다 (GROUP BY) 4) 그룹핑된값의조건에맞는것만을출력한다 (HAVING) 5) 데이터값을출력 / 계산한다 (SELECT) 6) 데이터를정렬한다 (ORDER BY) 조인 EQUI JOIN - EQUI JOIN은두개테이블간의칼럼값들이서로정확하게일치하는경우에사용되는방법으로대부분 PK<->FK 관계를기반으로한다. NON EQUI JOIN - NON EQUI JOIN은두개의테이블간에칼럼값들이서로정확하게일치하지않는경우에사용된다. NON EQUI JOIN의경우에는 = 연산자가아닌다른 (Between, >, >=, <. <= 등 ) 연산자들을사용하여 JOIN을수행하는것이다. ** EQUI JOIN, NON EQUI JOIN 예제직접해보기. 표준조인 집합연산자의이해 Union : UNION 기능 ==> 합집합 ( 중복이없으면 UNION ALL을사용하는것을권고 ) Intersection : INTERSECT 기능 ==> 교집합 Difference : EXCEPT(ORACLE은 MINUS) ==> 차집합 Product : CROSS JOIN 기능 ==> 곱집합
순수관계연산자 SELECT 연산 : WHERE 절로구현 PROJECT 연산 : SELECT 절로구현 (NATURAL) JOIN 연산 : 다양한 JOIN 기능 (WHERE절의 INNER JOIN과함께 FROM 절의 NATURAL JOIN, INNER JOIN, OUTER JOIN, USING조건절, ON 조건절등으로가장다양하게발전됨 ) DIVIDE : 현재사용하지않음. ANSI SQL의 JOIN INNER JOIN (NATURAL JOIN, USING 조건절, ON 조건절 ) CROSS JOIN OUTER JOIN INNER JOIN 1) NATURAL JOIN - 두테이블간동일한이름을갖는모든컬럼에대해 EQUI JOIN을수행 - USING, ON절정의불가 - SQL SERVER 미지원 2) USING 조건절 - 두테이블간동일이름의컬럼만 EQUI JOIN 수행 - USING 조건절에서는접두사, ALIAS 사용불가 - SQL SERVER 미지원 3) ON 조건절 - 두테이블간특정컬럼으로 EQUI JOIN 수행 - ON 조건시 AND 조건추가가능 - WHERE 절과의미구분필요 ** NATURAL JOIN은 JOIN에사용된같은이름의칼럼을하나로처리하지만, INNER JOIN은별개의칼럼으로표시한다. ** FROM 절의 USING 조건절을이용하면같은이름을가진칼럼들중에서원하는칼럼에대해서만선택적으로 EQUI JOIN을할수가있다. ** 이름이다른칼럼명을 JOIN 조건으로사용하거나, JOIN 칼럼을명시하기위해서는 ON 조건절을사용한다.
CROSS JOIN 두테이블의 CARTESIAN PRODUCT 임. ( 곱조인 ) OUTER JOIN : LEFT(RIGHT) OUTER JOIN, FULL OUTER JOIN 에대한이해필요, 각조인 종류에따른데이터건수파악필요 1) INNRR JOIN : 2건 2) LEFT OUTER JOIN : 4건 3) RIGHT OUTER JOIN : 3건 4) FULL OUTER JOIN : 5건 5) CROSS JOIN : 12건 집합연산자 집합연산자 UNION UNION ALL INTERSECT EXCEPT 연산자의미여러개의 SQL문의결과에대한합집합중복된행은하나의행으로만듬여러개의 SQL문의결과에대한합집합중복된행도그대로결과로표시단순히결과만합쳐놓은것여러질의결과가상호배타적일때많이사용함 SQL문의결과가서로중복되지않는경우 UNION과결과가동일함 ( 정렬순서차이 ) 여러개의 SQL문의결과에대한교집합 중복된행은하나로만듬앞 SQL 문의결과에서뒤SQL문의결과에대한차집합. 중복된행은하나의행으로만듬. 일부데이터베이스는 MINUS 사용 **UNION ALL 을제외한모든집합연산자는 SORTING 을수행함
서브쿼리서브쿼리의용어정리 - SELECT 절의서브쿼리 : SCALAR SUB QUERY - FROM 절에있는서브쿼리 : INLINE VIEW 서브쿼리사용시주의할점 1) 서브쿼리를괄호호감싸서사용한다. 2) 서브쿼리는단일행또는복수행비교연산자와함께사용가능함. 3) 서브쿼리에서는 ORDER BY를사용하지못한다. ** ORDER BY절은 SELECT절에서오직한개만올수있어서메인쿼리의마지막문장에위치해야함 서브쿼리가 SQL 문에서사용이가능한곳 SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT 문의 VALUES, UPDATE 문의 SET 절 동작하는방식에따른서브쿼리분류 서브쿼리종류 Un-Correlated( 비연관 ) 서브쿼리 Correlated( 연관 ) 서브쿼리 설명서브쿼리가메인쿼리칼럼을가지고있는형태의서브쿼리메인쿼리에값 ( 서브쿼리가실행된결과 ) 를제공하기위한목적으로주로사용서브쿼리가메인쿼리칼럼을가지고있는형태의서브쿼리일반적으로메인쿼리가먼저수행되어읽혀진데이터를서브쿼리에서조건이맞는지확인하고자할때주로사용 반환되는데이터의형태에따른서브쿼리분류 서브쿼리종류 Single Row 서브쿼리 ( 단일행서브쿼리 ) Multi Row 서브쿼리 ( 다중행서브쿼리 ) 설명서브쿼리의실행결과가항상 1건이하인서브쿼리단일행서브쿼리는단일행비교연산자와함께사용됨 ( =, <, <=, >, >=, <> ) 서브쿼리의실행결과가여러건인서브쿼리다중행서브쿼리는다중행비교연산자와함께사용된다. (IN, ALL, ANY, SOME, EXISTS) 그룹함수 ROLLUP CUBE GROUPING SETS ROLLUP, CUBE, GROUPING SET 함수를사용할때 SELECT 절에서 Grouping 함수로소계여부를판단가능 http://www.dbguide.net/db.db?cmd=view&boarduid=148204&boardconfiguid=9&catego ryuid=216&boardidx=135&boardstep=1