Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 Database, SQL (다락방) 본문

SQL

스파르타 부트캠프 Database, SQL (다락방)

H.S-Backend 2024. 6. 17. 12:01

Database란 

데이터의 집합이다


DBMS(Database Management System)란

데이터베이스를 관리하고 운영하는 소프트웨어
 

다양한 데이터가 저장되어 있는 데이터베이스는

여러 명의 사용자나 응용프로그램과 공유하고 동시 접근이 가능해야한다.


관계형 DBMS (Relation DBMS) 

MySQL뿐만 아니라, 대부분의 DBMS가 RDBMS 형태로 사용된다.
 
RDBMS의 데이터베이스는 테이블(table)이라는 최소 단위로 구성되며
이 테이블은

하나 이상의 열(column)과 행(row)로 이루어져있다.


로우형 DBMS

전통적인 DMBS 구조
여러 필드의 값은 고유 식별키로 구분할 수 있는 레코드 형식에 적합하다.
 

특정 사용자의 요청이 여러 컬럼을 포함하는 데이터를 요구한다면

이러한 로우형 데이터 베이스가 적합할 수 있다.

row(행)를 기준으로 데이터를 추가하고 처리된다.

cow-oriented 데이터베이스


종류

DBMS제작사기타
MySQLOracle오픈소스(무료), 상용 
Oracle과 합병되어 부분 유료화
MariaDBMariaDB오픈소스(무료)
MySQL초기 개발자들이 독립해서 만듬
PostgreSQLPostgreSQL오픈소스(무료)
OracleOracle상용 시장 점유율 1위
SQL ServerMicrosoft주로 중/대형급 시장에서 사용
DB2IBM메인 프레임 시장 점유율 1위
AccessMicrosoftPC용
SQLiteSQLite모바일 전용, 오픈 소스(무료)

장점

  • 역사가 가장 오래되었다.
  • 방대한 툴킷(트리거, 저장프로시저, 진보된 인덱스)
  • ACID(Atomic:원자성, Consistent : 일관성, Isolated: 독립성, Durable: 지속성) 준수에 따른 데이터 안전성
  • 데이터의 무결성을 완벽하게 보장한다.
  • 뛰어난 쿼리처리 능력, 다른 데이터 스토어와 다르게 저장된 데이터를 사용하기 위한 계획을 알아야 될 필요가 없다.
  • 강력한 인덱스 기능, 트랜잭션 기능을 통해서 데이터의 분류, 정렬, 탐색속도가 빠르다.
  • 관계 스키마가 잘 정규화되어있으면 쿼리의 유연성이 좋아진다.
  • 데이터를 명확하게 처리할 수 있고 이해하기가 쉽다.
  • 컬럼을 미리 정의하고 각 컬럼에 대응한 값들을 열로 나열하여 저장한다.

 

단점

  • 대부분의 관계형 DB는 부하를 분석하기 어렵다.
  • 선형적인 확장이 불가능하고 빅데이터를 처리하기에 비효율적이다.

컬럼형 DBMS(Column -oriented DBMS)

데이터 테이블을 로우(row)가 아닌 컬럼(column)으로 저장하는 데이터베이스 관리 시스템(DBMS)이다.
 

컬럼과 로우 데이터베이스 둘 다 데이터를 로드하고 쿼리를 수행하기 위해서

SQL과 같은 전통 데이터베이스 쿼리 언어를 사용할 수 있다.
 
Column-oriented DB에서
각 데이터는 필드 단위로 기록되며, 메모리 상 필드끼리 수평적으로 저장된다.


row형 DB저장 방식


컬럼형 DB 저장방식


종류

DBMS제작사
RedshiftAmazon
BigQueryGoogle
SnowflakeSnowflake
ClickHouseClickHouse

 

장점

  • row삽입, 수정, 삭제 시 매우 간편하고
  • 행 단위로 데이터를 조회할 경우 성능을 보장한다.

 

단점

