SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
RDBMS에서
자료의 검색
자료의 관리
데이터베이스 스키마 생성과 수정
을 수행하기 위함이다.
스키마란?
데이터베이스에서 데이터 구조와 관련된 전반적인 설계와 구조를 정의하는 개념
⇒ 간단하게! 표들을 그룹화하는 일종의 폴더
⇒자세하게! 구성요소는 아래와 같이 이루어져있다.
- 속성 (개체의 특성을 나타냄.)
- 개체 (속성들의 집합)
- 관계 (개체 사이의 관계)
- 제약조건
스키마의 특징
1.
데이터 사전(Data Dictionary)
에 저장된다.2.특정 데이터 모델을 이용해서 만들어진다. (현실 세계의 특정한 부분의 표현)
3.시간에 따라 불변인 특성을 가진다.
4.데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.
스키마의 3계층
- 외부스키마 (사용자 뷰)
- 개별 사용자들의 입장에서 데이터 베이스의 논리적 구조를 정의한 것
- 개념스키마(전체 뷰)
- 데이터베이스의 전체 조직에 대한 논리적인 구조로, 물리적인 구현은 고려하지 않음
- 내부스키마(저장 스키마)
- 개념 스키마를 디스크 기억장치에 물리적으로 구현하기 위한 방법을 기술한 것
스키마의 특징
데이터 독립성
- 데이터베이스 내의 데이터, 데이터를 사용하는 사용자 및 응용 프로그램, 데이터베이스의 저장 구조가 서로 영향을 받지 않는 성질
**논리적 독립성**
- 개념 스키마가 변경되어도, 외부 스키마에 영향을 주지 않는다.
물리적 독립성
- • 내부 스키마가 변경되어도, 개념 스키마 / 외부 스키마에 영향을 주지 않는다.
SQL → Syntax Check → Semantic Check → Library Cache Check → Optimization → Raw Source Generation → Execution
- SQL: 쿼리 실행
- Syntax Check: 문법 체크
- Semantic Check: 객체(Object) 및 권한 유무 체크
- Library Cache Check: Cache에서 쿼리 저장 유무 검사 → 저장되어 있다면 Sofrt Parse로, Library Cache에 저장된 쿼리 바로 사용 → 저장되어 있지 않으면 Hard Parse로 다음 단계로 넘어간다.
- Optimization: 최적화한 쿼리 실행 계획을 만드는 단계
- Raw Source Generation: 위 Optimization 단계에서 생성된 실행 계획을 실제 실행할 수 있게 Formatting
- Execution: 실행
테이블 = 릴레이션
행 = 레코드 = 튜플
열 = 필드 = 속성
<특징>
속성의 무순서성
개체란?
⇒ 데이터로 표현하려고 하는 객체. ER다이어그램에서는 네모로 표현.
- 테이블과 컬럼을 정의하는 명령어로 생성, 수정, 삭제 등의 데이터 전체 골격을 결정하는 역할을 담당한다.
명령어를 입력하는 순간 작업이
즉시 반영(Auto Commit)
되기 때문에 사용할 때 주의가 필요하다.DDL사용 전에 DML을 사용하면, DDL 사용과 동시에 DML은 DB에 반영(Commit)되는 현상이 생김
이러한 명령은 권한이 주어져야 실행 가능함(권한 부여는 DCL로 함)
- CREATE
- ALTER
- DROP
- Truncate : 모든 제약조건과 데이터를 삭제(기본키, 외래키에 대한 정보도 삭제됨.)
내부 데이터를 관리하기 위한 언어
- 명령을 실행하고 commit을 실행해야 데이터베이스에 적용된다.
- 데이터를 조회, 추가, 변경, 삭제 등의 작업을 수행하기 위해 사용
- DDL과 달리 DML은 적는
즉시 반영(Auto Commit)
이 되기 않는다. 다시 말해, DML에 의한 데이터 변동은 영구적인 변경이 아니기 때문에ROLLBACK
으로 다시 되돌릴 수 있다.- SELECT (조회이기때문에 commit과는 상관없음)
- INSERT : 테이블에 레코드(튜플)을 삽입하라는 명령
- DELETE : 테이블에 레코드(튜플)을 삭제하라는 명령
- UPDATE : 테이블에 레코드(튜플)을 수정할 때 사용하는 명령
트랜잭션
을 제어할때 사용트랜잭션
별로 제어트랜잭션이란?
데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
📎 트랜잭션(Transaction) 단위의 예시
게시판을 예로 들어보자
1) 게시판 사용자는 게시글을 작성하고, 올리기 버튼을 누른다.
2) 그러면 글 올리기가 처리되고 자동으로 다시 게시판에 돌아오게 된다.
3) 게시판에서 자신의 글이 포함된 업데이트된 게시글들을 볼 수 있다.
여기서 작업의 단위는 insert문과 select문 둘다 를 합친것이다.
이러한 작업단위를 하나의 트랜잭션이라 한다.
관리자나 개발자가 하나의 트랜잭션 설계를 잘하는 것이 데이터를 다루는 것에 많은 이점이 있다.