DEVELOPER B 🌱/Database

    [SQLD] 서브쿼리(Subquery) 요약

    [SQLD] 서브쿼리(Subquery) 요약

    > 서브 쿼리 - 서브쿼리란 하나의 SQL문안에 포함되어 있는 또 다른 SQL 문을 말한다. 즉, 서브쿼리가 메인쿼리에 포함되는 종속적인 관계이다. - 큰 개념의 조인에 포함시킬 수 있으나, 보통은 조인과 구분한다. - 서브쿼리를 문법적으로 구분하는 가장 쉬운 방법은 SQL문이 괄호로 묶여져 있으면 서브쿼리이다. - 일반적으로 서브쿼리의 위치에 따라 다음과 같이 나눌 수 있다. WHERE : NESTED SUBQUERY FROM : INLINE VIEW SELECT : SCALAR SUBQUERY - SCALAR SUBQUERY의 경우 함수적 특성을 가짐 - 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다. > 서브 쿼리와 조인 - 조인과 서브쿼리를 논리적..

    [SQLD] 집합 연산자(SET OPERATOR) 요약

    [SQLD] 집합 연산자(SET OPERATOR) 요약

    > 집합 연산자 (SET OPERATOR) - 기존의 조인에서는 FROM절에 검색하고자 하는 테이블을 나열하고, WHERE절에 조인 조건을 기술하여 원하는 데이터를 조회할 수 있었다. 하지만 집합 연산자는 여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식을 사용한다. 즉, 집합 연산자는 2개 이상의 질의 결과를 하나의 결과로 만들어 준다. - 일반적으로 집합 연산자를 사용하는 상황은 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 한의 결과로 합치고자 할 때와 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때 사용할 수 있다. 이외에도 튜닝 관점에서 실행계획을 분리하고자 하는 목적으로 사용할 수 있다. - 집합 연산자를 사용하기 위해서는 다음 제약 조건을 만족해야 한다. S..

    [SQLD] STANDARD JOIN 요약

    [SQLD] STANDARD JOIN 요약

    > STANDARD SQL - 현재 우리가 사용하는 많은 시스템의 두뇌 역할을 하는 관계형 데이터베이스를 유일하게 접속할 수 있는 언어가 바로 SQL이다 - 향후 SQL에서 ORDBMS 등 필요한 기능을 정리하고 호환 가능한 여러 기준을 제정한 것이 1999년에 정해진 ANSI/ISO-SQL3이다. 이후 가장 먼저 ANSI/ISO-SQL3의 기능을 시현한 것이 ORACLE의 8i/9i 버전이라고 할 수 있다. - 현재 사용되는 데이터베이스는 대부분 SQL 2003을 기준으로 하고 있다. > FROM절 JOIN 형태 - ANSI/ISO SQL에서 규정한 JOIN 문법은 WHERE 절의 검색 조건과 테이블간의 JOIN 조건을 구분 없이 사용하던 기존 방식을 그대로 사용할 수 있으면서, 추가된 선택 기능으로 ..

    [SQLD] 조인(JOIN) 요약

    [SQLD] 조인(JOIN) 요약

    > JOIN - JOIN이 필요한 기본적인 이유는 과목 1에서 배운 정규화에서부터 출발한다. 정규화란 불필요한 데이터의 적합성을 확보하고 이상현상 발생을 피하기 위해, 테이블을 분할하여 생성하는 것이다. - 테이블을 정규화하여 데이터를 분할하게 되면 성능이나 비용측면의 문제는 해결된다. 하지만 특정 요구 조건을 만족하는 데이터들을 분할된 테이블로부터 조회하기 위해서는 테이블 간에 논리적인 연관관계가 필요하고 그런 관계성을 통해서 다양한 데이터들을 조회할 수 있는 것이다. 그리고 이런 논리적인 관계를 성립시켜주는 것이 바로 JOIN - 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 조회하는 것을 JOIN이라 한다. 조인은 관계형 데이터베이스의 가장 큰 장점이면서 기본적인 기능 - 일반적인 경우 행들..

    [SQLD] GROUP BY, HAVING 절, ORDER BY 절 요약

    [SQLD] GROUP BY, HAVING 절, ORDER BY 절 요약

    > 집계함수 - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수이다. - SELECT 절, HAVING 절, ORDER BY 절에 사용할 수 있다. - 테이블 전체 집계를 위해 GROUP BY 절 없이도 집계 함수를 사용할 수 있다. - 집계 함수는 그룹에 대한 정보를 제공하므로 주로 숫자 유형에 사용되지만, MAX MIN COUNT 함수는 문자, 날자 유형에도 적용이 가능한 함수이다. 집계 함수명([DISTINCT | ALL)] 칼럼이나 표현식) - ALL : Default 옵션으로 생략 가능 - DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용 > GROUP BY 절, HAVING 절 - SQL문에서 FROM절과 WHERE 절 뒤에 오며 GROUP BY절은 행들을 소그룹..

    [SQLD] 함수(FUNCTION) 요약

    [SQLD] 함수(FUNCTION) 요약

    > FUNCTION - 함수는 다양한 기준으로 분류할 수 있는데, 벤더에서 제공하는 함수인 내장함수와 사용자가 정의할 수 있는 함수로도 나눌 수 있다. - 내장 함수는 벤더별로 가장 큰 차이를 보이는 부분이지만, 핵심적인 기능들은 이름이나 사용법이 다르더라도 대부분의 데이터베이스가 공통적으로 제공하고 있다. - 일반적으로 함수는 입력되는 값이 많아도 출력은 하나만 된다는 M:1 관계 - 단일 행 함수의 경우 단일 행 내에 있는 하나의 값 또는 여러 값이 입력 인수로 표현될 수 있다. - 단일 행 함수의 경우 각 행들에 대해 개별적으로 작용하여 데이터 값들을 조작하고, 각각의 행에 대한 조작 결과를 리턴한다. - 단일 행 함수의 경우 SELECT, WHERE, ORDER BY 절에 사용 가능하다. - 특별..

    [SQLD] WHERE 절 요약

    [SQLD] WHERE 절 요약

    > WHERE 절 - 사용자들은 자신이 원하는 자료만을 검색하기 위해서 SQL 문장에 WHERE절을 이용하여 자료들에 대하여 제한 - 두개 이상의 테이블에 대한 INNER JOIN을 지원하는 다른 기능도 가지고 있다. - WHERE 절은 조회하려는 데이터에 특정 조건을 부여할 목적으로 사용하므로 FROM 절 뒤에 오게 된다. > 연산자 종류 - 비교 연산자 : =, >=, >, 연산자 우선 순위 - 괄호 > NOT 연산자 > 비교 연산자, SQL 비교 연산자 > AND > OR - 실수하기 쉬운 비교 연산자와 논리 연산자의 경우 괄호를 사용해서 우선 순위를 표시하는 것을 권고한다. > WHERE 조건 - IN : 리스트에 있는 값 중에서 어느 하나라도 일치하면 된다. - LIKE '비교할 문자열' : 비..

    [SQLD] 트랜잭션 제어어 (TCL) 요약

    [SQLD] 트랜잭션 제어어 (TCL) 요약

    > 트랜잭션 - 트랜잭션은 데이터베이스의 논리적 연산단위 - 트랜잭션이란 밀접히 관련되어 분리될수 없는 한 개 이상의 데이터베이스 조작을 가리킨다. - 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다. - 트랜잭션은 의미적으로 분한할 수 없는 최소의 단위 - 그렇기 때문에 전부 적용하거나 전부 취소한다. (ALL or NOTHING) > 트랜잭션 특성 특성 설명 원자성 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않는 상태로 남아 있어야 한다. 일광성 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다. 고립성 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를..