web developer

[sql] sql, database, dbms, schema 개념 이해하기 본문

SQL

[sql] sql, database, dbms, schema 개념 이해하기

trueman 2022. 12. 10. 21:55
728x90
728x90

SQL


SQL (Structured Query Language)

 

- SQL은 Structured Query Language (구조적 질의 언어)의 줄임말로, 관계형 데이터베이스 시스템(RDBMS)에서 데이터를 관리 및 처리하기 위해 설계된 프로그래밍 언어입니다.

- SQL은 1970년대에 IBM에서 최초 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데, 현재 SQL의 표준으로 ANSI SQL이 정립되었습니다.

- 각 DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개별 SQL을 사용하며 서로 근소한 차이를 보입니다.


SQL 문법

 

[1] DDL

- Data Definition Language, 데이터 정의 언어
- 각 릴레이션을 정의하기 위해 사용하는 언어

- conceptual schema를 정의하기 위해 사용되는 언어

- internal schema까지 정의할 수 있는 경우도 있음

- CREATE, ALTER, DROP...

 

[2] DML

- Data Manipulation Language, 데이터 조작 언어

- database에 있는 data를 활용하기 위한 언어 
- 데이터를 추가, 수정, 삭제, 검색 등등의 기능을 제공하는 언어

- SELECT, INSERT, UPDATE...

 

[3] DCL

- Data Control Language, 데이터 제어 언어
- 사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어입니다.

- GRANT, REVOKE...

 

오늘날의 DBMS는 DML, VDL, DDL이 따로 존재하기 보다는 통합된 언어로 존재 -> SQL

Database


데이터베이스(Database, DB)

 

- 전자적(electronically) 으로 저장되고 사용되는 관련있는(related) 데이터들의 조직화된 집합(organized collection)

- 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합.

- 스프레드 시트와 기능은 거의 유사하지만 컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스에 접근하고 편집이 가능하다는 장점이 있습니다.

 

엑셀 데이터베이스 
통합문서 SCHEMA
시트  TABLE
행 ex) 1,2,3  ROW
열 ex) A, B, C COLUMN

DBMS (데이터베이스 관리 시스템, Database Management System)

 

- 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 소프트웨어 시스템 


RDBMS (관계형 데이터베이스 관리 시스템)

 

- RDBMS 는 DBMS에  관계형(Relational) 이 추가된 것으로, 즉 쉽게 말하자면 테이블 기반의 DBMS이다.

- 스프레드시트 파일 모음

- 관계형 데이터베이스 모델에서 각 '스프레드시트'는 열(속성)과 행(레코드 또는 튜플)으로 대표되는 정보를 저장하는 테이블

- 관계형 데이터베이스를 만들고 업데이트하고 관리하는 데 사용하는 프로그램

- MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database, ...

- 관계형 데이터베이스의 모든 테이블에는 행에서 고유하게 식별 가능한 기본 키라는 속성이 있으며, 외래 키(다른 기존 테이블의 기본 키를 참조)를 사용하여 각 행에서 서로 다른 테이블 간의 관계를 만드는 데 사용할 수 있습니다.

 

[DBMS] RDBMS와 DBMS의 차이점

오늘은 간단하게 RDBMS, 더해서 SQL과 DBMS에 대해서도 알아보도록 하겠다😉DBMS 는 DataBase Management System 으로, 데이터베이스 관리 시스템이ek.RDBMS 는 DBMS 에 Relational 이 추가된 것으로, 관계형 즉 쉽

velog.io


Schema 


스키마(Schema)

 

- 데이터베이스(Database) 전체 또는 일부의 논리적인 구조를 표현

- 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다. 

- 구체적으로 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 정의

- 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분

- DBMS는 외부 스키마에 명세된 사용자의 요구를 개념 스키마 형태로 변환하고, 이를 다시 내부 스키마 형태로 반환한다. 


three-schema architecture 

 

- 각 레벨을 독립시켜서 어느 레벨에서의 변화가 상위 레벨에 영향을 주지 않기 위함

- 대부분의 DBMS가 three level을 완벽하게 혹은 명시적으로 나누지는 않음

- 데이터가 존재하는 곳은 internal level.

 

three-schma architecture


[1] 외부 스키마(사용자 뷰, user views, external views)

 

-  사용자의 입장에서 정의한 데이터 베이스의 논리적 구조.

- 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며, 하나의 데이터베이스에는 여러개의 외부 스키마가 있을 수 있다.

- 특정 유저들이 필요로 하는 데이터만 표현.

- 그 외 알려줄 필요가 없는 데이터는 숨김.

- logical data model을 통해 표현.

