SQL 


  • DML - 데이터베이스에서 쿼리로 데이터베이스에 튜플을 삽입,삭제,수정 할 수 있는 기능을 제공
  • 무결성 - DDL에는 무결성 제약 조건을 지정하는 명려이 포함
  • View definition - DDL에는 view를 정의하는 명령이 포함
  • 트랜잭션 제어 - 트랜잭션의 시작과 끝을 지정하는 명령을 포함
  • Embedded SQL 및 dynamic SQL - 범용 프로그래밍 언어에 SQL 문을 삽입하는 방법을 정의
  • 권한부여 - relations and views에 대한 액세스 권한을 지정하기위한 명령어 포함

Data Definition Language(DDL)


SQL 데이터 정의 언어는 관계에 대한 정보를 지정한다.

  • 각 관계에 대한 스키마 
  • 각 속성과 연관된 값 유형
  • 무결성 제약
  • 각 관계에 대한 유지 관리 할 인덱스 집합
  • 각 관계에 대한 보안 및 권한 부여 정보
  • 디스크에 있는 각 관계의 물리적 저장소 구조

 


Domain Types in SQL


Char(n) 사용자 지정 길이가 n인 고정 길이 문자열
varchar(n) 사용자 지정 최대 길이가 n인 가변 길이 문자열
int 정수
smallint 작은 정수
numeric(p,d) 소수점 오른쪽에 d자리가 있는 사용자 지정 정밀도 p자리의 고정 소수점 번호
ex) numeric(3,1) > 44.5 (0) 444.5(x) 0.45(x)
real,double precision Floating point and double-precision floating point numbers

Create Table Construct


Integrity Constraints in Create Table


  • 무결성 제약 유형
  • SQL은 무결성 제약 조건을 위반하는 데이터 베이스 업데이트를 방지
primary key (A1.....An)
foreign key (Am....,An)
not null 널을 가질 수없음을 나타 냄 (프라이머리키로 지정된건 널로 지정될 수 없음)


Updates to Tables


Insert insert to instructor values
Delete Remove all tuples from the student relation
(튜플들만 삭제)
Drop Table drop table r(릴레이션 자체를 삭제)
Alter alter table r add A D
: a는 관계 r에 추가 할 속성의 이름 이고 D는 A의 도메인
: 관계의 모든 기존 튜플은 새 속성의 값으로 null이 할당 
alter table r drop A
여기서 A는 관계 r의 속성 이름
많은 데이터베이스에서 지원하지 않는 속성 삭제

Basic Query Structure


  1. The select Clause

   

 

*Instructor 릴레이션에서 10%의 임금이 상승된 salary와 강사의 이름, "대학교이름을" 출력

select salary *1.1,name,'University' from instructor;

 

 

2. The where Clause 

3. The from Clause 

 

 

 

* "Einstein" prof의 수업을 듣는 모든 학생의 아이디를 중복 없이 구하여라

 

 

select distinct takes.ID from takes,teaches,instructor

where instructor.ID=teaches.ID and

teaches.course_id=takes.course_id and

teaches.sec_id=takes.sec_id and

teaches.semester=takes.semester and

teaches.year=takes.year and

name = 'Einstein';


 

The rename Operation


 


2)select B.supervisor

 from emp-super as A,emp-super as B

 where A.supervisor = B.person and

         A.person = 'Bob';

 


String Operations


 

  •  % : 문자열
  • _ : 문자 하나


 

'프로그래밍 > 데이터베이스' 카테고리의 다른 글

*데이터 베이스 #1 || Relational Model  (0) 2021.03.20
*데이터베이스 #0  (0) 2021.03.14

Database Schema**


1. 스키마는 데이터 사전(Data Dictionary)에 저장되며, 다른 이름으로 메타데이터라고도 한다.

2. 스키마는 현실 세계의 특정한 한 부분의 표현으로서 특정 데이터 모델을 이용해서 만들어진다.

3. 스키마는 시간에 따라 불변인 특성을 갖는다.

4. 스키마는 데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.

5. 데이터베이스 인스턴스는 변경 될 수 있다(스냅샷)


coding-factory.tistory.com/216


Example of Instructor Relation 


*튜플의 순서는 의미가 없음(Relations are Unordered)


