반응형

자격증/SQLD 36

[SQL 첫걸음] 36강. 트랜잭션

트랜잭션 데이터베이스는 트랜잭션(Transaction)이라는 기능을 제공합니다. INSERT, UPDATE 명령에도 트랜잭션 기능을 사용하는 데 별도로 신경쓰지 않았던 이유는 자동 커밋(Auto Commit)이라 불리는 기능이 동작했기 때문입니다. 트랜잭션 앞서 정규화에서 사용했던 테이블 주문과 주문상품의 관계를 생각해보겠습니다. 이때 테이블 주문과 주문상품 사이에는 의존관계가 존재합니다. 주문 테이블에 행이 존재한다면 반드시 주문상품 테이블에도 행이 존재해야 합니다. 그렇지 않으면 주문한 상품이 없는데 주문이 된 상태이기 때문입니다. 따라서 주문 테이블에 행을 추가할 때 주문상품 테이블에도 행이 추가되어야 합니다. 발주처리 주문이 발생하면 기존 주문과 구분되는 주문번호를 발행해야 합니다. 보통은 AUT..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 35강. 정규화

정규화 정규화(Normalization)는 데이터베이스의 테이블을 규정된 올바른 형태로 개선해나가는 걸 의미합니다. 보통 설계 단계에서 행해지지만 기존 시스템을 바꿔야할 때도 정규화하는 경우가 있습니다. 정규화에는 순서가 존재하는데 이를 참고하여 관계형 데이터베이스가 효율적으로 동작하도록 만들 수 있습니다. 물론 최적의 설계란 상황에 따라 다르기 때문에 반드시 모든 걸 따라야하는 것은 아닙니다. 정규화 예를 들어 아래와 같은 주문 데이터가 저장된 주문 테이블이 존재한다고 가정해봅시다. 제1정규형 관계형 데이터베이스의 테이블에는 하나의 셀에 하나의 값만 저장할 수 있다는 제약이 있습니다. 따라서 아래와 같이 기존 주문상품열을 아래와 같이 상품코드, 상품명, 개수라는 열로 가지고 있는 주문상품이라는 테이블로..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 34강. 데이터베이스 설계

데이터베이스 설계 데이터베이스 설계는 곧 데이터베이스 스키마 내의 테이블, 인덱스, 뷰 등의 객체를 정의하는 것을 의미합니다. 스키마 내에 정의하기 때문에 스키마 설계라 불리기도 합니다. 이때 설계의 주된 내용은 테이블의 이름이나 열, 자료형을 결정하는 것입니다. 그리고 테이블 간의 관계를 생각하면서 여러 테이블을 정의하고 작성하게 됩니다. 논리명과 물리명 테이블을 설계할 때는 테이블 정의서나 설계도 등의 문서를 작성하는 경우가 많습니다. 일반적으로 그 양식은 DESC 명령을 수행한 것과 유사합니다. +--------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 33강. 관계형 모델

관계형 모델 관계형 데이터베이스는 관계형 모델(Relational Model)을 기반으로 작성된 데이터베이스입니다. 그러나 관계형 모델에서 사용하는 용어와 SQL의 용어가 완벽하게 일치하지는 않습니다. 관계형 모델 관계형 모델(Relational Model)의 기본적인 요소는 관계, 릴레이션(Relation)입니다. 관계형 모델에서 이 릴레이션은 약간 다른 의미를 가집니다. 관계형 모델의 릴레이션은 SQL에서 말하는 테이블(Table)에 해당합니다. 관계형 모델의 릴레이션에는 몇 가지 속성(Attribute)이 있습니다. 이 속성은 속성 이름과 형 이름으로 구성됩니다. 속성은 SQL에서 말하는 열(Column)에 해당합니다. 그리고 튜플(Tuple)이 곧 SQL에서 말하는 행(Row)을 의미합니다. 튜플..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 32강. 테이블 결합

테이블 결합 보통 데이터베이스는 하나의 테이블에 많은 데이터를 저장하지 않고 몇 개의 테이블로 나누어 저장합니다. 이처럼 여러 개로 나뉜 데이터를 하나로 묶어 결과를 내는 방법이 바로 테이블 결합이며 이 개념이 집합론에서는 곱집합입니다. 곱집합과 교차결합 곱집합은 두 개의 잡합을 곱하는 연산 방법으로 적집합 또는 카티전곱(Cartesian Product)라고도 불립니다. 교차결합(Cross Join) 데이터베이스 테이블은 집합의 한 종류이기 때문에 SELECT 명령에서 FROM 구에 두 개의 집합, 다시 말해 두 개의 테이블을 지정하면 이들은 곱집합으로 계산이 됩니다. 만약 아래와 같은 테이블 sample72_x와 sample72_y가 존재한다고 가정해봅시다. --sample72_x +------+ | ..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 31강. 집합 연산

