반응형

[ 집합 연산 ]

 

 

 

 

1. UNION : 두 연산의 결과를 모두 출력한다.

 

-> 중복을 제거하고 출력한다.

 

만약) 중복을 제거하지 않고 출력하고 싶다면,

UNION ALL 연산자를 사용하면 된다.

 

 

 

 

 

 

 

 

 

2. INTERSECT : 두 연산결과의 교집합을 구한다.

 

 

 

 

 

 

 

 

 

 

3. MINUS : 앞의 연산결과에서 뒤의 연산결과를 제외하고 연산한다.

 

 

* 주의 *

select 하는 필드는 동일해야 한다.

 

 

 

 

 

 

 

[ 외부 조인 ]

두 테이블의 레코드에서 모두 존재하지 않더라도, 가져오고 싶을 때 사용한다.

 

1) 왼쪽 외부 조인 : 왼쪽에 있는 모든 레코드를 가져온다.

 

 

 

 

 

 

2) 오른쪽 외부 조인 : 오른쪽에 있는 모든 레코드를 가져온다.

 

 

 

3) 완전 외부 조인

 

 

 

 

 

 

[ 집계 함수 ]

 

- SELECT와 HAVING 절에서만 사용 가능하다.

- sum, avg는 숫자형 데이터 타입일 때만 사용 가능하다.

- NULL은 계산에서 제외된다.

 

 

1) COUNT

: 해당 필드에 값이 몇 개 있는지 출력한다.

 

 

 

 

 

 

2) SUM

 

 

 

3) AVG

 

 

 

 

 

 

4) MIN, MAX

 

 

 

 

 

 

1. GROUP BY

 

* 주의 *

group by절에 포함되지 않은 필드는 select 절에도 포함될 수 없다.

 

 

 

 

 

 

 

 

 

 

2. HAVING

: 그룹에 대한 조건을 명시할 때 사용한다.

 

 

반응형

'Computer Science > Database' 카테고리의 다른 글

SQL 6) 뷰(View)란? 뷰 생성 방법  (0) 2020.11.25
SQL 5) 중첩 질의 (서브쿼리 subquery)  (0) 2020.10.21
SQL 3) DML : select문  (0) 2020.10.20
SQL 2) DML : 삽입, 수정, 삭제, 검색  (0) 2020.10.20
SQL 1) SQL 기본, DDL  (0) 2020.10.20
반응형

1. 기본 구조

- From 절에서 department 테이블과 Student 테이블을 카티션 프로덕트한다.

- 밑의 관계대수와 같은 의미이다.

 

 

 

 

 

 

* 일반적으로 카티션 프로덕트 보다는 조인이나 자연 조인을 사용한다.

< 오라클에서 조인 사용법 >

 

1) SELECT s.name, d.dept_name

    FROM Student s, Department d

    WHERE s.dept_id = d.dept_id

         AND d.dept_name = '컴퓨터공학과';

 

 

2) SELECT s.name, d.dept_name 

    FROM Student s INNER JOIN Department d          <-- INNER 생략 가능

        ON (s.dept_id = d.dept_id)                            <-- () 생략 가능

    WHERE d.dept_name = '컴퓨터공학과';

 

3) SELECT s.name, d.dept_name

    FROM Student s INNER JOIN Department d          <-- INNER 생략 가능

        USING (dept_id)                                          <-- () 필요. 컬럼 앞에 alias 접두사 사용 불가 (s.dept_id X)

   WHERE d.dept_name = '컴퓨터공학과';

 

4) SELECT s.name, d.dept_name

    FROM Student s NATURAL JOIN Department d      <--  join 조건 생략

    WHERE d.dept_name = '컴퓨터공학과';

 

 

 

 

< 여러 개의 조건을 하고 싶을 때 >

 

1) SELECT s.name, d.dept_name, c.col_name 

    FROM (Student s JOIN Department d ON s.dept_id = d.dept_id)      <-- () 생략 가능                

                           JOIN Collage c  ON d.col_id = c.col_id           

    WHERE c.col_name = '정보과학대학';

 

2) SELECT s.name, d.dept_name, c.col_name 

    FROM Student s JOIN Department d  USING (dept_id)                       

                          JOIN Collage c  USING (col_id)           

    WHERE c.col_name = '정보과학대학';

 

 

 

 

 

 

 

 

 

 

 

 

