SQL

이남경·2024년 4월 2일
0

SSAFY 11기

목록 보기
53/67

Database


데이터베이스

체계적인 데이터 모음

데이터

저장이나 처리에 효율적인 형태로 변환된 정보

데이터를 저장하고 잘 관리하여 활용할 수 있는 기술이 중요해짐

→ 우리가 알고있는 데이터 저장 방식은 어떤 것이 있을 까?

기존의 데이터 저장 방식

  1. 파일(File) 이용

  2. 스프레드 시트(Spreadsheet) 이용

1. 파일을 이용한 데이터 관리

어디서나 쉽게 사용 가능

데이터를 구조적으로 관리하기 어려움

2. 스프레드 시트를 이용한 데이터 관리

테이블의 열과 행을 사용해 데이터를 구조적으로 관리 가능

스프레드 시트의 한계

크기 - 일반적으로 약 100만 행 까지만 저장 가능

보안 - 단순히 파일이나 링크 소유 여부에 따른 단순한 접근 권한 기능 제공

정확성 - 공식적으로 '강원'지명이 '강언'으로 바뀌었다면 테이블의 모든 위치에서 해당 값을 업데이트 해야함. 데이터가 시트에 분산되어 있다면 변경에 누락이 생기거나 추가 문제가 발생할 수 있음

데이터베이스 역할

데이터를 저장하고 조작 (CRUD)

Relational Database


데이터베이스 역할

데이터를 저장(구조적)하고 조작

관계형 데이터베이스

데이터 간에 관계가 있는 데이터 항목들의 모음

테이블, 행, 열의 정보를 구조화하는 방식

서로 관련된 데이터 포인터를 저장하고 이에 대한 액세스를 제공

관계

여러 테이블 간의 (논리적) 연결

RDBMS


DBMS (Database Management System)

데이터베이스를 관리하는 소프트웨어 프로그램

데이터 저장 및 관리를 용이하게 하는 시스템

데이터베이스와 사용자 간의 인터페이스 역할

사용자가 데이터 구성, 업데이트, 모니터링, 백업, 복구 등을 할 수 있도록 도움

RDBMS (Relational Database Management System)

관계형 데이터베이스를 관리하는 소프트웨어 프로그램

SQLite

경량의 오픈 소스 데이터베이스 관리 시스템

→ 컴퓨터나 모바일 기기에 내장되어 간단하고 효율적인 데이터 저장 및 관리를 제공

데이터베이스 정리

Table은 데이터가 기록되는 곳

Table에는 행에서 고유하게 식별 가능한 기본 키라는 속성이 있으며 외래 키를 사용하여 각 행에서 서로 다른 테이블 간의 관계를 만들 수 있음

데이터는 기본 키 또는 외래 키를 통해 결합(join)될 수 있는 여러 테이블에 걸쳐 구조화됨

SQL


SQL (Structure Query Language)

데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어

SQL Syntax

  1. SQL 키워드는 대소문자를 구분하지 않음
  • 하지만 대문자로 작성하는 것을 권장 (명시적 구분)
  1. 각 SQL Statements의 끝에는 세미콜론 (;)이 필요
  • 세미콜론은 각 SQL Statements을 구분하는 방법 (명령어의 마침표)

SQL Statements


SQL Statements

SQL을 구성하는 가장 기본적인 코드 블록

SQL Statements 예시

해당 예시 코드는 SELECT Statement라 부름

이 Statement 는 SELECT, FROM 2개의 keyword로 구성됨

수행 목적에 따른 SQL Statements 4가지 유형

  1. DDL - 데이터 정의

  2. DQL - 데이터 검색

  3. DML - 데이터 조작

  4. DCL - 데이터 제어

SQL 학습 방향

단순히 SQL 문법을 암기하고 상황에 따라 실행하는 것이 아닌 SQL을 통해 관계형 데이터베이스를 잘 이해하고 다루는 방법을 학습

참고

Query

데이터베이스로부터 정보를 요청하는 것

일반적으로 SQL로 작성하는 코드를 쿼리문(SQL 문)이라고 한다.

SQL 표준