집합 연산 관계형 모델을 채택한 데이터베이를 관계형 데이터베이스라 부릅니다. 이때 관계형 모델에서의 관계형은 수학 집합론의 관계형 이론에서 유래했습니다. 쉽게 설명하면 관계형 데이터베이스는 결국 데이터를 집합으로 간주해 다루기 쉽게 하는 목적에서 나온 개념입니다. SQL과 집합 SQL에서 하나의 행을 하나의 요소, 그리고 복수의 행을 반환한 결과 전체를 하나의 집합이라 생각하면 됩니다. UNION으로 합집합 구하기 합집합이란 집합 연산에서 집합끼리 서로 더한 것을 의미합니다. UNION SQL에서는 합집합을 계산하기 위해 UNION 키워드를 사용합니다. 아래와 같이 테이블 sample71_a과 sample71_b가 존재한다고 가정해봅시다. --sample71_a +------+ | a | +------+..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 30강. 뷰 작성과 삭제

뷰 작성과 삭제 FROM 구에 서브쿼리를 사용할 수 있다는 걸 서브쿼리 부분에서 알 수 있었습니다. 이때 서브쿼리에 이름을 붙여 데이터베이스 객체화하여 쓰기 쉽게 한 것을 뷰(View)라고 합니다. -- 뷰 생성 > CREATE VIEW 뷰_테이블명 AS SELECT * FROM 테이블명; -- 뷰 생성 (열 지정) > CREATE VIEW 뷰_테이블명(컬럼명, 컬럼명, 컬럼명) AS SELECT 컬럼명, 컬럼명, 컬럼명 FROM 테이블명; -- 뷰 삭제 > DROP VIEW 뷰_테이블명; 뷰 본래 객체로 사용할 수 없는 SELECT 명령을 객체로서 이름을 붙여 관리할 수 있도록 한 것이 바로 뷰입니다. 따라서 뷰를 참조하면 정의된 SELECT 명령의 실행결과를 테이블처럼 사용할 수 있습니다. 예를 들어..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 29강. 인덱스 작성과 삭제

인덱스 작성과 삭제 인덱스(Index)는 DDL(Data Definition Language)을 사용하여 작성하거나 삭제합니다. 사실 표준 SQL에서는 인덱스 자체가 데이터베이스 제품에 의존하는 선택적인 항목으로 취급되어 CREATE INDEX 명령이 존재하지 않습니다. 하지만 대부분의 유명한 데이터베이스 제품에는 인덱스 구조가 도입되어 있고 비슷한 방법으로 이를 관리할 수 있습니다. 인덱스 작성 CREATE INDEX 명령으로 인덱스를 만들 수 있습니다. 이때 인덱스에 이름을 붙여 관리하는데, 인덱스가 데이터베이스 객체가 될지 아니면 테이블의 열처럼 취급될지는 데이터베이스 제품에 따라 다릅니다. Oracle, DB2 등에서 인덱스는 스키마 객체가 됩니다. 따라서 스키마 내에서 이름이 중복되지 않게 관리..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 28강. 인덱스 구조

인덱스 구조 인덱스 인덱스(Index)는 색인이라고도 불리며 그 역할은 검색속도를 향상시키는 데 있습니다. 여기서 검색은 SELECT 명령 및 WHERE 구를 통해 조건을 지정하여 그에 알맞는 행을 찾는 과정을 의미합니다. 테이블에 인덱스가 존재하면 효율적인 검색이 가능해져 WHERE 구로 조건이 지정된 SELECT 명령의 처리 속도가 향상됩니다. 예를 들어 목차를 생각하면 편합니다. 백과사전에 목차가 존재하지 않으면 과일이라는 단어를 찾을 때 앞에서부터 하나씩 다 살펴봐야 합니다. 그러나 목차가 존재하면 해당 목차를 통해 과가 일치하는 곳으로 바로 가서 훨씬 효율적으로 찾을 수 있습니다. 인덱스 또한 이처럼 검색에 사용되는 키워드와 대응하는 행의 장소가 저장되어 있습니다. 이때 인덱스는 테이블과는 별개..

자격증/SQLD 2022.04.04

[SQL 첫걸음] 27강. 제약

제약 CREATE TABLE로 테이블을 정의할 때 NOT NULL과 같은 제약 또한 정의할 수 있습니다. 이러한 제약은 저장될 데이터를 단어 의미 그대로 제한하는 역할을 합니다. NOT NULL 외에도 대표적인 제약조건으로는 기본기(Primary Key) 제약이나 외부참조(정합) 제약 등이 있습니다. > ALTER TABLE 테이블명 ADD 추가할 컬럼명 데이터 유형; > ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명; > ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터 유형 [DEFAULT 식] [NOT NULL], 컬럼명2 데이터 유형 [DEFAULT 식] [NOT NULL]); > ALTER TABLE 테이블명 RENAME COLUMN 변경해야할 컬럼명 TO 새로운 ..

자격증/SQLD 2022.04.04
반응형