- 일반 사용자는 SQL을 이용하여 DB를 쉽게 사용할 수 있다.

- 응용 프로그래머는 C, 자바 등의 언어를 사용하여 DB에 접근한다. 

 

[2] 개념 스키마(전체적인 뷰)

 

- 전체 데이터베이스에 대한 구조를 기술.

- 물리적인 저장 구조에 관한 내용은 숨김.

- 모든 이용자가 필요로 하는 데이터를 총합한 조직 전체의 데이터 베이스로 하나만 존재한다.

- entities, data types, relationships(개체 간의 관계), user operations, constraints(제약조건), 데이터 베이스의 접근 권한, 보안 등에 관한 명세를 나타내고, 집중

- logical data model을 통해 표현.

- 데이터 베이스 관리자에 의해서 구성된다. 

 

 

[3] 내부 스키마

 

- 물리적 저장장치의 입장에서 본 데이터베이스 구조.

- 물리적으로 데이터가 어떻게 저장되는지 physical data model을 통해 표현

- data storage, data structure, access path 등등 실체가 있는 내용 기술 

- 실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다.


관계형 데이터베이스의 구성요소


파일 시스템 데이터베이스 모델링 관계형 데이터베이스
파일(File) 엔티티(Entity) 테이블(Table)
레코드(Record) 튜플(tuple) 행(Row)
키(Key) 식별자(Identifier) 기본키(Primary Key), Unique
필드(Field) 속성(Attribute) 열(Column)

- 테이블(Table) : 행(Row)과 열(Column)로 이루어진 데이터 집합을 의미. (=릴레이션(Relation))

- 행(Row) : 관계된 데이터의 묶음. 튜플(Tuple) 또는 레코드(Record)라고도 불림

- 열(Column) : 가장 작은 단위의 데이터를 의미. 필드(Field) 또는 속성(Attribute)라고도 불림

- 키(Key) : 테이블에서 행의 식별자로 이용되는 식별자

더보기

- 슈퍼 키(Super Key) : 테이블의 행을 고유하게 식별할 수 있는 속성 또는 속성의 집합 (유일성 만족O, 최소성 만족X)

- 복합 키(Composite Key) : 2개 이상의 속성(Attribute)을 사용한 키

- 후보 키(Candidate Key) : 유일성과 최소성을 만족하는 키 (각 튜플을 유일하게 식별할 수 있는 속성의 집합)

- 기본 키(Primary Key) : 후보 키에서 선택된 키 (null 값 혹은 중복 값으로 가질 수 없음)

- 대체 키(Surrogate Key) : 후보 키에서 선택되지 않은 키

- 외래 키(Foreign Key) : 서로 다른 테이블 간의 관계를 맺어주는 키 (다른 테이블의 기본키를 참조)


When Designing A Database Every Table Should Have A Single Theme.

Must Have Only One Candidate Key. Should Not Have A Surrogate Key. Natural Keys Are Better.

 

데이터베이스를 설계할 때 모든 테이블은 단일 테마를 가져야 합니다. 

하나의 후보 키만 있어야 합니다. 대리 키가 없어야 합니다.

자연 키가 더 좋습니다. 숫자 기본 키가 있어야 합니다.


테이블이 1개로 되어 있는 경우

 

장점 : 보기 편함 

단점 : 수정 어려움 

 

테이블이 n개로 되어 있는 경우

 

장점 : 수정 편함

단점 : 보기 어려움 

 

이를 해결하기 위한게 관계형 데이터베이스의 JOIN이다.

 

[sql] JOIN 정리

1. JOIN JOIN이란, 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 의미한다. 2. INNER JOIN 일반적으로 JOIN이라 하면, INNER JOIN을 지칭하는 것이다. * INNER JOIN은 조인될 조건

take-it-into-account.tistory.com

 


참고 

SQL 쿼리문 실행 순서 

 

더보기

 

1~4번에서 데이터를 다 가져오고 난 다음에 select절을 체크하기 떄문에 select * from 이랑 select에서 컬럼 하나만 가져온 것은 사실상 IO비용이 같다. (인덱스를 제외한 경우에 해당되는 내용) 

select 절에서 alias (별칭)을 지정해 놓은 것을 group by에서는 사용할 수 없지만, order by 에서는 select 절 이후의 순서로 작동하기 떄문에 alias(별칭)을 사용할 수 있다.

 

출처 : https://binzip2.tistory.com/36

728x90
728x90

'SQL' 카테고리의 다른 글

[sql] LAG, LEAD 함수  (1) 2023.08.22
[sql] GROUP BY  (0) 2023.08.20