SQLD/2과목 SQL 기본 및 활용

    [SQLD]Ⅱ- 1장 SQL 기본 - 9절 조인(JOIN)

    1. JOIN - 두 개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 것 - 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능 - 일반적으로 PK나 FK의 연관성에 의해 성립 - 어떤 경우에는 이러한 PK, FK의 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립 가능 2. EQUI JOIN(등가 조인) - 두 테이블의 칼럼 값이 정확히 일치하는 경우, 대부분 PK와 FK 관계를 기반으로 함 구문 형식 예시 1- 위 SQL을 보면 SELECT 구문에 단순히 칼럼명이 오지 않고 "테이블명.칼럼명"처럼 테이블명과 칼럼명이 같이 나타난다. 이렇게 특정 칼럼에 접근하기 위해 그 칼럼이 어느 테이블에 존재하는 칼럼인지를 명시하는 것은 두 가지 이유가 있다. 1. 먼저 모든 테이블에 칼럼..

    [SQLD]Ⅱ- 1장 SQL 기본 - 8절 ORDER BY 절

    1. ORDER BY 정렬 - 특정 칼럼을 기준으로 정렬하여 출력하는데 사용 - 칼럼명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능 - GROUP 절이 있으면 GROUP BY 대상 칼럼만 지정 가능 - Oracle은 NULL을 최댓값으로 판단함, SQL Server는 NULL을 최솟값으로 판단함 - ASC : 조회한 데이터를 오름차순으로 정렬(기본 값이므로 생략 가능) - DESC : 조회한 데이터를 내림차순으로 정렬 구문 형식 예시- ORDER BY 뒤에 여러 개가 올 경우 전체는 처음에 나온 컬럼의 순서대로 하고 첫 번째 컬럼에 같은 우선순위 경우에 두 번째 나와 있는 기준으로 정렬해준다. 2. SELECT문 실행 순서 - 테이블에서 출력 대상이 아닌 것..

    [SQLD]Ⅱ- 1장 SQL 기본 - 7절 GROUP BY, HAVING 절

    1. 집계 함수(Aggregate Function) - 여러 행들의 그룹이 모여서 그룹당 단 하나의 결과를 돌려주는 함수 - GROUP BY 절은 행들을 소그룹화 할 수 있음 - SELECT 절, HAVING 절, ORDER BY 절에 사용 가능 - WHERE 절에 사용 불가 - ALL : Default 옵션이므로 생략 가능함 - DISTINCT : 같은 값을 하나의 데이터로 간주할 때 사용하는 옵션 집계 함수의 종류 예시 2. GROUP BY 절 - GROUP BY 절을 통해 소그룹별 기준을 정한 후, SELECT 절에 집계 함수를 사용한다. - 집계 함수의 통계 정보는 NULL 값을 가진 행을 제외하고 수행한다. - GROUP BY 절에서는 SELECT 절과는 달리 ALIAS 명을 사용할 수 없다. ..

    [SQLD]Ⅱ- 1장 SQL 기본 - 6절 함수(FUNCTION)

    * 단일 행 함수 - SELECT절, WHERE절, ORDER BY절에 사용 가능 - 각 행에 개별적으로 작용 - 여러 인자를 입력해도 단 하나의 결과만 출력 1. 문자형 함수 - 문자를 입력하면 문자나 숫자 값을 반환한다. 문자형 함수의 종류 문자형 함수 사례 2. 숫자형 함수 - 숫자를 입력하면 숫자 값을 반환한다. 숫자형 함수 종류 숫자형 함수 사례 3. 날짜형 함수 - DATE 타입의 값을 연산한다. 날짜형 함수 종류 날짜형 데이터 연산 4. 변환형 함수 - 문자, 숫자, 날짜형 값의 데이터 타입을 변환한다. 데이터 유형 변환의 종류 - 명시적(Explict) 데이터 유형 변환 : 데이터 변환형 함수로 데이터 유형을 변환하도록 명시해 주는 경우 - 암시적(Implicit) 데이터 유형 변환 : 데..

    [SQLD]Ⅱ- 1장 SQL 기본 - 5절 WHERE 절

    1. WHERE절 WHERE 절은 FROM 절 다음에 위치하며, 조건식은 아래 내용으로 구성된다. 칼럼(Column) 명 (보통 조건식의 좌측의 위치) 비교 연산자 문자, 숫자, 표현식(보통 조건식의 우측에 위치) 비교 칼럼명(JOIN 사용 시) 2. 연산자의 종류 우선순위 부정 연산자 > 비교 연산자 > 논리 연산자 1. '()'(괄호) 2. NOT 3. 비교 연산자 및 SQL 연산자 4. AND 5. OR 3. 비교 연산자 문자 유형 비교 방법 4. SQL 연산자 IN (list) 연산자 LIKE 연산자 BETWEEN a AND b 연산자 IS NULL 연산자 - NULL 값과의 수치 연산은 NULL 값을 리턴한다. - NULL 값과의 비교 연산은 거짓(FALSE)을 리턴한다. - 어떤 값과 비교할 ..

    [SQLD]Ⅱ- 1장 SQL 기본 - 4절 TCL(TRANSACTION CONTROL LANGUAGE)

    1. 트랜잭션 정의 데이터베이스의 논리적 연산 단위 밀접히 관련되어 분리될 수 없는 한 개 이상의 데이터베이스 조작을 가리킴 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨 분할할 수 없는 최소의 단위 특성 원자성 : 트랜잭션에서 정의된 연산들은 전부 실행되거나 전혀 실행되지 않음(All or Nothing) 일관성 : 트랜잭션이 실행되기 전의 DB 내용이 잘못되어 있지 않다면 트랜잭션이 실행된 이후에도 DB의 내용이 잘못이 있으면 안 됨 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 됨 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 DB의 내용은 영구적으로 저장됨 2. TCL 데이터 무결성 보장을 목적으로 하고 영구 변경 전 확인과 ..

    [SQLD]Ⅱ- 1장 SQL 기본 - 3절 DML(DATA MANIPULATION LANGUAGE)

    - 만들어진 테이블에 관리하기를 원하는 자료들을 입력, 수정, 삭제, 조회하는 명령어 1. INSERT - 데이터 입력 2. UPDATE - 데이터 수정 3. DELETE - 데이터 삭제 DELETE vs TRUNCATE TABLE - DELETE는 삭제된 데이터를 로그로 저장하지만 TRUNCATE는 로그도 같이 삭제하기 때문에 ROLLBACK이 불가하다. - 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE보다는 시스템 부하가 적은 TRUNCATE를 권고한다. 4. SELECT - 데이터 검색 ALL & DISTINCT - ALL : Default 옵션이므로 별도로 표시하지 않아도 된다. 중복된 데이터가 있어도 모두 출력한다. - DISTINCT : 중복된 데이터가 있는 경우 1건으로..

    [SQLD]Ⅱ- 1장 SQL 기본 - 2절 DDL(DATA DEFINITION LANGUAGE)

    1. 데이터 유형 - 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준 자주 쓰이는 데이터 유형 CHAR vs VARCHAR VARCHAR 유형은 가변 길이이므로 필요한 영역은 실제 데이터 크기뿐이다. 그렇기 때문에 길이가 다양한 칼럼과, 정의된 길이와 실제 데이터 길이에 차이가 있는 칼럼에 적합하다. 저장 측면에서도 CHAR 유형보다 작은 영역에 저장할 수 있으므로 장점이 있다. 문자열의 비교 방법 CHAR에서는 문자열을 비교할 때 공백(BLANK)을 채워서 비교 VARCHAR 유형에서는 맨 처음부터 한 문자씩 비교하고 공백도 하나의 문자로 취급하므로 끝의 공백이 다르면 다른 문자로 판단 CHAR 유형 : 'AA' = 'AA ' VARCHAR 유형 ..

    [SQLD]Ⅱ- 1장 SQL 기본 - 1절 관계형 데이터베이스 개요

    1. 데이터베이스(DB : DataBase) 정의 데이터를 일정한 형태로 저장해 놓은 것 DBMS를 이용하여 효율적인 데이터 관리와 데이터 손상 복구 가능 종류 계층형 DB : 트리 형태의 자료구조에 데이터 저장, 1:N 관계 표현 네트워크형 DB : 오너와 멤버 형태로 데이터 저장, M:N 관계 표현 관계형 DB : 릴레이션에 데이터 저장, 집합 연산과 관계 연산 가능 2. 관계형 DB(RDB : Relational Database) 특징 정규화를 통해 이상현상 및 중복 데이터 제거 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능 집합연산 합집합(Union) 차집합(Difference) 교집합(Intersection) 곱집합(Cartesian Product) : 각 릴레이션에 존재하는 모든 데이..