본문 바로가기

전체 글83

데이터베이스 첫걸음 정리 - 26장. 테이블 작성, 삭제, 변경 SELECT, INSERT, DELETE, UPDATE는 SQL 명령 중에서도 DML로 분류됩니다. DML은 데이터를 조작하는 명령입니다. 데이터베이스를 정의할 때는 쓰는 명령은 DDL로 지금부터 DDL을 사용해서 스키마를 정의해보겠습니다. 테이블 작성 DDL은 모두 같은 문법을 사용합니다. CREATE로 작성, DROP으로 삭제, ALTER로 변경할 수 있습니다. 뒤이어 어떤 종류의 객체를 작성, 삭제, 변경할 것인지 지정합니다. 예를들어, 테이블을 작성한다면 CREATE TABLE, 뷰를 작성한다면 CREATE VIEW와 같이 지정하면 됩니다. 이제 테이블을 만들어봅시다. 테이블은 CREATE TABLE을 사용하여 다음과 같이 작성합니다. CREATE TABLE 테이블명( 열이름 자료형 옵션, 열이름.. 2022. 9. 25.
데이터베이스 첫걸음 정리 - 25장. 데이터베이스 객체 처음 RDBMS를 설치하면 데이터베이스는 비어있는 상태입니다. 여기에 테이블이나, 뷰, 인덱스, 프로시저 등의 데이터베이스 객체를 작성해 데이터베이스를 구축합니다. 이번에는 데이터베이스 객체를 생성하거나 삭제하는 등의 관리방법에 대해 알아보겠습니다. 데이터베이스 객체 데이터베이스 객체란 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말입니다. 단순히 객체라고 하면, C++이나 자바에서 사용하는 객체지향 프로그래밍의 “객체"와 혼돈하는 경향이 있는데, 데이터베이스 내의 객체라는 의미로 “데이터 베이스 객체"라고 부릅니다. 객체는 데이터베이스 내에 실체를 가지는 것을 말하며 객체의 종류에 따라 데이터베이스에 저장되는 내용도 달라집니다. 대표적으로 객체에 해당하는 것을 테이블로, 테이.. 2022. 9. 24.
데이터베이스 첫걸음 정리 - 24장. 상관 서브쿼리 EXISTS EXISTS와 서브쿼리를 사용해 검색할 때 해당 데이터가 존재하는지 여부를 판별할 수 있습니다. EXISTS (SELECT 명령) 먼저, 다음과 같은 테이블이 존재한다고 가정해봅시다. 현재 other에 존재하는 id와 sample의 id가 같은 행에 대해서 a의 값을 exist로 변경하고 싶다고 가정해봅시다. 다음과 같이 UPDATE 구를 사용하여 other의 id 값을 확인 후 WHERE로 지정해서 변경할 수 있습니다. UPDATE sample SET a = "exist" WHERE id=3 UPDATE sample SET a = "exist" WHERE id=5 하지만 위와 같은 방법은 데이터가 적을때는 쉽게 처리할 수 있지만 데이터가 많아질수록 실수하기 쉬워지고 시간이 오래걸립니다. 이.. 2022. 9. 24.
데이터베이스 첫걸음 정리 - 23장. 서브쿼리 서브쿼리란? 서브쿼리는 SQL 명령문 안에 지정하는 하부 SELECT 명령으로 괄호로 묶어 지정합니다. (SELECT 명령) 문법에는 간단하게 SELECT 명령이라고 적었지만 SELECT 구, FROM 구, WHERE 구 등 SELECT 명령의 각 구를 기술할 수 있습니다. 서브쿼리는 SQL 명령의 WHERE 구에서 주로 사용되며 WHERE 구는 SELECT, DELETE, UPDATE 구에서 사용할 수 있는데 이들 중 어떤 명령에서든 서브쿼리를 사용할 수 있습니다. 물론 상황에 따라 다른 구에서도 사용할 수 있습니다. DELETE의 WHERE 구에서 서브쿼리 사용 먼저 DELETE 명령의 WHERE 구에서 서브쿼리를 사용하는 예를 살펴보겠습니다. select * from sample; sample 테이.. 2022. 9. 21.
데이터베이스 첫걸음 정리 - 22장. 그룹화 - GROUP BY GROUP BY 구를 사용하면 집계함수로 넘겨주었던 집합을 그룹으로 나눌 수 있습니다. 그룹화를 통해 집계함수의 활용 범위를 넓힐 수 있습니다. GROUP BY로 그룹화 GROUP BY를 사용하면 특정 열을 그룹화시킬 수 있습니다. SELECT 열명 FROM 테이블명 GROUP BY 열명; 현재 다음과 같은 테이블이 존재한다고 가정해봅시다. 해당 테이블의 name을 GROUP BY를 통해 그룹화 시켜보겠습니다. SELECT name FROM product GROUP BY name; DISTINCT를 지정했을 때 처럼 중복이 제거되어 검색된 것을 볼 수 있습니다. GROUP BY 구에 열을 지정하여 그룹화하면 지정된 열의 값이 같은 행이 하나의 그룹으로 묶입니다. DISTINCT와 GROUP BY의 차이 .. 2022. 9. 20.
데이터베이스 첫걸음 정리 - 21장. COUNT 이외의 집계함수 집계함수 SUM SUM 집계함수를 사용하면 집합의 합계를 구할 수 있습니다. 예를 들어, 1, 2, 3 이라는 세 개의 값을 가지는 집합이 있다고 할때 SUM 집계함수를 사용하면 1 + 2 + 3으로 계산하여 6이라는 값으로 반환합니다. 다음은 SUM의 사용예시입니다. SELECT SUM(quantity) FROM product; quantity의 전체 합인 21이 잘 출력되는 것을 볼 수 있습니다. SUM 집계함수에 지정되는 집합은 수치형 뿐으로, 문자열 형이나 날짜 시간형의 집합에서 합계를 구할수는 없습니다. 💡 SUM 함수의 경우에도 NULL 값을 무시하고 계산합니다. 집계함수 AVG 집계함수 AVG를 사용하면 평균값을 간단하게 구할 수 있습니다. 다음은 AVG 함수의 사용예시입니다. select .. 2022. 9. 17.
데이터베이스 첫걸음 정리 - 20장. 행 개수 구하기 - COUNT SQL은 데이터베이스라 불리는 데이터 집합을 다루는 언어입니다. 이 같은 집합의 개수나 합계가 궁금하다면 SQL이 제공하는 집계함수를 사용하여 간단하게 구할 수 있습니다. COUNT SQL은 집합을 다루는 집계함수를 제공합니다. 일반적인 함수는 인수로 하나의 값을 지정하는데 비해 집계함수는 인수로 집합을 지정합니다. 이 때문에 집합함수라고도 불립니다. 즉, 집계함수는 집합을 특정방법으로 계산하여 그 결과를 반환하는 함수입니다. 집계함수 중에 하나인 COUNT 함수는 인수로 주어진 집합의 개수를 구해 반환합니다. COUNT(집합) 이번에는 COUNT의 사용예시입니다. select COUNT(*) FROM sample; sample 테이블의 현재 데이터가 두개가 들어가 있기 때문에 결과값도 2가 출력되는 것.. 2022. 9. 14.
경쟁상황 (Race Condition), 뮤텍스, 세마포어 경쟁 상황(Race Condition)이란? 동시에 여러 개의 프로세스가 동일한 자료를 접근하여 조작하고, 그 실행 결과가 접근이 발생한 특정 순서에 의존하는 상황을 경쟁 상황(race condition)이라고 합니다. 경쟁 상황 예시 여러개의 프로세스가 어떤 자원을 공유하게 된다면 데이터의 무결성에 문제가 생길 수 있습니다. static int count; func thread_1() { for (int i = 0; i < 10000000; i++) { count++; } } func thread_2() { for (int i = 0; i < 10000000; i++) { count--; } } 위의 코드처럼 서로 다른 쓰레드가 count라는 하나의 변수에 접근한다고 가정해봅시다. 위의 코드의 값은 같.. 2022. 9. 11.