본문 바로가기

반응형

[DB]DataBase/[SQL]

(37)
[SQLD] GROUP BY, HAVING절 GROUP BY절각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식GROUP BY절에 그룹을 지정할 컬럼을 (여러 개) 전달만약 그룹 연산에서 제외할 대상이 있다면 미리 WHERE절에서 해당 행을 제외함WHERE절이 GROUP BY절보다 먼저 수행그룹에 대한 조건은 WHERE절에서 사용할 수 없음SELECT절에 집계 함수를 사용하여 그룹 연산 결과를 표현GROUP BY절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음HAVING절그룹 함수 결과를 조건으로 사용할 때 사용WHERE절을 사용하여 그룹을 제한할 수 없으므로 HAVING절에 전달HAVING절이 GROUP BY절 앞에 올 수는 있지만 뒤에 쓰는 것을 권장내부적 연산 순서가 SELECT절보다 먼저이므로 SE..
[SQLD] WHERE절 WHERE절테이블에 있는 데이터 중 원하는 조건에 맞는 데이터만 조회하고 싶은 경우 사용엑셀의 필터 기능과 유사여러 조건을 동시에 전달 가능AND, OR로 조건 연결NULL 조회 시 IS NULL / IS NOT NULL 연산자 사용= 연산자로 조회 불가연산자를 사용하여 다양한 표현 가능조건 전달 시 비교 대상의 데이터 타입이 일치하는 것이 좋음ex) 부서번호 컬럼의 데이터 타입은 숫자인데 문자 상수로 비교할 경우 성능 이슈가 발생할 수 있음문법IN 연산자포함 연산자로 여러 상수와 일치하는 조건 전달 시 사용상수를 괄호로 묶어서 동시에 전달 가능문자와 날짜의 경우 반드시 홀따옴표와 함께 사용IN 연산자를 사용하면 조건 대상과 연산자의 반복을 줄일 수 있음BETWEEN A AND B 연산자A 보다 크거나 ..
[SQLD] 함수 함수 정의input value가 있을 경우 그에 맞는 output value를 출력해주는 객체input value와 output value의 관계를 정의한 객체from절을 제외한 모든 절에서 사용 가능 함수 기능기본적인 쿼리문을 더 강력하게 함데이터의 계산을 수행함개별 데이터의 항목을 수정함표시할 날짜 및 숫자 형식을 지정함열 데이터의 유형(data type)을 변환함 함수 종류단일행 함수와 복수행 함수로 구분단일행 함수(Single-row Function)input과 output의 관계가 1:1복수행 함수(다중행 함수, Multi-row Function)여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴그룹함수 또는 집계함수라고도 함입/출력 값 타입에 따른 함수 분류문자형 함수문자열 결합, 추..
[SQLD] SELECT 문 SQL 종류 SQL은 기능에 따라 다음과 같이 구분함 SQL 종류 설명 SELECT문 SELECT문은 6개 절로 구성되며 각 절은 순서대로 작성해야 한다. (GROUP BY와 HAVING은 서로 바꿀 수 있지만 보통 GROUP BY 다음에 HAVING을 사용함) SELECT 문의 내부 파싱(문법적 해석) 순서는 나열된 순서와 다르다. FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY 순서로 실행된다. SELECT [ALL/DISTINCT] 보고 싶은 컬럼명, 보고 싶은 컬럼명, ... FROM 해당 컬럼들이 있는 테이블명 ; ALL: Default 옵션이므로 별도로 표시하지 않아도 된다. 중복 데이터가 있어도 모두 출력한다. DISTINCT: 중복 데이터가 있..
[SQLD] 관계형 데이터베이스 개요 데이터베이스와 DBMS 데이터는 어떤 것들의 기록 정보이며, 데이터를 모아 둔 것을 데이터베이스 (DataBase; DB)라고 한다. 즉 데이터베이스는 데이터의 집합이다. 컴퓨터의 저장 장치(하드디스크, SSD)도 넓은 의미에서 파일 시스템 형태의 데이터베이스라고 할 수 있다. 데이터베이스를 관리하는 시스템을 DBMS (DataBase Management System)이라고 한다. DBMS의 종류로는 대표적으로 오라클, MySQL, MS SQL Server등이 있고, SQL (Structured Query Language) 이라는 데이터베이스 조작 언어를 통해 관리된다. 데이터베이스는 설계, 운영, 저장 방식에 따라 여러 종류로 나뉜다. (관계형 데이터베이스, 계층형 데이터베이스, 객체 지향 데이터베이스..
[SQLD] 본질 식별자 vs. 인조식별자 식별자 구분 본질 식별자 업무에 의해 만들어지는 식별자 (꼭 필요한 식별자) 인조식별자 인위적으로 만들어지는 식별자 (꼭 필요하진 않지만 관리의 편의성 등으로 인해 인위적으로 만들어지는 식별자) 본질 식별자가 복잡한 구성을 가질 때 인위적으로 생성하는 식별자 주로 각 행을 구분하기 위한 기본키로 사용되며, 자동으로 증가하는 일련번호 형태 인조식별자 단점 중복 데이터 발생 데이터 품질 저하로 이어짐 불필요한 인덱스 생성 저장공간 낭비 및 DML(INSERT, UPDATE, DELETE) 성능 저하로 이어짐
[SQLD] Null 속성 NULL이란 DBMS에서 아직 정해지지 않은 값을 의미 모델 설계 시 각 컬럼별로 NULL을 허용할지 말지를 결정(Nullable Column) NULL의 연산 NULL 값과의 연산(+, -, *, / 등)은 NULL 값을 리턴 NULL 값과의 비교 연산(=, >, >=,
[SQLD] 트랜잭션 트랜잭션(Transaction) 의미 하나의 연속적인 업무 단위 트랜잭션에 의한 관계는 필수적인 관계 형태를 가짐 하나의 트랜잭션에는 여러 SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음 DML 명령어의 작업 단위 예) A 고객이 B 고객에게 100만원을 계좌이체한다. A 고객의 계좌 잔액이 100만원 이상인지 확인 맞다면 A 고객 계좌 잔액 -100 (UPDATE) B 고객 계좌 잔액 +100 (UPDATE) 이때 2, 3번이 동시에 수행되어야 하고, 모두 성공하거나 모두 실패해야 한다. (All or Nothing) 이러한 업무 특성의 연속적인 단위를 트랜잭션이라고 한다. 주의점 각 업무가 서로 독립적으로 발생하면 안됨 각각의 INSERT문으로 동작하면 안됨 부분 COMM..

반응형