데이터 분석일지/SQLD 준비

SQLD 자격증 챌린지 6일차 강의: SQL 실습 환경 구성, 관계형 데이터베이스 알아보기

유니스방 2024. 5. 13. 14:24

SQLD 자격증을 취득하기 위하여 스파르타코딩클럽의 "SQLD 자격증 채린지" 수업을 수강한 내용을 복습 차원에서 정리한 내용이다. 

 

SQLD 자격증 챌린지 (oopy.io)

 

SQLD 자격증 챌린지

단기간 SQLD 격파가 가능한, 격파르타 차별점

certificate-sqld.oopy.io

 


6일차 수업 목표는 데이터베이스에 대해 알아보고, SQL 실습 환경을 구성하고, 관계형 데이터베이스에 대해 배우는 것이다.

 

아래 목차와 같이 내용을 정리할 예정이다.

  1. 데이터베이스 알아보기
  2. 실습 환경 구성하기
  3. 관계형 데이터베이스

6일차 수업 내용은 2과목인 SQL 기본 및 활용 내용의 일부이다.

 

참고차 SQLD 과목을 정리한 표를 추가해두었다:

구분 시험 과목 세부 과목 문항수
1과목 데이터 모델링의 이해 - 데이터 모델링의 이해
- 데이터 모델과 성능
10
2과목 SQL 기본 및 활용 - SQL 기본
- SQL 활용
- 관리 구문
40

 


01. 데이터베이스 알아보기

 

데이터베이스는 하나의 시스템이다.

데이터베이스를 구축한다는 의미는 하나의 컴퓨터를 셋팅하는 것이다.

 

데이터베이스를 구축하는 방법은 간략하게 정리하자면:

1) 내 컴퓨터 (localhost)에 데이터베이스 프로그램을 깔고,

2) 다른 프로그램으로 마치 데이터베이스를 접속하는 것처럼 사용하는 것이다.

→ 이 과정은 최소 1일, 최대 1주일 이상 정도 걸리는 아주 복잡한 작업이다.

 

따라서, 일반적으로는 Amazon Web Service RDS나 Microsoft Azure Database를 빌려쓴다.

(외부의 DBMS를 시간당 돈을 주고 사는 행위이다.)

물론, 보안이 중요하다면 자체 구축하는 경우도 있다. (이는 온프레미스라고 부른다.)

 


02. 실습 환경 구성하기

 

SQLD는 Oracle DBMS에서 실습해야 한다. 

그러나, Oracle DBMS는 유료이므로

Oracle 회사에서 무료로 SQL을 연습할 수 있는 웹 기반 플랫폼을 제공해준다.

 

아래 링크로 접속하면 된다:

https://www.oracle.com/database/technologies/olracle-live-sql.html

 

Live SQL

 

www.oracle.com

 

1) 위 링크로 접속하여 먼저 계정을 만들어 가입하면 된다.

 

 

2) [계정 만들기]를 들어가면 직책, 직장 전화, 회사명 등 정보를 입력하라고 하는데,

직책, 직장전화, 회사명, 주소에

Manager, 휴대전화, 백수이기 때문에 "Unemployed", 내 집 주소를 입력하고 가입을 성공하였다.

 

 

3) 가입하고 다시 사이트로 돌아오고 [Start Coding Now]를 클릭하면 SQL를 실습할 수 있는 SQL Worksheet로 이동한다.

 

 

 

SQL Worksheet에서 아래와 같은 화면을 확인할 수 있다.

 

 

강의를 들으면서 강사님과 함께 아래와 같이 SQL를 간략하게 활용해보았다:

-- 이건 한줄 주석
/*
이건 두줄 주석
*/

--테이블 생성하기

CREATE TABLE TestUser (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50) NOT NULL,
    age NUMBER
)
/*TestUser라는 엔티티를 생성할꺼야. ID는 주식별자이고, 
name은 문자열이고, 50자 제한이 이고 빈 값을 넣을 수 없어, 
age는 숫자로 설정할꺼야
*/

--데이터 추가하기
INSERT INTO TestUser (id, name, age)
VALUES (1, 'aiden', 22);


--데이터 조회하기: TestUser에 있는 모든 데이터를 조회한다.
SELECT * FROM TestUser;

INSERT INTO TestUser (id, name, age)
VALUES (2, 'kelly', 32);

 


