crushed-taro 2024. 12. 15. 21:45
728x90
반응형

Database

1. Database

 - 한 조직에 필요한 정보를 여러 응용 시스템에서 공유할 수 있도록 논리적으로 연관된 데이터를 모으고, 중복되는 데이터를 최소화하여 구조적으로 통합/저장해 놓은 것.

 - 구조화된 데이터의 집합으므로 컴퓨터에서 쉽게 접근, 관리, 업데이트할 수 있음.

 

2. 정의

 - 운영 데이터(Operational Data) : 조직의 목적을 위해 사용되는 데이터

 - 공용 데이터(Shared Data) : 공동으로 사용되는 데이터

 - 통합 데이터(Integrated Data) : 중복을 최소화하여 중복으로 인한 데이터 불일치 현상 제거

 - 저장 데이터(Stored Data) : 컴퓨터 저장 장치에 저장된 데이터

 

3. DBMS

 - 데이터베이스에서 데이터를 추출, 조작, 정의, 제어 등을 할 수 있게 해주는 데이터베이스 전용 관리 프로그램들을 말함.

 

4. Database 엔진

 - InnoDB : 트랜잭션 기능을 제공해 동시성과 무결성을 높이고 크래시(crash) 복구 기능을 지원해 시스템이 예기치 않게 중단되더라도 데이터의 일관성을 보장함.

 - MyISAM : 트랜잭션 기능을 제공하지는 않지만 대신 간단한 읽기 작업에 최적화 되어있음, '풀 텍스트 검색'기능을 제공하여 트랜잭션이 필요하지 않은 읽기 줌심의 애플리케이션에 적합함.

 - NDB Cluster : 데이터를 여러 컴퓨터에 분산 저장해 높은 안정성과 성능을 제공함. 하나의 컴퓨터가 문제를 일으킬 경우 다른 컴퓨터가 작업을 계속할 수 있기 때문에 중단 없이 계속해서 서비스를 제공해야 하는 대규모 애플리케이션에 적합.

 

명령어

1. SELECT

 - MySQL의 가장 기본적인 명령어로 특정 테이블에서 원하는 데이터를 조회해서 가져오는데 사용됨.

 

2. ORDER BY

 - SELECT문과 함께 사용하며 결과 집합을 특정 열이나 열들의 값에 따라 정렬하는 데 사용됨.

 

3. WHERE

 - 특정 조건에 맞는 레코드만을 선택하는데 사용되며 다양한 방법으로 조건을 설정할 수 있음.

 - 비교 연산자 활용 : 같음(=) 연산자 예제와 함께 WHERE절 사용.

 - AND 연산자 활용

 - OR 연산자 활용

 - LIKE 연산자 활용

 - IN 연산자 활용

 - IS NULL 연산자 활용

 

4. DISTINCT

 - 중복된 값을 제거하는데 사용됨. 컬럼에 있는 컬럼 값들의 종류를 쉽게 파악할 수 있음.

 

5. LIMIT
 - SELECT문의 결과 집합에서 반환할 행의 수를 제한하는데 사용됨.

 - offset : 시작할 행의 번호(인덱스 체계)

 - row_count : 이후 행부터 반환 받을 행의 개수

 

6. JOIN

 - 두 개 이상의 테이블의 관련이 있는 컬럼을 통해 결합하는데 사용됨.

 - 두 개 이상의 테이블은 반드시 연관있는 컬럼이 존재해야 하며 이를 통해 JOIN된 테이블들의 컬럼을 모두 활용할 수 있음.

 - INNER JOIN : 두 테이블의 교집합을 반환하는 SQL JOIN 유형

 - LEFT JOIN : 첫 번째(왼쪽) 테이블의 모든 레코드와 두 번째(오른쪽) 테이블에서 일치하는 레코드를 반환하는 SQL JOIN 유형

 - RIGHT JOIN : 두 번째(오른쪽) 테이블의 모든 레코드와 첫 번째(왼쪽) 테이블에서 일치하는 레코드를 반환하는 SQL JOIN 유형

 - CROSS JOIN : 두 테이블의 모든 가능한 조합을 반환하는 SQL JOIN 유형

 - SELF JOIN : 같은 테이블 내에서 행과 행 사이의 관계를 찾기 위해 사용되는 SQL JOIN 유형, 카테고리별 대분류 확인을 위한 SELF JOIN 조회

 - ALIAS : SQL문의 컬럼 또는 테이블에 별칭을 달아줄 수 있음.

 

7. GROUPING

 - GROUP BY절은 결과 집합을 특정 열의 값에 따라 그룹화하는데 사용됨.

 - HAVING은 GROUP BY절과 함께 사용해야 하며 그룹게 대한 조건을 적용하는데 사용됨.

 

8. SUBQUERY

 - 다른 쿼리 내에서 실행되는 쿼리.

 - SUBQUERTY의 결과를 활용해서 복잡한 MAINQUERY를 작성해 한번에 여러 작업을 수행할 수 있음. 

 - CTE(Common Table Expressions) : 파생 테이블과 비슷한 개념이며 코드의 가독성과 재사용성을 위해 파생 테이블 대신 사용하게 됨.

 

9. SET OPERATORS

 - SET 연산자는 두 개 이상의 SELECT문의 결과 집합을 결합하는데 사용함.

 - SET 연산자를 통해 결합하는 결과 집합의 컬럼이 동일해야 함.

 - UNION : 두 개 이상의 SELECT 문의 결과를 결합하여 중복된 레코드를 제거한 후 반환하는 SQL 연산자임.

 - UNION : 두 개 이상의 SELECT 문의 결과를 결합하여 중복된 레코드를 제거하지 않고 모두 반환하는 SQL 연산자임.

 

