SQLD 공부 PART 2 - CH1. SQL 기본
SQLD - Week 2 - Part2 - CH1. SQL 기본
- 책 <2023 유선배 SQL개발자(SQLD) 과외노트>로 기본 이론 단권화
- 유튜브 <홍쌤의 데이터랩>, 강의자료 참고
1. 관계형 데이터베이스
- RDBMS: 관계형 데이터베이스를 효과적으로 관리하기 위한 시스템
- Oracle, MySQL, MariaDB.. 등
관계형 데이터베이스 구성요소
- Oracle, MySQL, MariaDB.. 등
- 계정 : 데이터 접근제한을 위한 업무별/시스템별 계정으로 나뉨
- 테이블 : RDBMS의 DB안에서 데이터가 저장되는 형식
- 스키마 : 테이블이 어떤 구성으로 되어있는지, 어떠한 정보를 가지고 있는지에 대한 기본구조를 정의
테이블
- RDB의 기본단위
- 엑셀에서 워크시트처럼 행/열을 갖는 2차원 구조
- row : 인스턴스 / column : 속성
- 데이터를 입력,저장하는 최소단위
- 행 단위로 데이터 입력, 삭제
- 값 단위로 수정 가능
- 하나의 테이블은 반드시 하나의 유저(계정) 소유여야함
- 테이블명은 중복X
- but, 소유자가 다른 경우 같은 이름 테이블 생성 가능
- 객체 : 생성하고 변경할수 있는 하나의 관리 대상
관계형 데이터베이스 특징
- 데이터 분류, 정렬, 탐색 속도가 빠름
- 신뢰성 높음
- 데이터의 무결성 보장
- 기존 작성된 스키마를 수정하기 어려움
- 데이터베이스의 부하를 분석하기 어려움
데이터 무결성(integrity)
- 데이터의 정확성과 일관성을 유지하고, 데이터에 결손과 부정합이 없을을 보증하는 것 => “결점이 없다”
- 데이터베이스에 저장된 값 == 표현하는 현실 비즈니스 모델의 값이 일치 : 정확성
- 데이터 무결성을 유지하는게 데이터베이스관리시스템의 중요한 기능
[종류]
- 개체 무결성 : 테이블의 기본키를 구성하는 컬럼(속성)은 NULL/중복값 X
- 참조 무결성 : 외래키 값은 NULL 이거나 참조 테이블의 기본키 값과 동일해야함
- 외래키는 참조 테이블의 기본키에 정의된 데이터만 허용되는 구조이므로
- 도메인 무결성 : 주어진 속성값은 정의된 도메인에 속한 값이어야함
- NULL 무결성 : 특정 속성에 대해 NULL을 허용하지 않음
- 고유 무결성 : 특정 속성에 대해 중복값을 허용하지 않음
- 키 무결성 : 하나의 관계에는 적어도 하나의 키가 존재해야함
- 테이블이 서로 관계가 있는 경우 반드시 하나 이상의 조인키를 가짐
SQL (Structured Query Language)
- 관계형 데이터베이스에서 데이터를 다루기 위해 사용하는 언어
- 데이터 조회, 조작, RDBMS 시스템 관리 기능을 명령
[종류]
구분 | 종류 |
---|---|
DDL (Data Definition Language) | CREATE, ALTER, DROP, TRUNCATE |
DML (Data Manipulation Language) | INSERT, DELETE, UPDATE, MERGE |
DCL (Data Control Language) | GRANT, REVOKE |
TCL (Transaction Control Language) | COMMIT, ROLLBACK |
DQL (Data Query Language) | SELECT |
- DDL : 테이블을 ‘정의’
- 생성, 변경, 삭제 -> ‘구조’를 변경
- auto commit
- 한번 생성하면 되돌릴수 없음(ROLLBACK X)
- TRUNCATE는 auto commit에 해당하기때문에 DDL!
- 테이블을 그대로 두고 데이터를 모두 삭제
- DML : 데이터를 변경
- 입력, 삭제, 수정, 병합
- DCL : 데이터를 권한으로 ‘컨트롤’
- TCL : TRANSACTION에 해당하는 데이터 언어 관리
2. SELECT문
- 6개의 절로 구성
-
SELECT * 컬럼명 표현식 - FROM 테이블명 / 뷰명
- WHERE 조회 조건
- GROUP BY 그룹핑 컬럼명
- HAVING 그룹핑 필터링 조건
- ORDER BY 정렬 컬럼명
-
- SELECT > FROM > WHERE > GROUP BY > HAVING > ORDER BY 순서대로 실행
SELECT 절
- 저장되어있는 데이터를 조회하려고 할때 사용하는 명령어
-
*
: 테이블 내 전체 컬럼 조회 - 원하는 컬럼을
,
로 나열해서 작성 가능(순서대로 출력됨) - 표현식 : 원래의 컬럼명을 제외한 모든 표현 가능한 대상(연산식, 기존 컬럼의 함수 변형식 포함)
- 대소문자를 구분하지 않아도 인식
- Alias(별칭) 지정 가능
- AS 별칭
- 별칭에 공백 있을 경우 “ “로 작성
- e.g. “NEW SAL”
- 컬럼 Alias : 컬럼명 대신 출력할 임시 이름 지정(SELECT 절에서만 정의 가능)
옵션
- DISTINCT : 중복된 데이터가 있는 경우 1건으로 처리해서 출력(중복행 제거)
SELECT DISTINCT column_name FROM table
서브쿼리(sql 활용파트에서 자세히 설명)
- 스칼라 서브쿼리 : SELECT 에 사용하는 서브쿼리
- 서브쿼리의 결과를 ‘하나의 컬럼처럼 사용’하기 위해 사용
FROM 절
- 테이블/뷰 명 전달
- ORACLE에서는 생략 불가(의미상 필요없으면 DUAL 테이블 선언)
- ORACLE 23c 버전부터는 생략 가능
- 카티시안 곱 : 발생할수 있는 모든 경우가 발생
- 테이블 Alias : 여러개의 테이블을 JOIN하거나 서브쿼리가 있을때 사용
- 컬럼명 앞에 테이블명을 같이 명시해야하기때문
- e.g.
SELECT BAND.BAND_NAME, BAND_MEMBER.MEMBER_NAME FROM BAND, BAND_MEMBER WHERE BAND.BAND_CODE = BAND_MEMBER.BAND_CODE;
👇
SELECT B.BAND_NAME, BM.MEMBER_NAME FROM BAND B, BAND_MEMBER BM WHERE B.BAND_CODE = BM.BAND_CODE;
- e.g.
- 컬럼명 앞에 테이블명을 같이 명시해야하기때문