2. 두 개 이상의 테이블이 포함된 질의

 

 

 

 

 

 

 

3. 레코드 정렬 : ORDER BY

 

 

이름과 학생 아이디로 정렬

-> 기본적으로 오름차순 정렬이다.

 

 

 

 

 

* 내림차순 정렬하려면 해당 필드명 뒤에 'desc'를 붙여주면 된다.

 

 

 

 

 

 

 

 

 

4. 재명명 연산

 

 

* 주의 *

특정 테이블에만 존재하는 변수의 테이블명은 생략 가능하다.

 

 

- 셀프 조인

 

- 필드의 재명명

 

 

 

 

 

 

5. LIKE 연산자

: 일부분만 일치하는 경우를 찾아야 할 때

< 문자열 패턴 >

_ : 임의의 한 개 문자에 대응

% : 임의의 여러 개 문자들에 대응

 

 

 

 

like 연산 예시

 

반응형
반응형

1. 레코드 삽입

레코드 삽입 형식

- 필드 리스트 순서대로 값 리스트도 작성하여야 한다.

- 필드 리스트에 나열되지 않은 필드는 NULL 값이 입력된다.

- 팰드 리스트는 생략 가능하다. -> 생략하면 값 리스트는 원래 테이블 열 순서대로 입력된다.

 

 

 

 

레코드 삽입 예시

 

특정 필드를 생략하는 경우

 

 

 

* 레코드 삽입 시 주의사항 *

외래키 필드를 포함하는 레코드를 삽입할 때,

참조하는 테이블의 해당 필드에 그 값을 갖는 레코드가 존재하여야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

2. 레코드 수정

 

 

 

 

name 필드에 값이 없는 조건은?

-> where name is null

But, count(*)는 특정 필드가 아닌 전체 레코드에 대한 연산이므로 null의 존재 여부와는 무관하다.

 

 

 

 

 

 

 

 

 

 

 

3. 레코드 삭제

 

 

 

 

 

 

* 주의 *

모든 레코드를 삭제한다고 하더라도 테이블은 삭제되지 않는다.

 

 

 

 

 

 

 

 

 

 

4. 레코드 검색

: 레코드 정렬, 재명명 연산, LIKE 연산, 집합 연산자, 외부 조인, 그룹화 및 집계 함수, 중첩 질의

 

- where 절은 생략 가능하다.

 

* 중요 *

from 절에서 여러 개의 테이블이 나열될 경우, 관계대수의 카디션 프로덕트를 의미한다.

 

 

* 중요 *

관계대수는 집합이기 때문에 중복되는 레코드를 제거해 주지만,

SQL에서는 중복되는 레코드를 그대로 검색한다.

 

 

 

 

 

- 중복 레코드를 제거하고 싶다면?

select 절에 distinct 키워드를 넣어주면 된다.

 

 

 

 

 

 

 

 

 

- select절에 필드 이름 외에도 산술식이나 상수를 사용할 수 있다.

 

 

반응형
반응형

1. SQL이란?

: Structured Query Language

: 관계형 데이터베이스를 위한 표준 질의 언어

 

 

- 질의어와 SQL

: 관계 대수나 관계 해석은 질의 언어의 이론적 배경을 제공하나, 상용 언어로 쓰기에는 어렵고 적절치 않다.

: 관계 대수는 질의 연산과 그것들의 순서까지 기술해야 한다.

: 반면, SQL은 자연어와 유사하고 수행 절차를 명시할 필요가 없는 비절차적 언어이므로 사용하기 용이하다.

 

 

 

 

 

 

2. SQL의 구성

1) DDL(Data Definition Language)

: 데이터의 저장 구조를 명시하는 언어

: 테이블 스키마의 정의, 수정, 삭제를 위한 명령문 제공

 

 

2) DML(Data Manipulation Language)

: 데이터를 접근하고 조작할 수 있게 하는 언어

: 레코드의 검색, 삽입, 삭제, 수정을 위한 명령문 제공

 

 

 

 

 

 

[ DDL ]

3. 테이블 생성 (기본키, 외래키 설정)

 

테이블 생성 형식
테이블 생성 예시

 

 

 

 