03. 관계형 데이터베이스 

 

관계형 데이터베이스와 SQL이란

관계형 데이터베이스(Relational Database)는 테이블/표 형태로 저장되는 데이터베이스이다.

여기서 데이터를 생성, 수정, 삭제, 그리고 조회할 수 있다.

→ 데이터를 CRUD (Create, Read, Update, Delete)라고 부른다.

 

이 데이터베이스를 관리하는 것이 관계형 데이터베이스 관리 시스템(RDBMS)이고,

인증된 사용자만이 참조할 수 있는 보안 기능을 제공하여 데이터 무결성(Integrity)를 보장해준다.

 

SQL은 관계형 데이터베이스의 데이터를 CRUD하기 위해서 만들어진 언어이다.

Structure Query Language의 약자로, Query(질의)는 데이터베이스에 원하는 작업을 SQL로 넣는 의미이다.

 

SQL 언어 분류 (SQLD에 자주 출제되는 문제)

분류 설명
데이터 정의 언어
(DDL: Data Definition Language)
- 관계형 데이터베이스의 구조를 정의하는데 사용하는 언어.
- 데이터를 저장하기 위한 데이터베이스의 기본 구조를 잡는데 사용하는 언어.
- 테이블을 만들거나 수정 가능.
- 데이터를 생성 (CREATE), 변경 (ALTER, RENAME), 삭제 (DROP) 가능.
데이터 조작 언어
(DML: Data Manipulation Language)
- 테이블에 저장된 데이터를 조작하는 데 사용하는 언어.
- 데이터를 삽입 (INSERT), 조회 (SELECT), 수정 (UPDATE), 삭제 (DELETE) 가능.
데이터 제어 언어 
(DCL: Data Control Language)
- 데이터 베이스에 접근하여 이를 제어하기 위한 권한을 관리하는데 사용하는 언어.
- 특정한 사용자의 데이터베이스 사용 권한을 부여하거나 박탈 가능.
- 데이터베이스를 접근하고 객체를 사용하도록 권한을 부여 (GRANT)하거나 회수 (REVOKE) 가능.
트랜잭션 제어어
(TCL: Transaction Control Language)
- 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 언어.
- 논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위 (트랜잭션) 별로 제어 가능. 이 때, COMMIT, ROLLBACK 등의 명렁어 수행 가능.
- 트랜잭션 특징 (ACID): 원자성 (Atomicity), 일관성 (Consistency), 독립성 (Isolation), 지속성 (Durability)

 

 

SQL Syntax

★SQL은 특정한 규칙에 맞추어서 구문을 작성해야하는 자체 표준이 존재하나, 관계형 데이터베이스를 제공하는 회사마다 특징이 있기 때문에 동일한 형태로 SQL 문법을 제공하지 않은 점 참고!

 

SELECT col_name FROM table_name;

/* 모든 SQL문은 SELECT, INSERT, UPDATE 등과 같은 키워드로 시작하고,
하나의 statement는 세미콜론(;)로 끝난다. */

 

 

SQL 문(Statement) & 절 (Clause)

  • 문(Statement): 독립적으로 실행할 수 있는 완전한 SQL 코드 조각. 문(Statement)은 절(Clause)으로 구성됨.
  • 절(Clause): 문(Statement)의 하위 단위.
SELECT col_name FROM table_name'
/* SELECT 문이라고 불리고, 두개의 절(Clause)로 구성된다.
- SELECT col_name
- FROM table_name */

 

 

테이블

관계형 데이터베이스는 데이터베이스의 기본 단위인 테이블 형태로 데이터를 저장한다.

테이블 구성과 관련된 용어는 아래와 같이 정리할 수 있다:

종류 설명
테이블 (Table) 행과 열로 구성된 2차원의 데이터 저장 구조
column/열/속성 테이블에 저장되는 데이터의 특징. 더 이상 나눌 수 없는 하나하나의 속성.
row/행/레코드 테이블에 저장되는 실제 데이터 (인스턴스)
field/필드 열과 행이 교차하는 하나의 공간

 

강사님께서 정규화 (Normalization), PK, FK, ERD 에 관한 내용을 다시 한번 짚어주셨는데,

이 내용은 아래 블로그 포스트에 따로 정리해두었다: