DBMS(Database Management System)
- 데이터를 효과적으로 관리하기 위한 시스템
- 예) Oracle, MySQL
데이터베이스
- 데이터의 집합(그냥 모아져 있으면 그것을 데이터 베이스라 칭함, 형식 없어도)
관계형 데이터베이스의 구성
- 계정 : 데이터 접근 제한을 위한 업무별 계정이 있음 (권한 통제 목적/ 조회, 수정 등)
- 테이블 : DBMS의 DB안에서 데이터가 저장되는 형식
- 스키마 : 테이블의 구성을 표현하는 것
테이블 (물리 모델링 = 컬럼)
1. 정의 : 데이터가 저장되는 단위 (엑셀처럼 행과 열의 구성이 있는)
2. 특징
- 하나의 테이블은 반드시 하나의 계정이 소유해야함(무조건 한명이 있어야함)
- 테이블 관계는 일대일, 일대다, 다대다의 관계가 있음
- 테이블 중복할 수 없지만, 소유자가 다르면 가능함(소유자가 다르면 다른 테이블임)
- 입력/ 삭제는 무조건 행단위로 (가로로!)
SQL 이란
- 관계형 데이터베이스에서 데이터 조회, 조작, 관리기능을 명령하는 언어
- SQL 문법은 대소문자를 구분하지 않음
관계형 데이터베이스 특징
- 데이터 분류, 정렬, 탐색 속도가 빠름
- 신뢰성이 높음
- 기존의 작성된 스키마를 수정하기 어려움(구조변경 어려워)
- 데이터베이스 부하 분석 등 성능분석이 어려움(전문가 영역)
데이터 무결성
1. 정의
- 데이터의 결점이 없음(정확성, 일관성 있음)
2. 무결성의 정류
(1) 개체 무결성 : 기본키를 구성하는 컬럼은 null이나 중복값 가질 수 없음
(2) 참조 무결성 : 외래키(참조키)에는 null 가능한데, 찾조 테이블의 기본키 값과 동일해야함
(3) 도메인 무결성 : 컬림이 가지는 범위안에 데이터야 한다
(4) null 무결성 : null 허용안한다면 있으면 안됨
(5) 고유 무결성 : 중복되지 않아야함
(6) 키 무결성 : 하나의 관계에는 하나의 키가 존재햐야한다.
ERD
- 테이블간의 상관관계를 그림으로 표현한 것
- 엔터티, 관계, 속성(=컬럼)이 있으며 3가지의 구성으로 모두 표현 가능해야함
SQL의 종류 (기능에 따라 5가지로 나눔/ 때에 따라 4가지로 구분)
1. DDL (Data Definition Language)
- 데이터 정의하는 것/ 테이블의 구조를 변경하는것
- 종류 : CREATE, ALTER, DROP, TRUNCATE
> TRUNCATE : 구조는 유지하고 데이터 지우는 것(오토커밋이기 때문에 DDL임/ DML 아님)
2. DML (Data Manipulation Language)
- 데이터를 변경하는 것(조작어임)
-
- 종류 : INSERT, DELTE, UPDATE, MERGE
3. DCL (Data Contrl Language)
- 데이터 컨트롤 (권한 부여 등)
- 종류 : GRANT(부여), REVOKE(회수)
4. TCL (Transaction Control Language)
- Transaction을 구성하는 것(데이터 '확정', '취소')을 컨트롤 하는 것
- 종류 : COMMIT, ROLLBACK
5. DQL (Data Query Language)
- select는 어디에도 포함되지 않음
- 종류 : SELECT
- 6개 절로 구서됨
- 각 절의 순서대로 작성해야함
- 순서
> SELECT : *(전체) | 컬럼명 | 표현식
- *과 컬럼명은 동시에 사용 불가능함
- 컬럼명이나, 연산 결과를 작성하는 절
- 특징 : 별칭 지정 가능(출력할 이름일 지정하기 가능/ 대소문자를 구분하지 않아도 인식함)
- 출력할 임시 이름을 지정하는 것인데, 원본은 변경되지 않음
- 별칭에 한글 사용 가능/ 이미 존재하는 말(예약어/ 함수등)은 별칭으로 사용 불가
> FROM : 데이블명 또는 뷰명
- 여러개 전달 가능(컴마로 구분)
- 조인 조건 없이 테이블명만 나열하면 '카티시안 곱' 발생함 (주의!)
- 테이블도 별칭 선언가능(*** AS 쓰지 않음 / 주의!!)
- ORACLE : From절 생략 불가 (의미상 필요없는 경우 DUAL 테이블 선언)
- MSSQL : FROM절 생략 가능 (예, 오늘 날짜 조회시)
> WHERE : 조회 조건
- 조건에 맞는 데이터만 조회하고 싶을 경우 사용
- 여러 조건 동시에 전달 가능함(AND , or)
- 연산자를 사용하여 다양하게 표현 가능함
- 문자나 날짜 상후 표현시에는 반드시 홀따옴표 사용하기!
> GROUP BY : 그룹핑컬럼명
- 각행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 것
- 그룹에 대한 조건은 WHERE 사용 불가
- 그룹으로 묶으면 결과값은 요약되어서 나옴! (따라서, 요약못하는 값은 결과 안나옴)
> HAVING : 그룹핑 필터링 조건
- 그룹 함수 결과를 조건으로 사용할 때 사용
> ORDER BY : 정렬컬럼명
- 출력되는 행의 순서를 사용자가 변경하고자 때 사용
- 오름차순(ASC), 내림차순(DESC) / 기본은 오름차순
- 복합정렬이란, 먼저 정력한 값에 동일한 결과가 있을 경우 추가 정렬 순서를 제안하는 것
다음의 경우에는 쌍따옴표 사용하기
- 공백 넣고 싶을때 " "
- 별칭에 특수문자를 넣고 싶은 경우(단, 언더바 _는 제외)
- 별칭 그대로 전달할 경우(입력한 대소를 그대로 출력하고 싶을때)
1. 정의
- from절을 제외한 모든 절에서 사용 가능
2. 기능
- 데이터의 계산을 수행
- 개별 데이터의 항목을 수정
- 표시할 날짤 및 숫자 형식을 지정
- 열 데이터 유형 변환
3. 종류
(1) 단일행 : 1:1에 대응되는 하나의 값
(2) 복수행 : 다수가 들어가서 요약된 하나의 값
1. 정의
- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조할 경우 사용함
- FROM절에 조인할 테이블을 나열함
- N개의 테이블을 조인할 경우 최소 N-1개의 조인 조건이 필요함
2. 조인 종류
(1) 조건의 형태
- EQUI JOIN(등가 JOIN)
> 가장 많이 사용하는 조인 방법
> 조인 조건이 '='비교를 통해 같은 값을 비교해서 묶어주는 것
- NON EQUI JOIN
> 비교조건이 =이 아닌 것을 이야기함
> 특정 조건에 해당하는 값들을 조인할 경우
(2) 조인 결과
- INNER
> 조인 조건이 일치하는 행만 추출함(오라클은 조인 기본임)
> ANSI 표준 : From절에 명시한다(USING 이나 ON 조건을 필수적으로 사용)
- OUTER
> 조인조건에서 동일한 값이 없는 행도 반환할 때 사용함
> 테이블 기준 방향이 어디인지 설정해야함
(3) NATURAL JOIN
> 알아서 조인 컬럼값을 찾아서 조인을 해줌
(4) CROSS JOIN
> 카타시안곱의 출력이 되는 것들을 이야기함
> 조인 조건이 없는 경우 생성 가능한 모든 조건의 데이터들을 조합함
(5) SELF JOIN
> 한 테이블 내 각 행끼리 관계를 갖는 경우 사용하는 조인 기법
> 테이블명이 중복되기 때문에 반드시 테이블 별칭 사용이 필요함
참고자료1) 홍샘의 데이터랩 / 유튜브채널/ 강의 https://youtu.be/_f_WZYuNr7A?si=KN515CkxPQCg7MTi