< 주요 데이터 타입 >

 

 

 

< 기본키 설정 >

 

기본키 설정 형식 및 예시

 

- pk_department 는 기본키의 이름이다.

- 기본키의 이름을 설정하지 않아도 된다면, 데이터 타입 뒤에 'primary key'라고만 입력해도 기본키가 된다.

 

 

 

 

 

< 외래키 설정 >

 

외래키 생성 형식 및 예시

- fk_student 는 외래키의 이름이다.

- 외래키의 이름을 설정하지 않아도 된다면 데이터 타입 뒤에 'references 참조하는 테이블(참조하는 기본키)' 를

 작성해주면 된다.

 

 

 

 

 

 

 

 

 

4. 테이블 삭제

 

테이블 삭제 형식

* 주의 *

다른 테이블에서 외래키로 참조하는 경우 삭제할 수 없다.

-> 해당 기본키를 삭제하거나, 외래키 제약조건을 삭제해야 한다.

 

 

 

 

 

 

 

 

 

 

5. 테이블 수정

 

 

- 테이블 추가 수정

테이블 추가 형식
테이블 추가 예시

 

 

 

- 테이블 삭제 수정

테이블 삭제 형식 및 예시

 

 

- 이 때에도 다른 테이블에서 외래키로 참조하는 기본키가 있는 경우 삭제 명령을 수행할 수 없다.

 

 

 

 

 

 

* 중요 *

외래키 제약조건을 삭제하는 방법 !!

[ alter table 테이블명 drop constraint 제약조건명 ]

 

 

 

 

반응형

'Computer Science > Database' 카테고리의 다른 글

SQL 3) DML : select문  (0) 2020.10.20
SQL 2) DML : 삽입, 수정, 삭제, 검색  (0) 2020.10.20
Oracle 오라클 테이블 스페이스 명령어  (0) 2020.10.16
Oracle 오라클 데이터 구조  (0) 2020.10.16
SQL Plus 명령어  (0) 2020.10.16
반응형

!! 스케줄링 알고리즘 !!

 

1. 선입선처리 스케줄링(FCFS)

: 프로세스를 요구 순서대로 할당합니다.(First Come First Served)

 

- 비선점 기법 으로 스케줄링 알고리즘 중에 가장 간단합니다.

- 선입선출 큐로 구현합니다.

- 일괄처리에는 효율적, 대화식 시스템에서는 사용자의 빠른 응답 요구에 부적합

 

1) 평균 반환시간 : (24 + 27 + 30) / 3 = 27

2) 평균 대기시간 : (0 + 24 + 27) / 3 = 17 

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 3 / 30 = 10%

5) 평균 반응시간(응답시간) : (0 + 24 + 27) / 3 = 17

 

 

 

 

1) 평균 반환시간 : (3 + 6 + 30) / 3 = 13

2) 평균 대기시간 : (0 + 3 + 6) / 3 = 9 

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 3 / 30 = 10%

5) 평균 반응시간(응답시간) : (0 + 3 + 6) / 3 = 3

 

 

 

 

 

 

 

 

 

 

 

 

2. 최단 작업 우선 스케줄링

: CPU 버스트 시간이 가장 짧은 작업에 CPU를 할당합니다.

 

- 평균 대기시간을 최소화하는 알고리즘입니다.

- 문제점 : 실행 시간의 길이 예측이 힘듭니다. -> 실제로 실행하면 실행시간이 달라질수도 있기 때문입니다.

 

1) 평균 반환시간 : (3 + 9 + 16 + 24) / 4 = 13

2) 평균 대기시간 : (0 + 3 + 9 + 16) / 4 = 7

3) CPU이용률 : 100%

4) 처리량(작업처리율) : 4 / 24 = 0.167

5) 평균 반응시간(응답시간) : (0 + 3 + 9 + 16) / 4 = 7

 

 

 

 

- 최단 작업 우선 스케줄링은 선점 또는 비선점 모두 가능합니다.

(선점 : 매번 프로세스가 도착할 때마다 최단 작업을 비교하여 더 짧은 작업이 있다면 해당 작업으로 변경합니다.)

(비선점 : 한 프로세스가 끝난 뒤에 남은 것들끼리 비교하여 할당합니다.)

 

 

 

