DB 생성 & 한글 인코딩 설정 DB를 생성하고 한글값을 저장하기 위해서는 인코딩 값을 utf8로 설정해줘야 한다. -- db 생성 & 한글 설정 create database test_db character set = 'utf8' collate = utf8_general_ci; -- db 사용 use test_db; Table 생성 -- table 생성 create table 테이블명 ( 컬럼이름 자료형 제약조건, 컬럼이름 자료형 제약조건 ); -- 예시 create table test_table2( data1 int(10) primary key, data2 varchar(10) not null, data3 float(10, 2) ); 테이블 생성시 type에 올 수 있는 것들 모든 자료형을 확인하고 싶..
Set 두 select 문을 통해 얻어온 결과를 집합 연산을 통해 하나의 결과로 만드는 것을 set이라고 한다. 합집합, 교집합, 차집합 등 집합 연산을 알 수 있다. 집합 연산을 하기 위해서는 두개의 select문을 통해 가져오는 컬럼이 같아야 한다. 합집합 : UNION (중복없이), UNION ALL (중복 포함해서) 교집합 : JOIN을 통해서 만들어야 한다. 차집합 : 서브쿼리를 통해서 만들어야 한다. 예시 이력에 'Senior Staff' or 'Staff'가 있는 경우를 모두 가져온 경우 select * from titles where title in ('Senior Staff', 'Staff'); 10005번 사원의 경우 두가지 모두 갖고 있음을 알 수 있다. 이러한 중복이 있는 경우에서 ..
서브쿼리 쿼리문 내에 쿼리문이 있는 것을 서브 쿼리라고 한다. 조건문 등을 만들 때 값을 직접 지정하지 못하고 쿼리문을 통해 구해 와야할 경우 서브쿼리를 통해 값을 구해서 조건문을 완성할 수 있다. EX. 급여액의 평균이상의 사원을 가져온다고 하면 평균을 구해야 쿼리문을 짤수가 있다. 서버쿼리를 짤때 당황하지말고 일단 서브쿼리로 만들어야 할 부분, 즉 알 수 없는 조건값을 배제하고 먼저 일반 쿼리문을 짠다. 이 후 해당 조건값에 대한 부분을 가져오기 위한 쿼리문을 짜고 두 쿼리문을 합쳐서 하나로 만든다. 현재받는 급여의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다. -- 현재받는 급여의 평균보다 많이 받는 사원들의 사원번호, 급여액을 가져온다. select emp_no, salary from..
조인 세타조인 : 비교연산자를 가지는 조인 (=, !=, , =) 동등조인 : = 연산자를 사용하는 조인 자연조인 : 동등조인을 진행하는데 중복되는 모든 컬럼은 제거하여 보여준다. 외부조인 : 매칭되는 값이 없어도 NULL을 넣어서 반환한다. (왼쪽, 완전, 오른쪽 3가지 경우가 존재) 세미조인 : 자연조인을 진행한 결과에 대해서 한쪽 테이블만 반환한다. (EX. 주문내역이 있는 고객만 조회) 참고 where절에서 공통 속성에 대해 조건을 달아주지 않으면 다대다 조인이 된다. 즉 카티전 프로덕트가 되는것. 동등조건을 달아주어야 동등조인이 된다. 조인을 할 때는 테이블의 이름을 {,} 로 구분하여 작성하고, 가져올 컬럼명을 적어주면 원하는 데이터를 가져올 수 있다. EQUI JOIN _ 동등조인 동등조인 ..
Group by having Group by : select 쿼리에 대해서 특정 속성값을 기준으로 분류하여 가져올 수 있다. -- Group by -- 사원의 수를 성별로 구별해서 가져온다. select gender, count(*) from employees group by gender; -- 각 부서에 근무하고 있는 사원들의 수 select dept_no, count(*) from dept_emp where to_date = '9999-01-01' group by dept_no; -- 각 부서별 과거의 매니저의 수 select * from dept_manager; select dept_no, count(*) from dept_manager where to_date '9999-01-01' group b..
Multi-level Queue Ready Queue를 한줄이 아니라 여러줄로 분할한다. (예시) foreground Queue (interative) background Queue (batch - no human interaction) 등등 각 큐는 독립적인 스케줄링 알고리즘을 가질 수 있다. (예시) foreground Queue - RR 스케줄링 background Queue - FCFS 스케줄링 큐에 대한 스케줄링이 필요하다. 두가지 방식이 존재 방법 1) Fixed priority scheduling 무조건 foreground에 먼저 service를 제공하고, 그다음에 가능할 때 background에 제공한다. → 우선순위를 무조건 지키는 형태로 Starvation을 유발할 수 있다. 방법 2)..
FCFS (First come First Service) non-preemptive 방식, 먼저 잡으면 빼앗기지 않고 먼저 처리한다. 만약 첫 프로세스의 소요시간이 매우 길다면 뒤의 프로세스의 소요시간에 상관 없이 기다려야 하므로 매우 비효율적이다. 첫 프로세스의 소요시간에 매우 의존적이다. Convoy effect 가 발생할 수 있다. - short process behind long process 문제 P 프로세스 : burst Time - P1 : 24 - P2 : 3 - P3 : 3 p1 → p2 → p3 순서로 매우 비슷한 시간에 왔다고 가정 Average wating time p1 (0) + p2 (24) + p3 (27) = 51 / 3 == 17 SJF (Shortest Job First)..
CPU and I/O Bursts 프로그램 실행중 주어진 명령문의 종류에 따라 구분 I/O burst : I/O를 실행하고 있는 단계 CPU burst : CPU만 연속적으로 사용하면서 명령어를 실행하는 단계 즉 프로그램이 실행중이라는 것은 CPU burst와 I/O burst가 반복적으로 번갈아가면서 실행중이라는 것이다 단, 프로그램마다 빈도수와 burst길이의 차이는 있다 CPU-burst Time의 분포표 I/O bound job : I/O burst의 빈도 수가 높은 job CPU bound job : CPU burst의 정도가 많은 job 대체로 I/O bound job는 burst의 시간이 짧고 빈도수가 높았고, CPU bound job은 burst의 시간은 길지만, 빈도수가 낮았다 I/O b..
그룹함수 COUNT SUM AVG MAX MIN 쿼리문 -- 사원 중 남자의 수 select count(*) from employees where gender='M'; -- d005부서에 근무하고 있는 사원의 수 (to_date가 9999-01-01인 경우) select count(*) from dept_emp where to_date='9999-01-01'; -- 현재 받고있는 급여의 총합 select sum(salary) from salaries where to_date='9999-01-01'; -- 현재 받고있는 급여의 평균 select avg(salary) from salaries where to_date='9999-01-01'; -- 현재 받고있는 급여의 최대금액 select max(salary..
관계대수 - Relation Algebra 릴레이션을 내부적으로 처리하기 위한 연산들의 집합 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어 검색 질의를 기술하는 언어 사용자는 SQL을 사용하여 관계 데이터베이스에 릴레이션을 정의하고, 관계 데이터베이스에서 정보를 검색하고, 조작하고, 무결성 제약조건을 명시할 수 있다. 집합연산 집합 연산은 두 개의 릴레이션을 대상으로 하는 이항 연산자로 카티전 프로덕트를 제외한 3개의 연산은 두개의 릴레이션의 차수 및 도메인과 속성의 순서가 동일해야 한다. 즉, 속성의 개수가 같고, 속성의 도메인이 같고, 속성의 순서가 동일해야 합병 가능 (Union compatible) 하다. Union _ 합집합 두 릴레이션의..
ARP ARP는 3계층의 프로토콜 (정확히 하면 2.5계층 프로토콜, 연관이 없는 계층 사이에서 징검다리 역활을 해주는 프로토콜) 데이터가 전달되어야 할 목적지 장비의 3계층 주소(IP)를 가지고 있는 중계 장비가 2계층의 서비스를 이용하려면 해당 목적지의 2계층 주소를 알아야 가능하다. 이때 2계층 주소를 알아내는 것이 ARP의 주요 기능이다. 2계층 주소를 이용해서 3계층 주소를 알아내는 것을 RARP라고 한다. Q. 3계층 주소와 2계층 주소를 다르게 한 이유는? Q. 하나의 주소로 두 계층의 기능을 모두 수행하지 않는 이유는? A. 각 계층별로 맡은 임무에 따라 주소의 역활이 다르기 때문이다. 2계층은 좁은 지역 (수백 m) 내에서 상대적으로 한정적인 수의 장비 간 데이터 전달이 목적 3계층은 넓..
프로세스의 생성과 복사, 전환 프로그램이 실행할 때 프로세스를 새로 생성. fork() 시스템 호출을 통해 실행중인 부모 프로세스를 복사하여 똑같은 내용의 새로운 자식 프로세스 생성. exec() 시스템 호출을 통해 기존의 프로세스를 새로운 프로세스로 전환. 부모 프로세스는 여러 자식 프로세스를 가질수 있다. 프로세스의 트리 (계층 구조)를 형성한다. 프로세스는 자원을 필요로 하는데, 운영체제로부터 받으며 프로세스 간 공유할 수 있다. 자원의 공유 방식 3가지 부모와 자식이 모든 자원을 공유하는 모델 일부를 공유하는 모델 전혀 공유하지 않는 모델 → 일반적으로 프로세스는 자원의 할당으로부터 경쟁관계이므로 대부분 공유를 하지 않는다. 수행 방식 2가지 부모 자식이 공존하며 수행되는 모델 자식이 종료될 때까..
- Total
- Today
- Yesterday