출처: 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 표준은 테이블 명시하는 순서가 중요하다.
'취업 > 자격증' 카테고리의 다른 글
SQLD 2과목 - SQL 활용 (0) | 2024.05.22 |
---|---|
SQLD 2과목 - SQL 함수 정리(날짜 함수, 변환 함수, NULL 관련 함수) (0) | 2024.05.22 |
SQLD 2과목 - SQL 함수 정리(숫자 함수) (0) | 2024.05.21 |
SQLD 2과목 - SQL 함수 정리(문자 함수) (0) | 2024.05.21 |
SQLD 1과목 정리 (0) | 2024.05.15 |