본문 바로가기

sql

(22)
트랜잭션 트랜잭션은 데이터베이스에서 수행되는 작업의 논리적인 단위를 의미합니다. 이는 데이터베이스에서 데이터를 읽거나 쓸 때 데이터의 무결성을 보장하고, 일관성을 유지하기 위해 필요한 개념입니다. ACID는 트랜잭션이 안전하게 수행되는 것을 보장하기 위한 특성들을 나타냅니다. 트랜잭션의 특성 (ACID) 원자성(Atomicity): 트랜잭션 내의 모든 작업은 원자적(atomic)으로 간주됩니다. 즉, 모든 작업은 완전히 수행되거나 전혀 수행되지 않아야 합니다. 트랜잭션의 모든 단계가 성공하면 트랜잭션을 커밋하고, 하나라도 실패하면 롤백하여 트랜잭션을 취소합니다. 일관성(Consistency): 트랜잭션 전후의 데이터베이스 상태는 항상 일관되어야 합니다. 트랜잭션의 실행 전과 후에 데이터베이스는 일관된 제약 조건을..
인덱스와 뷰 인덱스(Index)와 뷰(View)는 관계형 데이터베이스에서 데이터를 효율적으로 조작하고 관리하는 데 도움을 주는 데 사용됩니다. 인덱스(Index): 개념: 인덱스는 데이터베이스 내의 특정 열(또는 열의 집합)에 대한 빠른 검색 및 접근을 가능하게 합니다. 이는 데이터베이스에서 특정 값 또는 범위를 검색할 때 속도를 향상시킵니다. 종류: 클러스터형 인덱스(Clustered Index): 데이터베이스 테이블의 행을 저장하는 데 사용되며, 주로 기본 키(primary key)에 생성됩니다. 한 테이블당 하나의 클러스터형 인덱스만 가질 수 있습니다. 비클러스터형 인덱스(Non-Clustered Index): 데이터베이스 테이블의 행을 저장하지 않고 별도의 데이터 구조에 인덱스 키 값과 해당 키 값이 가리키는..
서브쿼리(Subquery) 서브쿼리는 SQL 문 안에 포함된 또 다른 SQL 문입니다. 메인(외부) 쿼리에 포함되어 있으며, 메인 쿼리의 결과에 따라 실행됩니다. 주로 데이터 검색, 필터링, 조건 확인 등의 작업에 사용됩니다. 서브쿼리의 종류: 단일 행 서브쿼리 (Single-Row Subquery): 서브쿼리가 한 번에 하나의 행만 반환합니다. 주로 비교 연산자와 함께 사용되어 단일 값을 비교하거나 조건에 따라 단일 값을 선택합니다. SELECT column1 FROM table1 WHERE column1 = (SELECT column2 FROM table2 WHERE condition); 다중 행 서브쿼리 (Multi-Row Subquery): 서브쿼리가 여러 행을 반환할 수 있습니다. IN, ANY, ALL과 같은 비교 연산..
조인(JOIN) INNER JOIN: INNER JOIN은 두 테이블 간의 공통된 값을 기준으로 데이터를 결합합니다. 즉, 양쪽 테이블에서 일치하는 행만 결과에 포함됩니다. 예를 들어, 주문 테이블과 제품 테이블이 있을 때, INNER JOIN을 사용하여 주문과 해당 제품 정보를 결합할 수 있습니다. 결과는 주문과 해당 제품 정보가 모두 있는 행만 반환됩니다. LEFT JOIN: LEFT JOIN은 왼쪽 테이블의 모든 행과 오른쪽 테이블에서 일치하는 행을 결합합니다. 오른쪽 테이블에 일치하는 행이 없는 경우에도 왼쪽 테이블의 모든 행이 결과에 포함됩니다. 예를 들어, 주문 테이블과 제품 테이블이 있을 때, LEFT JOIN을 사용하여 주문과 해당 제품 정보를 결합할 수 있습니다. 결과는 모든 주문과 해당 제품 정보가 있..
날짜 및 시간함수 : DATE0, TIMEO, TIMESTAMPO DATE(): DATE 함수는 날짜를 생성하거나 형식을 변환하는 데 사용됩니다. 일반적으로 날짜를 문자열로 입력하여 해당하는 날짜 값을 생성합니다. 예를 들어, DATE('2022-02-28')은 '2022-02-28'을 날짜 값으로 변환합니다. TIME(): TIME 함수는 시간을 생성하거나 형식을 변환하는 데 사용됩니다. 일반적으로 시간을 문자열로 입력하여 해당하는 시간 값을 생성합니다. 예를 들어, TIME('14:30:00')은 '14:30:00'을 시간 값으로 변환합니다. TIMESTAMP(): TIMESTAMP 함수는 날짜와 시간을 모두 포함하는 값을 생성하거나 형식을 변환하는 데 사용됩니다. 일반적으로 날짜와 시간을 문자열로 입력하여 해당하는 타임스탬프 값을 생성합니다. 예를 들어, TIME..
숫자함수 : SUMO, AVGO, COUNTO, MINO, MAXO SUM(): SUM 함수는 주어진 열의 모든 값을 합산합니다. 주어진 열의 모든 값들을 더하여 총합을 반환합니다. 예를 들어, SUM(column_name)은 해당 열의 모든 값의 합계를 반환합니다. AVG(): AVG 함수는 주어진 열의 값들의 평균을 계산합니다. 주어진 열의 값들의 총합을 해당 열의 레코드 수로 나눈 평균값을 반환합니다. 예를 들어, AVG(column_name)은 해당 열의 값들의 평균을 반환합니다. COUNT(): COUNT 함수는 주어진 열의 값들의 개수를 세어 반환합니다. NULL 값은 무시되며, 열의 비어있지 않은 값들의 개수를 반환합니다. 예를 들어, COUNT(column_name)은 해당 열에 있는 값들의 개수를 반환합니다. MIN(): MIN 함수는 주어진 열의 최소값..
문자열 함수: CONCAT0, SUBSTRINGO, UPPER, LOWERO CONCAT(str1, str2, ...): CONCAT 함수는 하나 이상의 문자열을 연결하는 데 사용됩니다. 매개변수로 전달된 모든 문자열을 연결하여 하나의 문자열로 반환합니다. 예를 들어, CONCAT('Hello', ' ', 'World')는 'Hello World'를 반환합니다. SUBSTRING(str, start, length): SUBSTRING 함수는 주어진 문자열의 일부분을 추출하는 데 사용됩니다. 첫 번째 매개변수는 추출할 문자열이고, 두 번째 매개변수는 시작 위치를 나타내며, 세 번째 매개변수는 추출할 문자열의 길이입니다. 예를 들어, SUBSTRING('Hello World', 1, 5)는 'Hello'를 반환합니다. UPPER(str): UPPER 함수는 문자열을 모두 대문자로 변..
제약 조건 (Constraints) 설정 제약 조건(Constraints)은 데이터베이스 테이블의 열에 적용되는 규칙으로, 데이터의 무결성을 보장하고 데이터의 일관성을 유지하는 데 사용됩니다. 제약 조건을 사용하면 특정 조건을 충족하지 않는 데이터가 테이블에 삽입되거나 수정되는 것을 방지할 수 있습니다. 주요한 제약 조건에는 다음과 같은 것들이 있습니다: PRIMARY KEY: 주 키로 사용되는 열에 대한 제약 조건으로, 각 행의 고유성을 보장합니다. FOREIGN KEY: 다른 테이블의 주 키와 관련된 열에 대한 제약 조건으로, 데이터 무결성을 유지하고 참조 무결성을 보장합니다. UNIQUE: 열에 중복되지 않는 값만 포함되도록 하는 제약 조건입니다. NOT NULL: 열에 NULL 값을 허용하지 않도록 하는 제약 조건입니다. CHECK: 열..