본문 바로가기

취업/자격증

SQLD 2과목 - SQL 기본

출처: https://www.youtube.com/watch?v=_f_WZYuNr7A&t=3s

 

데이터베이스와 DBMS

- 데이터베이스: 데이터의 집합

- DBMS: 데이터를 효과적으로 관리하기 위한 시스템

 

관계형 데이터베이스 구성 요소

- 계정: 접근 제한

- 테이블: DBMS의 DB 안에서 데이터가 저장되는 형식

- 스키마: 테이블이 어떠한 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본적인 구조를 정의

 

테이블

1. 정의 - 행과 열을 갖는 2차원 구조

2. 특징

- 하나의 테이블은 반드시 하나의 유저 소유여야 한다.

- 테이블명은 중복될 수 없지만, 소유자가 다르면 같은 이름으로 생성 가능

- 테이블은 행 단위로 데이터가 입력, 삭제되며 수정은 값 단위로 가능

 

SQL

- 관계형 데이터베이스에서 데이터 조회 및 조작, DBMS 시스템 관리 기능을 명령하는 언어

- 대,소문자를 구분하지 X

 

관계형 데이터베이스 특징

- 데이터의 분류, 정렬, 탐색 속도가 빠름

- 신뢰성이 높고, 데이터의 무결성 보장

- 기존 작성된 스키마를 수정하기 어려움

- 데이터베이스의 부하를 분석하는 것이 어려음

 

데이터 무결성 - 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없음을 보증하는 것

 

데이터 무결성 종류

1. 개체 무결성: 테이블의 기본키를 구성하는 컬럼은 NULL이나 중복값을 가질 수 없다.

2. 참조 무결성: 외래키 값은 NULL이거나 참조 테이블의 기본키 값과 동일해야 한다.

3. 도메인 무결성: 주어진 속성 값이 정의된 도메인에 속한 값 이어야 함

4. NULL 무결성: 특정 속성에 대해 NULL을 허용하지 않는 특징

5. 고유 무결성: 특정 속성에 대해 값이 중복되지 않는 특징

6. 키 무결성: 하나의 릴레이션에는 적어도 하나의 키가 존재해야 함

 

ERD - 테이블 간 서로의 상관 관계를 그림으로 표현한 것 / 엔티티, 관계, 속성으로 구성되어 있다.

 

SQL 종류

1. DDL(Definition) - CREATE, ALTER, DROP, TRUNCATE

2. DML(Manipulation) - INSERT, DELETE, UPDATE, MERGE

3. DCL(Control) - GRANT, REVOKE

4. TCL(Transaction Control) - COMMIT, ROLLBACK

5. DQL(Query) - SELECT

 

SELECT문 구조

- 6개 절(SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY)로 구성

- 각 절의 순서대로 작성해야 한다.

- SELECT문의 문법적 해석 순서는 나열된 순서와 다르다.

- FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY 순서로 실행된다.

 

SELECT 절

- 불러올 컬럼명, 연산 결과를 작성하는 절

- *을 사용해 테이블 내 전체 컬럼명을 불러올 수 있다.

- 원하는 컬럼을 ,로 나열하여 작성 가능(순서대로 출력됨)

**특징 - 표시할 컬럼에 별칭 지정 가능하다. / 대소문자 구별X

 

컬럼 Alias(별칭)

- 컬럼명 대신 출력할 임시 이름 지정

- 컬럼명 뒤에 AS와 함께 컬럼 별칭 전달(AS 생략 가능)

**특징 및 주의사항: ORDER BY절에서만 컬럼 별칭 사용 가능 / 이미 존재하는 예약어는 별칭으로 사용 불가 / 공백 포함이나 특수문자를 포함하는 경우 쌍따옴표를 전달해야 한다.

 

FROM 절

- 데이터를 불러올 테이블명 또는 뷰명 전달

- 여러 테이블 전달 가능

- 테이블 별칭 선언 가능한데 AS를 쓰지 않는다.

 

함수 정의

- input value와 ouput value의 관계를 정의한 객체

 

함수 기능

- 기본적인 쿼리문을 더욱 강력하게 해준다.

- 데이터의 계산을 수행

- 개별 데이터의 항목을 수정

 

함수의 종류

- 단일행 함수: input 과 output의 관계가 1:1

- 복수행 함수: 여러 건의 데이터를 동시에 입력 받아서 하나의 요약값을 리턴 / 그룹함수, 집계함수라고도 부름

 

문자형 함수