Relation Schema and Instance


 

  • A1,A2...An are attributes
  • Instructor = (ID,NAME,DEPT_NAME,SALARY).. -> Instructor(ID,NAME,DEPT_NAME,SALARY) -> Relation이다 라고 표현 가능

 

Attributes


  • domain  - 각 속성에 대해 허용된 값의 집합(대학생의 도메인 1학년 2학년 3학년 졸업생 휴학생 등으로 나눌 수 있음)
  • 속성 값은 분할 불가 (atomic)
  • 특수 값 null 은 모든 도메인의 구성원 이다 ("알 수 없음" 이라는 뜻) -> NULL 값은 많은 정의를 복잡하게 만든다

Keys


 

  • R =attributes의 전체  K= R의 부분집합
  • K의 값이 모든 R의 튜플들을 고유하게 식별 할 수 있다면 K는 R의  superKey
  • 이때 다 다른 값을 가지고 있거나,조합해서 고유한 key를 가지고 있어도 가능함 즉 굳이 하나의 attributes만 가지고 있을 필요가 없음
  • candidate Key: Superkey 들 중 attributes를 최소화 시킨 것
  • Primary Key: candidate Key 중 하나를 Primary key로 선택 할 수 있음 -> instances에 상관없이 어떤 tuple이 들어오더라도 각 tuple들을 고유하게 식별 가능한 attributes를 Primary Key로 선택해야 함.

  •   Foreign Key : 다른 Relation의 주키가 또 다른 Relation에 참조 되어 사용 될 경우 ( 참조 하고 있는 주 키에 없는 내용을 참조 하면 위반)

p41 참조해보기

하늘색박스- Relation의 이름

하얀박스 - Relation의 attributes

밑줄 - Primary key


Relational Query Languages


  • 절차적,비절차적
  • Pure languages - Relational algebra(절차적),Tuple Relational calculus,Domain relational calculus(비절차적)

Relational Algebra


  • 하나 또는 두 개의 관계를 입력으로 취하고 그 결과로 새로운 관계를 생성하는 일련의 작업으로 구성된 절차적 언어

 

 

select,project의 사용빈도가 가장 높음


select Operation


: 조건식(Given predicate)을 만족하는 튜플들을 선택

표기법

  • p is called the selection predicate
  • selection predicate에서 연산자 사용 가능
  • 연산자를 사용하여 predicate들의 결합 가능
  •  


Project Operation


  • 특정 속성을 생략하고 인수 관계를 반환하는 단항 연산
  • 보여주고 싶은 attributes만 쉼표로 구분 하면 됨
  • 결과는 나열되지 않은 열을 지워 얻은 k열의 관계로 정의
  • 관계가 집합이므로 결과에서 중복 행이 제거


*제거 할 때 한 행 만 보는 것이 아니라 양 쪽 다 를 비교해봐야 함

 

예를들어 위의 표에서 salary 부분에서 80000이 kim과 singh모두에게 공통된 attributes지만 비교를 해야하는 요소들이

id name도 같이 있기때문에 삭제되지 않은것임

만약에 id name salary까지 모두 같았다면 삭제 되었음


Composition of Relational Operations


  • Relational-algebra operation의 결과는 realation > 여러 realational-algebra opearation은 realational-algebra expression 안에 함께 쓰일 수 있음


 

Cartesian-Product Operation

 


  • Cartesian-product operation(X로 표시)를 사용하면 두 관계의 정보를 결합
  • 결과로 가능한 모든 튜플 쌍들을 구성
  • 중복으로 나타나는 ATTRIBUTES는 .으로 구분

 

만약에 각각의 요소가 N,M개 있으면 결과값은 NXM개가 존재한다.


Join Operation


  • Cartesian-Product가 모든 튜플을 연결하다보니 필요 없는 부분도 연결을 하는 경우가 존재함 > 이를 보안하기 위해 나온 오퍼레이션  
  • Select operation과 cartesian-product operation을 결합 가능
  •  

 

*자연 조인:동일한 이름을 가지는attributes는 세타표기를 생략할 수 있음


Union Operation


  • Union operation은 두개의 realation을 결합

 


Set-Intersection Operation


  • Set-Intersection operation을 사용하면 두 관계에 존재하는 튜플을 찾을 수 있음

 


Set difference Operation


  • Set-difference 연산을 사용하면 한 관계에 있지만 다른 관계에는 없는 튜플을 찾을 수 있음