데이터 추가 작업을 수행할 때
각 데이터의 마지막 위치를 확인하는 작업이 필요하며,
데이터 삽입, 수정, 삭제 시 성능이 떨어진다.
 


Ansi SQL이란

American National Standards Institue (미국 표준 협회)
 

각기 다른 DBMS(Oracle, MySQL 등) 에서

공통적으로 사용할 수 있도록 고안한 표준SQL문 작성 방법이다.
 

서로 다른 DB에서는 공통적으로 사용해야 한다.


Full Outer Join이란

MySQL에서는 존재하지 않고 합집합 개념이다.

두 테이블의 정보를 모두 가져와서 사용할 수 있고
MySQL과 MariaDB도 해당기능이 없다.
 
MySQL에서 Oracle등으로 DB변경이 이루어 져도 문제가 발생하지 않는다.

이와 같이 DB가 변경되었을 때 다른 영향이 있을 수 있으므로 Ansi 표준을 사용한다.

 


SQL이란

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장, 처리 하기 위한

프로그래밍 언어

 

관계형 데이터베이스는 정보를 표 형식으로 저장하며,

행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타낸다.

 

SQL 명령어 종류

1. 데이터 정의 언어 (DDL : Data Definition Language)
2. 데이터 조작 언어 (DML : Data Manipulation Language)
3. 데이터 제어 언어 (DCL : Data Control Language)

 

데이터 정의 언어 란

데이터 베이스를 정의하는 언어이며
데이터를 생성, 수정, 삭제하는 등

데이터 전체의 골격을 결정하는 역할을 하는 언어.

 
CREATE 
데이터베이스, 테이블 등을 생성한다.
DROP 
데이터베이스, 테이블 삭제 
ALTER 
테이블을 수정한다
TRUNCATE 
테이블을 초기화한다.


데이터 조작 언어란

정의된 데이터베이스에 입력된 레코드
조회, 수정, 삭제하는 등의 역할을 하는 언어
SELECT : 데이터 조회
INSERT : 데이터 삽입
UPDATE : 데이터 수정
DELETE : 데이터 삭제


데이터 제어 언어란

 

데이터 베이스
접근하거나 객체에 권한을 주는 등의 역할을 하는 언어이다.
 
GRANT 
특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한을 부여한다.
REVOKE 
특정 데이터베이스 사용자에게 특정 작업에 대한 수행권한을 박탈 및 회수한다.
COMMIT 
트랜잭션의 작업을 저장한다.
ROLLBACK
트랜잭션의 작업을 취소하거나 복구한다.
 


JOIN이란
테이블과 테이블을 엮어서 원하는 데이터를 추출할 수 있다.
 

 

두 테이블과 JOIN을 하기 위해
PK(기본키) FK(외래키) 관계로 맺어야되며 일 대 다 관계이다.


INNER JOIN(내부 조인)

교집합이다.

SELECT <열 목록>
FROM <첫 번째 테이블>
    INNER JOIN <두 번째 테이블>
    ON <조인 조건>

[WHERE 검색 조건]
#INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다.

OUTER JOIN (외부 조인)

외부조인은 한쪽에만 데이터가 있어도 결과가 나온다.

 

SELECT <열 목록>
FROM <첫 번째 테이블>
    <LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블>
     ON <조인 조건>

[WHERE 검색 조건]

LEFT는 왼쪽만 가능 
RIGHT는 오른쪽만 가능
FULL은 둘다 가능 (Oracle 기준)


CROSS JOIN(상호 조인)

한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능.
상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 수 만큼 된다.
카티시안 곱(Catesian Product)

SELECT *
FROM <첫 번째 테이블>
    CROSS JOIN <두 번째 테이블>

SEFT JOIN(자체 조인)

자기 자신을 JOIN하며 1개의 테이블을 사용한다.

SELECT <열 목록>
FROM <테이블> 별칭A
    INNER JOIN <테이블> 별칭B

[WHERE 검색 조건]

 
 
 

반응형