본문 바로가기

전체 글

(86)
2-5) GROUP BY 절과 HAVING 절 GROUP BY 절각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식GROUP BY 절에 그룹을 지정할 컬럼을 전달 (여러 개 전달 가능)그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 행을 제외하기!WHERE 절이 GROUP BY 절보다 먼저 수행되기 때문그룹에 대한 조건은 WHERE절에서 사용할 수 없음SELECT 절에 집계 함수를 사용하여 그룹 연산 결과 표현GROUP BY 절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음예) 원래 테이블의 10개 행 → GROUP BY로 3개로 요약됨 → GROUP BY 결과에 따른 집계 함수 (SUM 등)과 원래 테이블의 컬럼을 함께 출력 불가개수가 다르기 때문 ** 문법  예1) 부서별 (DEPARTM..
2-4) WHERE 절 WHERE 절테이블의 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶을 경우 사용여러 조건 동시 전달 가능 (AND와 OR로 조건 연결)NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용= 연산자로 조회 불가연산자를 사용하여 다양한 표현이 가능조건 전달 시 비교 대상의 데이터 타입 일치하는 것이 좋음예) EMP 테이블의 부서번호 컬럼의 데이터타입은 숫자인데 문자 상수로 비교 시 성능 문제 발생  ** 문법  ** 주의사항문자나 날짜 상수 표현 시 반드시 홑따옴표 사용 (다른 절에서도 동일 적용)예) 'SMITH' 등ORACLE은 문자 상수의 경우 대소문자를 구분MSSQL은 기본적으로 문자 상수의 대소문자를 구분하지 X 예1) 이름이 SMITH인 직원 조회 (조건절에 문자 상수 사용)..
2-3) 함수 함수 정의input value가 있을 경우 그에 맞는 output value를 출력해주는 객체input value와 output value의 관계를 정의한 객체from 절을 제외한 모든 절에서 사용 가능 함수 기능기본적인 쿼리문을 더욱 강력하게 해줌데이터의 계산을 수행개별 데이터의 항목을 수정표시할 날짜 및 숫자 형식을 지정열 데이터의 유형 (data type)을 변환 함수의 종류 (입력값의 수에 따라)단일행 함수 / 복수행 함수로 구분단일행 함수 : input과 output의 관계가 1:1복수행 함수 : 여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴그룹함수 또는 집계함수라고도 함  입/출력값의 타입에 따른 함수 분류 1. 문자형 함수문자열 결합, 추출, 삭제 등을 수행단일행 함수 형태ou..
2-2) SELECT 문 SQL 종류TRUNCATE는 구조 변경이 아니라 데이터 삭제이지만 바로 커밋되어 롤백이 불가능 ≫ DDL로 구분SELECT 문은 따로 SQL 종류 중 어디에도 속하지 않아서 SELECT 문을 위한 DQL 등장 SELECT 문 구조6개 절로 구성각 절의 순서대로 작성해야 함GROUP BY와 HAVING은 서로 바꿀 수 있지만 바꾸지 않는 게 좋음내부 파싱 (문법적 해석) 순서는 나열된 순서와는 다름FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY SELECT 절SELECT 문장을 사용하여 불러올 컬럼명, 연산 결과를 작성하는 절*를 사용하여 테이블 내 전체 컬럼명을 불러올 수 있음원하는 컬럼을 ,로 나열하여 작성 가능 (순서대로 출력)표현식이란 원래의 컬럼명을 ..
2-1) 관계형 데이터베이스 개요 데이터베이스 (Database)와 DBMS(DataBase Management System)데이터베이스 : 데이터의 집합, 꼭 형식을 갖추지 않아도 엑셀 파일을 모아 둔다면 그것 또한 데이터베이스임DBMS : 데이터를 효과적으로 관리하기 위한 시스템개인이 파일을 여러 개 묶어서 폴더에 보관하면 데이터를 찾고 관리하는데 많은 비용이 발생이를 보다 시스템적으로 작동하게 만든 시스템을 DBMS 라고 함ORACLE, MYSQL 등  관계형 데이터베이스 구성 요소계정 : 데이터의 접근 제한을 위한 여러 업무별/시스템별 계정이 존재테이블 : DBMS의 DB 안에서 데이터가 저장되는 형식스키마 : 테이블이 어떠한 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본적인 구조를 정의 테이블정의엑셀에서의 워크시..
1-10) 본질식별자 vs 인조식별자 식별자 구분 (대체 여부에 따라)본질식별자업무에 의해 만들어지는 식별자 (꼭 필요한 식별자)인조식별자인위적으로 만들어지는 식별자 (꼭 필요하지 않지만 관리의 편이성 등의 이유로 만들어지는 식별자)본질식별자가 복잡한 구성을 가질 때 인위적으로 생성주로 각 행을 구분하기 위한 기본키로 사용되며, 자동으로 증가하는 일련번호 같은 형태예) 주문과 주문 상세에 대한 엔티티 설계 과정주문이 들어오면 주문 엔티티에는 (주문번호 + 고객번호)를 저장, 이때 PK는 주문번호주문상세에는 각 주문별로 어떤 상품이, 언제, 몇 개 주문됐는지 등을 기록 주문상세 테이블 설계 시 다음과 같은 식별자를 고려할 수 있음 1. PK :  주문번호 + 상품번호주문을 하면 주문번호와 상품번호가 필요하므로 본질식별자 (주문번호 + 상품번호..
1-9) Null 속성의 이해 NULLDBMS에서 아직 정해지지 않은 값을 의미0과 빈문자열('')과는 다른 개념모델 설계 시 각 컬럼별로 NULL을 허용할지를 결정 (Nullable Column) NULL의 특성 1. NULL을 포함한 연산 결과는 항상 NULLNULL을 포함한 COMM과 SAL 과의 연산결과는 항상 NULL이 리턴됨0으로 처리해서 연산하고 싶다면 사전에 NULL을 치환하여 연산NVL(COMM, 0) : NULL인 COMM에 대해 0으로 처리 후 연산2. 집계함수는 NULL을 제외한 연산 결과 리턴SUM, AVG, MIN, MAX 등의 함수는 항상 NULL을 무시예1)SAL에는 NULL인 행이 없지만 COMM에는 10개의 NULL 행이 존재한다는 것을 알 수 있음예2)SUM, MIN, MAX 연산 결과도 모두 NUL..
1-8) 모델이 표현하는 트랜잭션의 이해 트랜잭션 (Transaction)하나의 연속적인 업무 단위트랜잭션에 의한 관계는 필수적인 관계 형태를 가짐하나의 트랜잭션에는 여러 SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음예) 계좌이체 : A 고객이 B 고객에게 100만원을 이체하려는 경우A 고객의 잔액이 100만원 이상인지 확인이상이면, A 고객 잔액을 -100 UPDATEB 고객 잔액에 +100 UPDATE이 때, 2번과 3번 과정이 동시에 수행되어야 함 ≫ 모두 성공하거나 모두 취소되어야 함 (ALL or Nothing)이런 특성을 갖는 연속적인 업무 단위를 트랜잭션이라고 함 ** 주의A 고객 잔액 차감과 B 고객 잔액 가산이 서로 독립적으로 발생하면 안됨각각의 INSERT 문으로 개발되면 안됨부분 COMMIT 불..