Computer Science 76
-
1. union / union all 두 집합을 중복을 제거하고 합집합 형태로 조회, union all은 중복제거 x select A.* from (select column1 , column2 from A_table union select column3 , column4 from B_table) A; 2. || , concat 문자열 합치기 select 'My name is ' || name; from name_table; --Tom Holland-- select concat('Hi ', name, ' is my name'); from name_table; --Hi Tom Holland is my name-- 3. substring 문자열 자르기 substring(문자열, 시작점, 시작점부터 개수) se..
-
CASECASE 특정 조건이 충족되었을 때 SQL코드를 실행하기 위해 CASE를 사용한다. 프로그래밍 언어에서 흔히 쓰이는 IF/ELSE 문과 비슷하다. 일반적인 CASE문과 CASE 표현식으로 쓸 수 있다. 두 방법 모두 결과는 같다. -- 기본 문법 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE some_other_result END SELECT a, CASE WHEN a = 1 THEN 'one' WHEN a = 2 THEN 'two' ELSE 'other' AS label END FROM test; -- CASE 표현식 CASE expression WHEN value1 THEN result1 WHEN value2 THEN ..
-
CREATE 테이블을 생성하는 명령어 -- 기본 문법 CREATE TABLE table_name( column_name TYPE column_constraint, column_name TYPE column_constraint, table_constraint table_cnostraint ) INHERITS existing_table_name; -- 더 단순한 문법 CREATE TABLE table_name( column_name TYPE column_constraint, column_name TYPE column_constraint, ); -- 예시: players 테이블 생성, player_id 컬럼은 serial pk CREATE TABLE players( player_id SERIAL PRIMARY..
-
AS AS문은 열이나 결과에 별칭(alias)을 부여한다. SELECT column AS new_name FROM table SELECT SUM(column) AS new_name FROM table → 컬럼명이 new_name으로 출력된다 AS연산자는 쿼리의 맨 마지막에 실행되기 때문에 WHERE, GROUP BY 호출, HAVING절 등에서는 쓸 수 없다. 정상 쿼리 SELECT customer_id, sum(amount) as total_spent from payment group by customer_id having sum(amount) > 100 실행되지 않는 쿼리, 컬럼이 없다고 뜨면서 실행되지 않는다. AS는 맨 마지막에 실행되기 때문에 alias된 컬럼명을 인식하지 못한다. SELECT ..
-
SQL 분류 SQL문은 DDL, DML, DCL(TCL)로 분류한다. DDL(Data Definition Language, 데이터 정의어) 데이터베이스를 정의하는 언어이며, 데이터리를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어 이다. 데이터베이스, 테이블등을 생성하는 역할을 한다. CREATE, ALTER, DROP, TRUNCATE 등이 있다. DML (Data Manipulation Language, 데이터 조작어) 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어 이다. 데이터베이스 사용자와 데이터베이스 관리 시스템 간의 인터페이스를 제공한다. SELECT, INSERT, UPDATE, DELETE 등이 있..
-
Semaphore semWait : Process 를 Block 시킬 수 있는 명령어이다. semSignal : 내가 아니라 Queue에 있는 프로세스를 Ready로 옮겨 실행할 수 있게 해준다. Semaphore는 Critical Section뿐 아니라, 많은 동기화 문제에 사용된다. ↳ 특히 Critical Section을 다룰 때는 무조건 초기 세마포 변수 값을 1로 설정해야 한다! Race Condition : 실행 순서에 따라 결과가 어떻게 될지 모르는 상황 → 여러 프로세스가 Critical Section 을 동시 접근할 때 발생한다. 어느 위치에 semWait과 semSignal를 사용할지 잘 선택해야 한다. Mutual Exclusion Using Semaphore 하늘색 네모 부분은 해당..
-
Requirements for Mutual Exclusion Mutual Exclusion Mutual Exclusion : 전체 코드가 아닌, Critical Section code 가 한 번에 하나의 프로세스만 실행할 수 있도록 하는 것. Mutual Exclusion 은 어떠한 경우에도 지켜져야 한다. 오직 하나의 프로세스만 Critical Section 의 자원에 접근할 수 있다. → Critical Section Code 가 아닌 코드는 막 섞여서(interleaving, overlapping) 실행되어도 상관 없다. Critical Section Code 와 Non-Critical Section Code 가 섞여 실행되는 것도 상관 없다. ⇒ Non-Critical Section Code 와 ..
-
🌟 Mutual Exclusion: Software Approach (3) 🌟 Mutual Exclusion이 지켜지는 것 중요 DeadLock이 걸릴 경우의 수 존재 → 둘 다 true이면 while문을 둘 다 돌게 된다. 🌟 Mutual Exclusion: Software Approach (4) 🌟 DeadLock과 LiveLock의 차이점 = while문을 빠져나올 가능성 내가 Critical Section에 들어가려면, while문 마지막에 본인 flag를 true로 바꾸고 while문에 있는 상대편 flag가 false인 것을 보고 Critical Section에 진입하기 때문에 Mutual Exclusion이 성립한다. LiveLock이 걸릴 가능성이 있다. → 한 줄 한 줄 번갈아가며 TIM..