The Assignment Operation


  • 때때로 relational-algebra expression의 일부를 임시 관계 변수에 할당하여 작성하는 것이 편리
  • 할당 작업은 <-로 표시됨
  • 연산에서 쿼리는 일련의 할당과 커리 결과로 값이 표시되는 표현식으로 구성된 순차 프로그램으로 작성 될 수 있음


The rename Operation


  • Relational-algebra expressions의 결과를 참조하는 데 사용할 수 있느 이름 바꾸기 연산자가 존재함

 


Equivalent Queries


  • 관계형 대수에서 쿼리를 작성하는 방법은 여러 가지

 


chokyuhwan.tistory.com/15 참고

'프로그래밍 > 데이터베이스' 카테고리의 다른 글

*데이터베이스 #2 | SQL  (0) 2021.03.29
*데이터베이스 #0  (0) 2021.03.14

DBMS - Database Management System

  • 서로 관계 있는 데이터들의 모임
  • 그 데이터에 접근하기 위한 프로그램의 집합
  • 편리하고 효율적인 환경

데이터 모델

  • 관계형 모델
  • 개체-관계 모델
  • 객체 기반 데이터 모델
  • 반 구조형 데이터 모델(XML)
  • 기타 구형 모델(네트워크,계층 척 모델)

관계형 모델 

  • 모든 데이터는 다양한 테이블에 저장
  • 관계형 모델의 테이블 형식 데이터의 예

 


데이터의 관점

  • physical level - 어떻게
  • logical level - 무엇을(고급 언어를 나누는 기준이 됨 how)
  • view level - 사용자에 맞게 제공(맞춤형 제공)

인스턴스와 스키마

  • 논리적 스키마 - 데이터베이스의 전체 논리적 구조

     ex) 데이터베이스는 은행의 고객 및 계좌와 이들 간의 관계에 대한 정보로 구성

  • 물리적 스키마 - 데이터베이스의 전체 물리적 구조
  • 인스턴스 - 특정 시점에서 데이터베이싀 실제 콘텐츠

물리적 데이터 독립성 : 논리적 스키마를 변경하지 않고 물리적 스키마를 수정 할 수 있는 기능

  • 논리적 스키마에 의존하는 애플리케이션
  • 일반적으로 다양한 수준과 구성 요소 간의 인터페이스를 잘 정의하여 일부 부분의 변경이 다른 부분에 심각한 영향을 미치지 않도록 해야 함.

데이터 정의 언어(Data Definition Language(DDL))

  • 데이터베이스 스키마 정의를 위한 표기법
  • DDL 컴파일러는 데이터 사전에 저장된테이블 템플릿 셋트를 생성
  • 데이터 사전에는 메타데이터가 포함됨
  • 무결성 제약(ID,학번 등 고유의 넘버가 있음)

*무결성 :  데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것


데이터 조작 언어(Data Manipulation Language(DML))

  • 적절한 데이터 모델로 구성된 데이터에 접근하거나 조작할 수 있도록 하는 언어(DML-query 언어로 알려짐)
  • 두 가지 유형의 데이터 조작 언어 - 절차식 DML 선언적 DML   
  • 선언적 DML은 일반적으로 절차식 DML 보다 더 쉬움
  • 정보 검색과 관련된 DML 부분을 쿼리 언어 라고 함
절차식 DML 사용자가 필요한 데이터와 해당 데이터를 가져 오는 방법을 지정하도록 요구
선언적 DML(비 절차적 DML) 사용자가 데이터를 가져 오는 방법을 지정하지 않고 필요한 데이터를 지정하도록 요구

 

SQL Query Language

  • SQL 쿼리 언어는 비 절차적
  • 쿼리는 하나 이상의 테이블을 입력 받아 단일 테이블을 반환
  • SQL은 튜링 머신과 동등한 언어가 아님
  • 복잡한 함수를 계산할 수 있도록 SQL은 일부 고급 언어에 포함되어 있음
  • 응용 프로그램은 일반적으로 (Embedded SQL을 허용하는 언어의 확장,SQL 쿼리를 데이터 베이스에 보낼 수 있는 응용 프로그램 인터페이스(ODBC/JDBC)) 중 하나를 통해 데이터 베이스에 엑세스

 


*튜링머신 : youtube.com/watch?v=BOr1waCdv3U


데이터베이스 설계