DML (Data Maniqulation Language)

1. DML

 - 데이터 조작언어, 테이블에 값을 삽입하거나 수정하거나 삭제하는(데이터베이스 내의 데이터를 조작하는데 사용하는) SQL의 한 부분임.

 - INSERT : 새로운 행을 추가하는 구문, 테이블의 행의 수가 증가 함.

 - UPDATE : 테이블에 기록된 컬럼의 값을 수정하는 구문, 테이블의 전체 행의 개수는 변화가 없음.

 - DELETE : 테이블의 행을 삭제하는 구문, 테이블의 행의 개수가 줄어듦.

 - REPLACE : INSERT시 PRIMARY KEY 또는 UNIQUE KEY가 충돌이 발생할 수 있다면 REPLACE를 통해 중복 된 데이터를 덮어 쓸 수 있음.

 

TRANSACION

1. TRANSACTION

 - 데이터베이스에서 한 번에 수행되는 작업의 단위.

 - 시작, 진행, 종료 단계를 가지며 만약 중간에 오류가 발생하면 롤백(시작 이전 단계로 되돌리는 작업)을 수행하고 데이터베이스에 제대로 반영하기 위해서는 커밋(이후 롤백이 되지 않음)을 진행함.

 - MySQL은 기본적으로 자동 커밋 설정이 되어 있어(롤백이 안됨) 롤백을 하기 위해서는 자동 커밋 설정을 해제해 주어야 함.

 

2. ACID

 - Atomicity (원자성) : 트랜잭션의 연산은 모두 성공적으로 실행되거나 아무 것도 실행되지 않아야 함을 의미함. 즉, 트랜잭션 내의 모든 작업이 완료되거나, 하나라도 실패할 경우 전체 트랜잭션이 취소되어야 함.

 - Consistency (일관성) : 트랜잭션이 실행되기 전과 후의 데이터베이스 상태는 일관된 규칙을 준수해야 함. 즉, 트랜잭션이 실행되면 데이터베이스의 모든 데이터는 사전에 정의된 규칙, 제약조건, 트리거 등을 만족해야 함.

 - Isolation (독립성) : 동시에 여러 트랜잭션이 실행될 때, 각 트랜잭션은 다른 트랜잭션의 중간 실행 결과를 볼 수 없음. 이 속성은 각 트랜잭션이 마치 시스템에서 독립적으로 실행되는 것처럼 보장함.

 - Durability (영속성) : 트랜잭션이 성공적으로 완료되면, 그 결과는 시스템 오류가 발생하더라도 반드시 영구적으로 데이터베이스에 반영되어야 함. 즉, 트랜잭션이 커밋되면, 해당 변경 사항은 데이터베이스에 영구적으로 저장될 것임.

 

DDL (Data Definition Language)

1. DDL

 - 데이터베이스의 스키마를 정의하거나 수정하는 데 사용되는 SQL의 한 부분.

 - CREATE: 테이블 생성을 위한 구문, IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않음.

 - ALTER : 테이블에 추가/변경/수정/삭제하는데 적용함.

 - DROP : 테이블을 삭제하기 위한 구문.

 - TRUNCATE

CONSTRAINTS

1. CONSTRAINTS

 - 제약조건으로 테이블에 데이터가 입력되거나 수정될 때의 규칙을 정의함.

 - 데이터 무결성을 보장하는데 도움이 됨.

 

2. NOT NULL

 - NULL값을 허용하지 않는 제약조건

 - 제약조건 확인용 테이블 생성 및 테스트 데이터 INSERT 후 조회하기

 

3. UNIQUE

 - 중복값 허용하지 않는 제약조건

 - 제약조건 확인용 테이블 생성 및 테스트 데이터 INSERT 후 조회하기

 

4. PRIMARY KEY

 - 테이블에서 한 행의 정보를 찾기 위해 사용 할 컬럼을 의미.

 - 테이블에 대한 식별자 역할을 함. (한 행씩 구분하는 역할을 함.)

 

5. FOREIGN KEY

 - 참조(REFERENCES)된 다른 테이블에서 제공하는 값만 사용할 수 있음.

 - 참조 무결성을 위배하지 않기 위해 사용

 

6. CHECK

 - check 제약 조건 위반시 허용하지 않는 제약조건.

 - 제약조건 확인용 테이블 생성 및 테스트 데이터 INSERT 후 조회하기.

 

7. DEFAULT

 - 컬럼에 null 대신 기본 값 적용.

 - 컬럼 타입이 DATE일 시 current_date만 가능.

VIEW

1. VIEW

 - SELECT 쿼리문을 저장한 객체로 가상테이블이라고 불림.

 - 실질적인 데이터를 물리적으로 저장하고 있지 않고 쿼리만 저장했지만 테이블을 사용하는 것과 동일하게 사용할 수 있음.

 - VIEW는 데이터를 쉽게 읽고 이해할 수 있도록 돕는 동시에, 원본 데이터의 보안을 유지하는데 도움이 됨.

INDEX

1. INDEX

 - 인덱스(Index)는 데이터 검색 속도를 향상시키는 데이터 구조로 데이터를 빠르게 조회할 수 있는 포인터를 제공함.

 - 데이터베이스에서 데이터를 찾을 때 전체 테이블을 검색하는 대신 인덱스를 통해 검색을 하므로 속도가 더 빨라지게 됨.

 - 인덱스는 주로 WHERE절의 조건이나 JOIN 연산에 사용되는 컬럼에 생성함.

 - 다만 인덱스도 데이터 저장 공간을 차지하고 데이터가 변경될 때마다 인덱스 역시 갱신해야 하기 때문에 어떤 컬럼에 인덱스를 생성할지는 신중히 결정해야 함.

728x90
반응형