sqld 요약
SQLD 3-7 ] GROUP BY, HAVING 절
SQLD 3-7 ] GROUP BY, HAVING 절
2016.02.24집계 함수 (Aggregate Function) - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수. - GROUP BY 절의 행들은 소그룹화 한다. - SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다. 집계함수명 ( [DISTINCT/ALL] 칼럼이나 표현식 ) DISTINCT 옵션과 ALL 옵션은 그 결과들 중복된거 한번만 표시할껀지 그냥 다 표시할껀지 선택하는거. 일반적으로 집계 함수 들은 GROUP BY 절과 같이 사용되지만 아래와 같이 테이블 전체가 하나의 그룹이 되는 경우에는GROUP BY 절 없이 단독으로도 사용 가능하다 SELECT COUNT(*) "전체 행수", COUNT(HEIGHT) "키 건수", MAX(HEIGHT) 최대키, MIN..
SQLD 3-6 ] 함수
SQLD 3-6 ] 함수
2016.02.23함수 (Function) - 벤더에서 제공하는 함수인 '내장 함수' 와 '사용자가 정의할 수 있는 함수' 로 나뉜다. - 내장 함수 에는 단일행함수 / 다중행 함수가 있다. - 단일행 함수 : 함수의 입력 값이 단일행 값이 입력되는 함수(Single-Row Function) - 다중행 함수 : 함수의 입력 값이 여러행 값이 입력되는 함수(Multi-Row Function) - 다중행 함수에는 또 집계함수 / 그룹함수 / 윈도우 함수 로 나뉠 수 있다. - 함수는 입력되는 값이 아무리 많아도 출력은 하나만 된다는 M:1 관계라는 중요한 특징을 갖고 있다. - 이번 3-6 함수 절에서는 내장 함수 안에 단일행 함수 이 하나만 다룹니다! 단일행 함수의 종류 단일행 함수의 특징 1. SEL..
SQLD 3-5 ] WHERE
SQLD 3-5 ] WHERE
2016.02.22WHERE - 테이블에 있는 모든 자료가 아닌 원하는 자료를 검색하기 위해 사용 - 두 개 이상의 테이블에 대한 조인 조건을 기술하거나 결과를 제한하기 위해 사용 - 조건절을 사용하지 않고 필요없고 많은 자료들을 요청하는 SQL 문장은 cpu,memory,resources 를 과다하게 사용한다 SELECT(ALL/DISTINCT) 칼럼명 (ALIAS명)FROM 테이블명WHERE 조건식; where 조건식에는 아래 내용으로 구성된다1. 칼럼명2. 비교 연산자3. 문자, 숫자, 표현식4. 비교 칼럼명(join 사용시) where PLAYER_NAME = 58; PLAYER_NAME (칼럼명)= (비교연산자)58 (문자, 숫자, 표현식) 연산자의 종류 연산자의 우선순위 ( ) -> NOT -..
SQLD 3-4 ] TCL (TRANSACTION CONTROL LANGUAGE)
SQLD 3-4 ] TCL (TRANSACTION CONTROL LANGUAGE)
2016.02.22트랜잭션 - 데이터베이스의 논리적 연산 단위. - 밀접히 관련되어서 분리될 수 없는 한 개 이상의 데이터베이스 조작(insert, update, delete, select for update) - 분할할 수 없는 최소의 단위 ALL or NOTHING - COMMIT : 올바르게 반영된 데이터를 데이터베이스에 반영. (한마디로 적용.) - ROLLBACK : 트랜잭션 시작 이전의 상태로 돌리는 것. - LOCK : 트랜잭션이 수행되는 동안 특정 데이터에 대해서 다른 트랜잭션이 동시에 접근하지 못하도록 제한하는 기법 한마디로. 트랜잭션이란 물리적이 아니라 논리적. 눈에 보이지 않고. 어떠한 작업의 단위이다.트랜잭션내에 묶인 작업들이 다 성공 하거나 아니면 하나라도 실패하면 전으로 돌려놔야한다.대..
SQLD 3-3 ] DML (DATA MANIPULATION LANGUAGE)
SQLD 3-3 ] DML (DATA MANIPULATION LANGUAGE)
2016.02.22INSERT - 테이블에 데이터를 입력.INSERT INTO 테이블명 (COLUMN_LIST)VALUES (COLUMN_LIST 에 넣을 VALUE_LIST);INSERT INTO 테이블명VALUES (전체 COLUMN에 넣을 VALUE_LIST);첫번째 꺼는 칼럼 하나 하나 선택해서 값을 넣는거두번째 꺼는 전체에 순서대로 값을 넣는거 정의되지 않은 컬럼은 디폴트로 NULL 이 지정된다.값에는 ' ' 로 문자를 써야하고, 숫자는 그냥 ' ' 없이 숫자만 쓴다. UPDATE - 칼럼 내용 수정.UPDATE 테이블명SET 칼럼명 = 바뀔 값;한 컬럼 세로로 쭉.. 다 수정된다 UPDATE PLAYERSET BACK_NO = 99; 하면. 플레이어 테이블에 있는 BACK_NO 칼럼의 전체의 값들이 99..
SQLD 3-2 ] DDL (DATA DEFINITION LANGUAGE)
SQLD 3-2 ] DDL (DATA DEFINITION LANGUAGE)
2016.02.18데이터 유형 대표적인 4가지 데이터 유형. 이 외에도 여러 다양한 유형이 있다. CHAR(4) 유형'AA' = 'AA ' VARCHAR2(4) 유형' AA' = 'AA' CREATE TABLE - 테이블 생성. CREATE TABLE 테이블이름 ( 칼럼명1 DATATYPE [DEFAULT 형식], 칼럼명2 DATATYPE [DEFAULT 형식]); 테이블 생성 시 유의사항 1. 객체를 의미할수 있는 이름. 2. 다른 테이블과 중복되면 안되고, 또 테이블 내에서 칼럼명이 서로 중복되면 안됨. 3. 테이블 이름을 지정하고 각 칼럼들은 괄호 () 로 묶어 지정한다 4. 각 칼럼들은 콤마(,) 로 구분되고, 테이블 생성문의 끝은 ; 으로 끝난다 5. 칼럼에 대해서는 다른테이블까지 고려해서 사용하자...
SQLD 3-1 ] 관계형 데이터베이스 개요
SQLD 3-1 ] 관계형 데이터베이스 개요
2016.02.18데이터베이스 - 일상적인 정보들을 모아 놓은 것 - 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 저장해놓은 것 데이터베이스의 발전 1960년대: 플로우차트 중심의 개발방법, 파일 구조의 데이터 저장, 관리 1970년대: 데이터베이스 관리 기법이 처음 태동되던 시기, 계층형 데이터베이스, 망형 데이터베이스 상용화 1980년대: 관계형 데이터베이스 상용화(Oracle, Sybase, DB2) 1990년대: 보다 향상된 기능으로 많은 관계형 데이터베이스들이 사용, 객체 관계형 데이터베이스로 발전 관계형 데이터베이스 - 기존 파일 시스템의 동시성 제한, 데이터 불일치성 문제 해결 - 정규화를 통한 합리적인 테이블 모델링을 통해 ANOMALY 현상을 제거하고 데이터 중복을 피한다. - ..
SQLD 2-6 ] 분산 데이터베이스와 성능
SQLD 2-6 ] 분산 데이터베이스와 성능
2016.02.15분산 데이터베이스 - 데이터베이스를 여러 군데로 위치시켜서 사용성/성능 등을 극대화 시킨 데이터베이스 - 논리적으로는 동일한 시스템에 속하지만, 물리적으로는 분산되어있는 데이터들의 모임. 분산 데이터베이스의 투명성 - 분산 데이터베이스 가 되려면 6가지 투명성 을 만족해야한다! 분할. 위치. 지역사상. 중복. 장애. 병행. 분산 데이터베이스의 적용 방법 및 장단점 1. 분산 데이터베이스 적용 방법 - 업무의 흐름을 보고 업무 구성에 따른 아키텍처 특징에 따라 구성. 단순히 분산환경에서 구축해보자! 라는게 목적이 아니라, 업무에 따라 이건 분산구조를 해야겠군. 설계하는 능력이.. 2. 분산 데이터베이스 장단점 * 데이터무결성 : 무결성 은 온전함 을 의미. 데이터 값..
SQLD 2-5 ] 데이터베이스 구조와 성능
SQLD 2-5 ] 데이터베이스 구조와 성능
2016.02.15슈퍼타입 / 서브타입 모델의 성능고려 방법 1. 슈퍼타입 / 서브타입 ? - 데이터의 특징을 공통점과 차이점의 특징을 고려하여 효과적으로 표현. 공통의 부분을 슈퍼타입, 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성은 서브엔터티로 구분. ( 학생 은 학부생과 대학원생 으로 나뉜다. 여기서 학생은 슈퍼타입, 학부생과 대학원생은 서브타입이라고 한다..) 예로 다음과 같다. 1. 트랜잭션은 항상 일괄로 처리하는데, 테이블은 개별로 유지되어 Union 연산에 의해 성능이 저하될 수 있다. 2. 트랜잭션은 항상 서브타입 개별로 처리하는데. 테이블은 또 하나로 되있어서.. 불필요하게 많은 양의 데이터를 읽어와야되서 성능이 저하되는 경우가 있다. 3. 트랜잭..
SQLD 2-4 ] 대량 데이터에 따른 성능
SQLD 2-4 ] 대량 데이터에 따른 성능
2016.02.14대량 데이터발생에 따른 테이블 분할 개요 - 대량의 데이터가 처리되는데 테이블에 성능이 저하되는 이유는 SQL 문장에서 데이터를 처리하기 위한 I/O 의 양이 증가하기 때문. 인덱스를 적절하게 쓰면.. I/O 는 줄일 수 있지만, 대량의 데이터가 하나의 테이블에 존재하게 되면.. 성능저하를 유발할수 있다. 로우체이닝 : 로우 길이가 너무 길어 데이터 블록 하나에 다 저장못하고 두 개 이상의 블록에 걸쳐 하나의 데이터가 저장로우마이그레이션 : 블록에서의 수정이 발생되면 수정된 데이터를 그 블록에 저장못하고 다른 블록의 빈공간에 저장하는거 한 테이블에 많은 수의 칼럼을 가지고 있는 경우 저렇게 많은 칼럼들을 다 가져오려면... 디스크 I/O가 엄청많이 일어나겠지해결법으로는 1:1 관계로..
SQLD 2-3 ] 반정규화와 성능
SQLD 2-3 ] 반정규화와 성능
2016.02.14반정규화 - 비 정규화는 아예 정규화 수행을 안한거고, 반 정규화는 정규화 된 엔터티, 속성, 관계 에 대해 성능향상 하려고 하는 데이터모델링의 기법 데이터를 중복하여 성능을 향상시키는 기법? 왜 이렇게까지 할까. 데이터 조회할 때 디스크 I/O량이 많아서 성능이 좀 저하될꺼같고 또 경로가 너무 멀어서 성능저하가 될때를 예상해서 반정규화를 사용한단다. ( 반정규화가 정규화 안한건줄 알았는데 아니였음. )( 아니 왜 일부러 중복해서 쓰는걸까.. 정규화를 하면 성능 향상시키긴 하는데 엔터티들 너무 많아지니까.. 적절히 반정규화 좀 섞어서 쓰라고 한다. 단 반정규화를 잘 못쓰면.. 오히려 성능이 저하되고, 노력비용이 많이든다!) 반정규화의 적용방법 - 난이도 높은 데이터 모델링의..
SQLD 2-2 ] 정규화와 성능
SQLD 2-2 ] 정규화와 성능
2016.02.14정규화를 통한 성능 향상 전략 - 정규화를 하면.. 중복성을 제거하고, 데이터가 관심사별로 나뉘어지기 때문에 성능이 향상된다. 좀 많이 나뉘어지니까.. 엔터티가 그만큼 많아질꺼고. SQL 문장에서 조인 할께 많아지니. 성능이 오히려 안좋아질수도..!! 반정규화된 테이블의 성능저하 사례반정규화(다음장에서 설명) 를 정규화를 해서 2개의 테이블로 만들었는데 예를들어 관서등록일자 가 2010년 이후를 조회하면. 왼쪽 반정규화 테이블에서는 납부자번호 만큼 누적된 데이터를 다 읽어야되고.. 오른쪽은 관서 수만큼만 존재하는 데이터를 읽기때문에.. 정규화를 하면 조회 성능이 저하된다는 고정관념은 틀렸다고 볼 수 있다. 다른 사례도 몇가지 있지만, 정규화를 하면 좋아진다는 설명들이다. 함수적 종..