SQL로 데이터베이스 다루기
01 RDBMS 이해
- 데이터 (Data)
- 관찰, 측정, 연구, 분석 등을 통하여 수집된 정보
- 데이터의 형태
- 정형 데이터 (Structured Data)
- 미리 정해진 형식과 구조에 따라 저장된 데이터
- 데이터 검색, 삽입, 수정, 삭제 연산 손쉽게 가능
- 주로 정형화된 업무나 서비스에 사용
- 엑셀의 스프레드 시트, 관계형 데이터베이스 테이블
- 반정형 데이터 (Semi-Structured Data)
- 구조화되어 있지 않아 연산 불가
- 데이터 내부의 데이터 구조에 대한 메타 정보를 함께 제공하는 파일 형식의 데이터
- HTML, XML, JSON, 웹 로그, 센서 데이터 등
- 비정형 데이터 (Unstructured Data)
- 정해진 구조나 규칙이 없고 연산에 사용할 수 없는 형태의 데이터
- 소셜 데이터, 워드, PDF, 이미지, 영상 등
- 정형 데이터 (Structured Data)
- 데이터베이스 (Database)
- 여러 사람이 공유 및 운영할 수 있는 통합적인 정보의 집합
- 컴퓨터 시스템에 전자적으로 저장되는 구조화된 데이터 모음
- DBMS에 의해 관리된다.
- DBMS
- Database Management System으로 사용자 또는 응용 프로그램이 데이터베이스에 접근할 수 있는 인터페이스
- 데이터베이스 유형
- 관계형 데이터베이스
- 행과 열이 있는 테이블 집합으로 구성되며 가장 효율적이고 유연한 방법 제공
- 객체 지향 데이터베이스
- 객체 지향 프로그래밍부터 영향을 받아 생성된 데이터베이스로 정보를 객체의 형태로 표현
- 분산 데이터베이스
- 물리적으로 떨어진 데이터베이스를 네트워크로 연결하여 단일 데이터베이스 이미지를 보여준다.
- 데이터 웨어하우스
- 다양한 정보를 집계하고 저장하는 시스템으로 최종 사용자의 의사결정 도움
- NoSQL 데이터베이스
- 관계형 의외의 형식으로 대량의 분산된 데이터 저장 및 조회
- 클라우드 데이터베이스
- 클라우드 플랫폼을 통해 구축 및 접근할 수 있는 데이터베이스
- 자율 운영 데이터베이스
- 클라우드를 기반으로 머신러닝을 사용하여 자동화된 데이터베이스
- 관계형 데이터베이스
- 테이블
- 릴레이션(Relation)이라고도 한다.
- 동일한 주제의 데이터 집합
- 데이터베이스 내에서 유일한 이름을 가져야 한다.
- 열 (Column)
- 속성(Attribute), 필드(Filed)라고도 한다.
- 더 이상 분리되지 않는 최소의 데이터 단위
- 한 테이블 내에서 유일한 이름을 가져야 한다.
- 각 열마다 자신만의 데이터 타입을 가진다.
- 행 (Row)
- 튜플(Tuple), 레코드(Record)라고도 한다.
- 관련 있는 열의 묶음
- 관계 (Relationship)
- 두 테이블 간의 서로 연결되는 방식
- 데이터의 종속성을 표현한다.
- 기본키 (Primary Key)
- 주 식별자
- 한 테이블 내에서 행을 구별할 수 있는 열 또는 열의 묶음
- SQL문 종류
- 데이터 정의어(DDL)
- CREATE
- ALTER
- DROP
- 테이블 삭제
- TRUNCATE
- 테이블에 있는 데이터만 모두 삭제
- 데이터 조작어(DML)
- SELECT
- INSERT
- UPDATE
- DELETE
- 데이터 제어어(DCL)
- GRANT
- 권한 부여
- REBOKE
- 권한 철회
- GRANT
- 트랜잭션 제어어(TC)
- COMMIT
- 작업 내용 영구 저장
- ROLLBACK
- 변경 사항 취소
- COMMIT
- 데이터 정의어(DDL)
02 SELECT문과 연산자 이해 및 실습
- 기본 SELECT 문
-
SELECT 컬럼명 [AS 별칭] FROM 테이블명 [WHERE 조건문] [ORDER BY 컬럼 ASC|DESC] [LIMIT n];
-
- ORDER BY
- 레코드 정렬
- 오름차순(ASC), 내림차순(DESC) 정렬 가능
- LIMIT n
- 반환되는 레코드의 개수 지정 (1~n개)
- 상위 또는 하위 n개의 레코드 조회 가능
- DISTINCT
- 중복 데이터 제거
- SELECT 줄 위치에 작성 (SELECT DISTINCT 컬럼명)
- 산술 연산자
- +, -, *, /, %
- DIV 연산자
- 나누기에서 정수 결과를 얻을 때 사용
- % 또는 MOD 연산자
- 나머지 구하기
- 비교 연산자
- 0(True), 1(False)로 값 반환
- ≥, ≤, >, <, =
- !=, <>
- 같지 않다
- 논리 연산자
- AND, OR, NOT
- 논리 연산자를 교집합, 합집합, 여집합으로 대응 가능
- 집합 연산자
- UNION
- 합집합 연산자
- UNION ALL
- 중복된 레코드까지 모두 출력하는 합집합 연산자
- UNION 사용 시 각 SELECT문의 컬럼 수는 동일해야 하고, 같은 위치에 존재하는 컬럼의 데이터 타입이 동일하거나 상호 호환이 가능해야 한다.
- UNION
- NULL 연산자
- IS NULL
- NULL 값인지 True/False로 반환
- IS NULL
- IN, BETWEEN 연산자
- IN
- 동일한 컬럼에 대해서 OR을 수행할 경우 사용
- IN (’값1’, ‘값2’, …) 형태
- 예시
-
SELECT 고객번호, 담당자명, 담당자직위 FROM 고객 WHERE 담당자직위 IN ('영업 과장', '마케팅 과장');
-
- 예시
- BETWEEN
- 동일한 컬럼에 대해서 ~이상 ~이하의 조건이 있는 경우 사용
- BETWEEN 값1 AND 값2 형태
- 예시
-
SELECT 담당자명, 마일리지 FROM 고객 WHERE 마일리지 BETWEEN 100000 AND 200000;
-
- 예시
- IN
- LIKE 연산자
- 특정 문자열이 지정된 패턴과 일치하는지 확인
- 와일드카드 문자(%, _)를 사용하여 확인
- %: 0개 이상의 문자를 가진 문자열 포함
- _: 정확히 한 개의 문자열 포함
- 컬렴명 LIKE ‘%찾을문자%’ 의 형태
- 조건의 우선순위
- WHERE 절에서 조건의 우선 순위를 지정할 떄 소괄호를 사용한다.
'교육 (Today I Learned) > Hanaro' 카테고리의 다른 글
[Hanaro] 48일차 / Spring Boot (어노테이션, Thymeleaf, Request Mapping) (0) | 2024.03.27 |
---|---|
[Hanaro] 47일차 / SQL (DML, DDL, 제약조건, 데이터타입, 윈도우함수, 데이터모델링) (0) | 2024.03.22 |
[Hanaro] 46일차 / SQL (JOIN, 서브쿼리) (0) | 2024.03.22 |
[Hanaro] 45일차 / SQL (집계 함수) (0) | 2024.03.21 |
[Hanaro] 44일차 / SQL (단일행 함수) (0) | 2024.03.20 |