🌭 데이터베이스 스키마(Schema)
- DB의 테이블 구조 및 형식, 관계 등의 정보를 형식 언어(formal language)로 기술한 것
1. RDB를사용하여 데이터를 저장할 때 가장 먼저 할 일은 데이터의 공통 속성을 식별하여 컬럼으로 정의하고, 테이블을 만드는것
2. 통상적으로 하나의 테이블이 아닌 여러 개의 테이블로 만들고, 각 테이블 구조, 형식, 관계를 정의함.
3. 이를 스키마라고 하며, 일종의 데이터베이스 설계도로 이해하면 됨.
4. 데이터베이스마다 스키마를 만드는 언어가 존재하며, 해당 스키마만 있으면 동일한 구조의 데이터베이스를 만들 수 있음. (데이터베이스 백업과는 달리 데이터 구조만 동일하게 만들 수 있음.)
데이터베이스는 특이하게 다른 기술과는 다르게 처음에 이해해야하는 용어들이 있다.
관계형 데이터베이스를 써서 데이터를 저장하려면 가장 처음에 해야하는 것은 "각각의 테이블에는 어떤 필드가 들어갈지, 그리고 각각 테이블 간의 관계를 어떻게 맺어야 할지? " 일종의 데이터를 저장하기 위한 설계도가 필요로 하다.
→ 테이블, 필드, 테이블 간의 관계를 정의 이 세가지를 기반으로 설계도가 필요로 하다.
이 설계도를 스키마라고 한다.
관계형 데이터베이스는 스키마를 명령어로 구현할 수 있는 언어를 제공한다. 그래서 해당 언어를 기반으로 해서 스키마를 작성하게 되어 있다. 통상적으로 여러 테이블을 만들고 각 테이블에 구조라는 것은 필드를 말한다.
그러면 데이터베이스가 스키마를 위해서 어떤 명령들을 제공하는가??
→ 그것을 통칭해서 SQL이라고 한다.
🌭 SQL(Structured Query Language)
sql은 오라클, postgresql등 모든 언어에서 사용이 가능하다. 그래서 sql언어만 알고 있으면 RDB의 스키마를 정의할 수 있고, 데이터를 스키마에 기반해서 만들어진 테이블에 데이터를 넣을 수 있고, 해당 데이터를 수정/ 삭제할 수 있다.
SQL은 프로그래밍 언어가 아닌가???
- RDBMS에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어
- 데이터베이스 스키마 생성 및 수정, 테이블 관리, 데이터 추가/ 수정/ 삭제/ 조회 등, 데이터베이스와 관련된 거의 모든 작업을 위해 사용되는 언어
- 데이터베이스마다 문법에 약간의 차이가 있지만, 표준 SQL을 기본으로 하므로, 관계형 데이터베이스를 다루기 위해서 필수적으로 알아야 함.
- SQL 종류: DDL(데이터 정의 언어), DML(데이터 처리 언어), DCL(데이터 제어 언어)
DDL(정의) | - 테이블, 인덱스 등의 개체를 만들고 관리하는데 사용되는 명령 - CREATE, ALTER, DROP |
DML(조작, CRUD) | - INSERT 테이블에 하나 이상의 데이터를 추가 - UPDATE 테이블에 저장된 하나 이상의 데이터 수정 - DELETE 테이블의 데이터 삭제 - SELECT 테이블에 저장된 데이터 조회 |
DCL(제어) → 전문가 수 | - 데이터 핸들링 권한 설정, 데이터 무결성 처리 등 수행 - GRANT 데이터베이스 개체(인덱스, 테이블) 등에 대한 사용 권한 → 어떤 데이터 수정 시에 그 수정이 잘못되었는지 검증하는단계를 거치는데 그런 과정을 하게 하는 부분 - COMMIT 트랜잭션 내의 실행 결과 적용 - BEGIN 트랜잭션 시작 - ROLLBACK 트랜잭션 실행 취소 |
프로그래밍 언어보다는 훨씬 간결하다. 간단하고 내가 하고자하는 바를 한 줄로 명령을 내리는 경우가 일반적이라서 프로그래밍 언를 몰라도 SQL언어 정도는 쉽게 커버가 가능하다.
SQL언어를 가지고 우리가 스키마도 정의할 수 있고, 데이터를 추가, 수정, 삭제, 조회가 가능하다.
정리: 스키마는 테이블을 정의하는데, SQL로 스키마한다. SQL을 하나라도 알면 관계형 데이터베이스 프로그램들은 다 다룰 수 있다. 그리고 SQL언어는 크게 스키마를 어떻게 제어하느냐/ 데이터를 어떻게 관리하느냐/ 데이터 권한들을 어떻게 부여하는가 이런 명령들을 제공한다.
'SQL' 카테고리의 다른 글
[스키마 구성]SQL로 테이블 변경 및 외래키 (0) | 2023.08.24 |
---|---|
[스키마 구성]MySQL workbench 기본 사용 방법 이해 및 테이블 만들어보기 (0) | 2023.08.23 |
Anaconda와 Jupyter Notebook 소개 및 설치 (0) | 2023.08.23 |
MySQL 환경만들기 (0) | 2023.08.22 |
[🎉완강🎉]UNION, GROUP BY, HAVING (0) | 2023.08.17 |