데이터베이스의 일반적인 구조를 설계하는 과정

  • 논리적 설계  - 데이터 베이스 스키마 결정,
  • 물리적 설계  - 데이터 베이스의 물리적 레이아웃 결정

데이터베이스 엔진

Storage Manager 데이터베이스에 저장된 하위 수준 데이터와 응용 프로그램과 쿼리 간의 인터페이스를 제공하는 프로그램 모듈
OS 파일 관리자와의 상호작용
데이터의 효율적인 저장,검색 및 업데이트
데이터-파일 데이터베이스 자체저장,데이터 사전-데이터베이스 구조,특히 데이터베이스 스키마에 대한 메타 데이터를 저장
인덱스-데이터 항목에 대한 빠른 엑세스를 제공 할 수 있음
특정 값을 보유하는 항목에 대한 포인터 제공
권한 부여 및 무결성 관리자,트랜잭션 관리자,파일 관리자,버퍼 관리자
Query Processor DDL 인터프리터 - DDL 문을 해석하고 데이터 사전에 기록
DML 컴파일러 - 질의어 내의 DML 문을 질의 평가 엔진이 이해할 수 있는 하위 단계 명령어로 구성된 질의 수행계획으로 바꿈
Transaction Management 데이터베이스 애플리케이션 내의 단일 논리 기능을 수행하는 동작들의 모음
트랜잭션 오류(동시에 여러가지의 일을 요구하는 등)에도 불구하고 데이터베이스가 올바른 상태로 유지되도록 함
동시성 제어관리자 :데이터베이스의 일관성을 보장하기 위해 동시 트랜잭션 간의 상효작용을 제어

 

Database Architecture (Centralized/Shared-Memory)


데이터베이스 아키텍처

  • 중앙 집중식 데이터베이스 - 하나에서 몇개의 코어,공유 메모리
  • 클라이언트-서버 - 하나의 서버 시스템이  여러 클라이언트 시스템을 대신하여 작업,실행
  • 병렬 데이터베이스 - 많은 코어 공유 메모리,공유 디스크,아무것도 공유하지않음
  • 분산 데이터베이스 - 지리적 분포,스키마/데이터 이질성

데이터베이스 응용

  • Two-tier 아키텍처: 아키텍처 - 애플리케이션이 클라이언트 시스템에 상주,서버 시스템에서 데이터베이스 시스템 기능을 호출 ( 응용의 확장이 쉬움)
  • Three-tier 아키텍처: 아키텍처 - 클라이언트 시스템은 프런트 엔드 역할을 하며 직접적인 데이터베이스 호출을 포함하지 않음 (보안성이 뛰어남)

2차,3차 차이점

 


데이터베이스 관리자(시스템을 관리하는 작업자)

  • 스키마 정의
  • 저장 구조 및 액세스 방법 정의
  • 스키마 및 물리 구조의 수정
  • 데이터 엑세스 권한의 인정
  • 루틴 유지 및 관리
  • 주기적으로 데이터베이스 백업
  • 정상적인 작업에 충분한 여유 디스크 공간이 있는지 확인하고 필요에 따라 디스크 공간을 확보
  • 데이터베이스에서 실행중인 작업 모니터링

*데이터베이스 시스템의 역사

  • 1950~60 년대 : 저장용 자기 테이프를 사용한 데이터 처리
  • 1960~70 년대 : 데이터에 직접 액세스 할 수 있는 하드 디스크, Ted Codd는 관계형 데이터 모델을 정의
  • 1980 년대 : 연구 관계형 타입이 상용 시스템으로 진화
  • 1900 년대 : 대규모 의사 결정 지원 및 데이터 마이닝 애플리케이션
  • 2000 년대 : 빅 데이터 저장 시스템 > SQL을 넘어서 
  • 2010 년대 : SQL이 다시 도래,대규모 병렬 데이터베이스 시스템,멀티 코어 메인 메모리 데이터베이스

**데이터 마이닝 :많은 데이터 가운데 숨겨져 있는 유용한 상관관계를 발견하여, 미래에 실행 가능한 정보를 추출해 내고 의사 결정에 이용하는 과정

 


 

'프로그래밍 > 데이터베이스' 카테고리의 다른 글

*데이터베이스 #2 | SQL  (0) 2021.03.29
*데이터 베이스 #1 || Relational Model  (0) 2021.03.20

+ Recent posts