(a) 선점 -> 문맥교환하는 데 시간이 소요됨

- 평균 반환시간 : { (17-0) + (5-1) + (26-2) + (10-3) } / 4 = 13

- 평균 대기시간 : { (10-1) + (1-1) + (17-2) + (5-3) } / 4 = 6.5

- CPU이용률 : 100%

- 처리량(작업처리율) : 4 / 26 = 

- 평균 반응시간(응답시간) : (0 + 0 + (17-2) + (5-3)) / 4 = 

 

(b) 비선점

- 평균 반환시간 : { (8-0) + (12-1) + (26-2) + (17-3) } / 4 = 14.25

- 평균 대기시간 : { 0 + (8-1) + (17-2) + (12-3) } / 4 = 7.75

- CPU이용률 : 100%

- 처리량(작업처리율) : 4 / 26 = 

- 평균 반응시간(응답시간) : (0 + (8-1) + (17-2) + (5-3)) / 4 = 7.75 

 

 

 

 

 

 

 

 

 

 

3. 우선순위 스케줄링

: 최고 우선순위 프로세스를 CPU에 할당합니다.

: 최단 작업 우선 스케줄링은 우선순위 스케줄링에 해당합니다.

: 선점, 비선점에 모두 적용 가능합니다.

 

문제)

: 기아 상태가 발생가능합니다.

(기아 상태란? 우선순위가 높은 프로세스들이 계속 들어오면 우선순위 낮은 프로세스들은 무한정 기다려야 하는 상태)

해결법)

: 에이징(Aging) - 오랫동안 시스템에서 대기하는 프로세스들의 우선순위를 점진적으로 증가시키는 방법입니다.

 

 

-> 선점과 비선점 모두 같은 그림이 나옵니다.

1) 평균 대기시간 : (0 + 1 + 6 + 16 + 18) / 5 = 8.2

 

 

 

 

 

 

 

 

 

 

 

4. 라운드 로빈 스케줄링 [ 순환 할당 스케줄링 ]

: 시분할 시스템을 위해 설계되었습니다.

: 규정 시간량이 지나면 인터럽트가 발생하며 문맥교환을 수행합니다.

: 준비큐는 FIFO 큐이면 순환큐로 설계합니다.

 

순환큐 예시
라운드 로빈 스케줄링

 

평균 반환시간 = { (16-1) + (8-1) + (26-2) + (25-3) } / 4

 

 

 

- 순환 할당 스케줄링은 선점 알고리즘입니다.

- 성능은 규정 시간량에 영향을 받습니다.

if 규정 시간량이 아주 클 경우, 평균 대기시간이 길어집니다.

if 규정 시간량이 매우 작을 경우, 문맥교환 횟수가 증가합니다.

-> 최적 규정 시간량은 시스템 특성 및 오버헤드, 프로세스에 따라 다릅니다.

 

- 반환시간도 규정 시간량에 영향을 받습니다.

if 규정 시간량이 매우 작을 경우, 반환시간이 증가합니다.

but 반환시간과 규정 시간량이 항상 반비례한 것은 아닙니다.

 

 

 

 

 

 

 

 

 

5. 다단계 큐 스케줄링

: 각 작업들을 서로 다른 묶음으로 분류할 수 있을 때 사용합니다.

: 준비상태의 큐를 종류별로 여러 단계로 분할합니다.

: 각 큐는 자신만의 독자적인 스케줄링 알고리즘을 가집니다.

: 큐들 사이에 시간을 나누어 사용가능합니다.

 

큐 5개를 가진 다단계 큐 스케줄링 알고리즘

 

- 각 큐는 순서대로 절대적인 우선순위를 가집니다.

- 앞의 세 가지 큐가 비어있어야, 네 번째 일과 처리 큐에 있는 프로세스가 실행이 됩니다.

 

 

 

 

 

 

 

 

 

 

 

6. 다단계 피드백큐 스케줄링

 

다단계 큐 : 작업이 시스템에 들어가면 한 큐에서만 고정

다단계 피드백큐 : 작업이 큐 사이를 이동 가능

 

-> 기아 상태 예방을 위해 에이징 방법을 활용합니다.

: 특정 큐에서 오래 기다린 프로세스를 우선순위가 높은 큐로 이동합니다.

 

 

 

 

 

 

 

 

 