SQL은 미국 국립 표준 협회 (ANSI)와 국제 표준화 기구(ISO)에 의해 표준이 채택됨

모든 RDBMS에서 SQL 표준을 지원

다만 각 RDBMS마다 독자적인 기능에 따라 표준을 벗어나는 문법이 존재하니 주의

Single Table Queries


데이터를 조회하는 유형은 DQL 밖에 없음

Querying data


SELECT

테이블에서 데이터를 조회

SELECT 키워드 이후 데이터를 선택하려는 필드를 하나 이상 지정

FROM 키워드 이후 데이터를 선택하려는 테이블의 이름을 지정

SELECT 정리

테이블의 데이터를 조회 및 반환

'*' (asterisk)를 사용하여 모든 필드를 선택

Sorting Data


ORDER BY

조회 결과의 레코드를 정렬

SELECT FirstName FROM employees ORDER BY FirstName;

SELECT FirstName FROM employees ORDER BY FirstName DESC;

SELECT Country, City FROM customers ORDER BY Country DESC, City;

SELECT Name, Milliseconds/60000 AS '재생 시간(분)' FROM tracks ORDER BY Milliseconds DESC;

SELECT ReportsTo FROM employees ORDER BY ReportsTo;

Filtering Data


DISTINCT

조회 결과에서 중복된 레코드를 제거

SELECT DISTINCT Country FROM customers ORDER BY Country;

WHERE

조회 시 특정 검색 조건을 지정

SELECT LastName, FirstName, City FROM customers WHERE City = 'Prague';

SELECT LastName, FirstName,City FROM customers WHERE City != 'Prague';

SELECT LastName, FirstName, Company, Country FROM customers WHERE Company IS NULL AND Country = 'USA';

SELECT LastName, FirstName, Company, Country FROM customers WHERE Company IS NULL OR Country = 'USA';

SELECT Name, Bytes FROM tracks WHERE 100000 <= Bytes AND Bytes <= 500000;
SELECT Name, Bytes FROM tracks WHERE Bytes BETWEEN 100000 AND 500000;

SELECT Name, Bytes FROM tracks WHERE Bytes BETWEEN 100000 AND 500000 ORDER BY Bytes;

SELECT LastName, FirstName, Country FROM customers WHERE Country = 'Canada' OR Country = 'Germany' OR Country = 'France';

SELECT LastName, FirstName, Country FROM customers WHERE Country IN ('Canada', 'Germany', 'France');
SELECT LastName, FirstName, Country FROM customers WHERE Country NOT IN ('Canada', 'Germany', 'France');

SELECT LastName, FirstName FROM customers WHERE LastName LIKE '%son';

SELECT LastName, FirstName FROM customers WHERE FirstName LIKE '___a';

Operators

Comparison Operators (비교 연산자)

=, >=, <=, !=, IS, LIKE, IN, BETWEEN ...AND

Logical Operators (논리 연산자)

AND, OR, NOT

IN Operator

값이 특정 목록 안에 있는지 확인

LIKE Operator

값이 특정 패턴에 일치하는지 확인 (Wildcards와 함께 사용)

Wildcard Characters

'%' 문자열과 일치하는지 확인

'_' 단일 문자와 일치하는지 확인

LIMIT

LIMIT clause

조회하는 레코드 수를 제한

SELECT TrackId, Name, Bytes FROM tracks ORDER BY Bytes DESC LIMIT 7;

SELECT TrackId, Name, Bytes FROM tracks ORDER BY Bytes DESC LIMIT 3, 4;

Grouping data


GROUP BY

레코드를 그룹화하여 요약본 생성 ('집계 함수'와 함께 사용)

Aggregation Functions (집계 함수)

값에 대한 계산을 수행하고 단일한 값을 반환하는 함수

SUM, AVG, MAX, MIN, COUNT

SELECT Country FROM customers GROUP BY Country;

SELECT Composer, AVG(Bytes) FROM tracks GROUP BY Composer ORDER BY AVG(Bytes) DESC;

SELECT Composer, AVG(Milliseconds/60000) FROM tracks GROUP BY Composer HAVING AVG(Milliseconds/60000) < 10 ;

0개의 댓글

관련 채용 정보