- 문자열 결합, 추출, 삭제 등을 수행

- LOWER, UPPER, SUBSTR, INSTR, LTRIM, RTRIM, CONCAT, REPLACE 등 

 

숫자형 함수

- 숫자를 입력하면 숫자 값을 반환

- 단일행 하뭇 형태의 숫자함수

- ABS, ROUND, CEIL, SQRT 등

 

날짜형 함수

- 날짜 연산과 관련된 함수

- ORACLE과 SQL-Server 함수 거의 다름

- SYSDATE, CURRENT_DATE, CURRENT_TIMESTAMP 등 

 

변환함수

- 값의 데이터 타입을 변환

- 문자를 숫자로, 숫자를 문자로, 날짜를 문자로 변경

- TO_NUMBER, TO_CHAR, TO_DATE, CAST 등 

 

일반함수

- 기타 함수(널 치환 함수 등)

- DECODE, NVL, NVL2, COALESCE, CASE 등

 

WHERE 절

- 원하는 행을 조회할 때 쓰는 것

- 조건에 맞는 데이터만 조회하고 싶을 경우 사용

- 여러 조건 동시 전달 가능 (AND과 OR로 조건 연결)

- NULL 조회 시 IS NULL, IS NOT NULL 연산자 사용 (= 연산자로 조회 불)

 - WHERE 연산자 정리 필요: like, in, and, or, not, <> 등

 

GROUP BY 절

- 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식

- 컬럼 여러 개 전달 가능

- 그룹 연산에서 제외할 대상이 있다면 미리 WHERE 절에서 해당 절 제외

- SELECT 절에 집계 함수를 사용하여 그룹연산 결과 표현

 

HAVING 절

- 그룹 함수 결과를 조건으로 사용할 때 사용하는 절

- WHERE 절을 사용하여 그룹을 제한할 수 없으므로 HAVING 절에 전달

- SELECT 절의 Alias 사용 불가

 

ORDER BY 절

- 출력되는 행의 순서를 사용자가 변경하고자 할 때

- 오름차순 ASC, 내림차순 DESC / 오름차순이 DEFAULT

- 유일하게 SELECT 절에 정의한 컬럼 별칭 사용 가능

- 1차 정렬, 2차 정렬 전달 가능 명시된 컬럼 순서대로 정렬

 

JOIN(조인)

- 여러 테이블의 데이터를 사용하여 동시 출력하거나 참조 할 경우 사용

- FROM 절에 조인할 테이블 나열

- ORACLE 표준은 테이블 나열 순서 중요X, ANSI 표준은 OUTER JOIN 순서 중요

- ORACLE 표준과 ANSI 표준이 서로 다르다.

- 동일한 열 이름이 여러 테이블에 존재할 경우 열 이름 앞에 테이블 이름이나 테이블 Alias 붙임

 

조인 종류

1. 조건의 형태 - join 조건이 동등 조건일 경우 EQUI 조인 아닐 경우 NON EQUI JOIN

2. 조인 결과에 따라 - JOIN 조건에 성립하는 데이터만 출력하는 경우 INNER JOIN 성립하지 않는 데이터도 출력 OUTER

3. NATURAL JOIN - 조인조건 생략 시 두 테이블에 같은 이름으로 자연 연결되는 조인

4. CROSS JOIN - 조인조건 생략 시 두 테이블의 발생 가능한 모든 행을 출력하는 조인

5. SELF JOIN - 하나의 테이블을 두 번 이상 참조하여 연결하는 조인

 

INNER JOIN

- 내부 조인이라고 하며, 조인 조건이 일치하는 행만 추출

- ANSI 표준의 경우 USING이나 ON 조건절을 필수적으로 사용

 

NATURAL JOIN

- 자연스러운 조인이라서 아무것도 쓰지 않는 것을 말한다.

- 데이터 유형이 동일해야 함

- 주의할 점은 같은 컬럼이 여러 개 있을 때는 원하는 결과가 안 나올 수 있다는 것

 

CROSS JOIN

- 카티션 프로덕트가 출력되므로 잘 사용할 일이 없다.

 

OUTER JOIN

- join 조건에서 동일한 값이 없는 행도 반환할 때 사용

- 테이블 기준이 어느 쪽인지 지정해줘야 함

- left, right 가 있고 어느 쪽이 기준이 되냐는 것 full outer join은 두 테이블 전체 기준으로 결과 생성

- ansi 표준은 테이블 명시하는 순서가 중요하다.