7. HRN 스케줄링(Highest Response-rate Next)

: 단기 작업 우선 스케줄링의 약점인 긴 작업과 짧은 작업 간의 불평등을 보완한 기법입니다.

: 가변적인 우선순위를 갖는 단기 작업 우선 스케줄링입니다.

가변적 우선순위 계산법

- 비선점 알고리즘입니다.

 

 

 

 

 

* 정보처리기사 문제풀어보기 *

 

1. 선점 기법 : 문맥교환으로 인해 많은 오버헤드 초래

2. 비선점 기법 : 모든 프로세스 요구 공정히 처리, 응답시간예측 용이,

CPU 사용시간 짧은 프로세스가  프로세스들로 인해 오래기다림

3. 라운드 로빈 -> 시분할 시스템

4. HRN 방식 : 서비스 시간이 짧고, 대기 시간이  순서대로

5. 응답시간 줄이고 CPU 이용률 높이고

반응형
반응형

 

1. 다중 프로그래밍

: 여러 프로그램메모리에 적재합니다.

: 프로세서(CPU)를 분할 사용하여 프로세스 효율성 향상시킵니다.

 

-> 프로세스들을 프로세서에 할당하는 일련의 과정

: 각 프로세스의 실행 여부를 결정하므로 시스템 성능에 영향을 미칩니다.

 

 

 

 

프로세스 실행 예시

: 프로세스의 실행은 CPU 실행입출력 대기의 순환으로 구성됨

 

 

 

 

 

 

 

 

 

 

 

2. 프로세스의 종류

1) 입출력 중심 프로세스 : 대부분의 시간을 입출력에 소비

2) 프로세서(CPU) 중심 프로세스 : 대부분의 시간을 연산하는 데 소비

프로세스 종류

 

 

 

 

 

 

 

 

 

3. 스케줄러의 종류

1) 장기(작업) 스케줄러

: 프로세스의 생성 과정에서 프로세스의 준비 상태에 무엇을 추가할지 결정합니다.

2) 중기 스케줄러

: 작업의 혼합 개선 또는 메모리 가용량 증가를 위해 교체(Swapping) 작업을 합니다.

3) 단기(CPU) 스케줄러

: 미리 정해진 정책(알고리즘)에 따라 실행할 프로세스를 선택합니다.

 

스케줄러

                                                                            

 

 

 

 

 

 

4. 디스패처(Dispatcher)

: 문맥 교환을 수행하는 하드웨어 모듈입니다.

: 단기 스케줄러가 선택한 프로세스를 실질적으로 CPU에 할당합니다.

 

 

 

 

 

5. 다중 처리기 스케줄링

: 다중 프로세서 시스템의 스케줄링

: 동종 병렬컴퓨터와 이기종 분산컴퓨터로 구분 가능

: 여러 개의 CPU가 사용가능하면 스케줄링 문제는 더 복잡해집니다.

 

 

- 전역큐를 이용한 부하 공유 (Load Sharing)

: 쉬고 있는 프로세서는 전역큐에서 프로세스를 하나 선택합니다.

단점) 전역큐에 병목 현상이 발생할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

6. 실시간 스케줄링(Real-time)

: 프로세스 수행이 데드라인 이전에 완료를 보장합니다.

: 데드라인을 만족하는지 여부를 사전에 측정합니다.

-> 최대 수행 완료 시간이 데드라인을 만족해야 합니다.

 

- 종류

1) 경성(hard) 실시간 시스템 : 실시간 작업들을 반드시 주어진 시간 내에 완료해야 함

2) 연성(soft) 실시간 시스템 : 실시간 작업들이 일정 수준 이상 주어진 시간 내에 완료해야 함

 

 

 

 

* 중요 *

5. 스케줄링 알고리즘 비교 기준 

1) CPU 이용률

2) 처리량 또는 작업 처리율 : 단위 시간당 완료된 작업의 수

3) 총처리시간 또는 반환시간 : 기계에 진입한 시간과 완료한 시간의 차이

4) 대기시간 : 준비큐에서 대기하는 시간

5) 응답시간 또는 반응시간 : 요청을 제출하고부터 첫 번째 응답이 나올 때까지의 시간

 

 

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts