관계형 데이터베이스

이승현·2022년 11월 13일

웹 개발

목록 보기
13/20

SQL(Structured Query Language)

  • 주로 관계형 데이터베이스에서 사용하는 데이터베이스 언어이다. 데이터베이스에 쿼리를 보내 원하는 데이터를 가져오거나 삽입할 수 있다.

트랜잭션

  • 데이터베이스의 상태를 변환시키는 논리적 기능을 수행하기 위해 행해지는 하나 이상의 쿼리를 모아 놓은 하나의 작업 단위

ACID

데이터베이스 트랜젝션이 발생할 때 그 안정성을 보장할 수 있는 성질

  • Atomicity

하나의 트랜젝션은 모든 연산이 성공하거나 모두 실패해야 한다. (실패할 여지가 있으면 전체를 실패시킨다.)

  • Consistency

하나의 트랜젝션 전후에 데이터베이스의 일관된 상태가 유지되어야 한다.

  • Isolation

각각의 트랜젝션은 독립적. 서로의 연산을 확인받거나 영향을 줄 수 없다.

  • Durability

하나의 성공된 트랜젝션에 대한 로그가 기록되고 영구적으로 남는다.

이런 식으로 ACID는 안정성에 관련된 내용이다. 금융쪽에서 특히나 중요하다.

SQL vs NoSQL

Database 에 블록으로 Table을 구성해 놓는다.

Database > Table > Data

SQL 명령어 쌍

생성, 사용, 삭제

create database 'db이름'

use database 'db이름'

drop databse 'db이름' : 공간할당 까지 깔끔히 제거

Truncate : 행의 내용

delete from (column) 조건 ⇒ 맞는 행을 다 지움

행을 골라서 지울 수 있는 것은 delete가 유일

SQL Select

SELECT (column) FROM (table)

SQL Where

WHERE (조건)

SQL Order By

ORDER BY (column)

기본 추가, 사용 등등

create database (데이터베이스이름)

use database이름

update, set

insert into (columns) values

열 추가

ex)

ALTER TABLE Persons

ADD Birthday Date;

열 삭제

ex)

ALTER TABLE Persons

DROP COLUMN Birthday;

SQL whildCards

_ : 임의의 문자

% : 임의의 문자열

[asdf] : 안에 들어간 문자열 중 하나(asdf중 하나)

a-f : a~f까지 문자열(스프레드 같은 느낌)

[!asdf] : asdf가 아닌 모든거

SQL Aliases

as 로 별칭 추가 가능

SQL Joins

  • inner join
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
  • outer join(left, right 등 존재)
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B

SQL 내장함수

  • GROUP BY
  • HAVING
  • COUNT()
  • SUM()
  • AVG()
  • MAX(), MIN()

SELECT 문 실행 순서

  • FROM
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • ORDER BY

ex)

SELECT CustomerId, AVG(Total)
FROM invoices
WHERE CustomerId >= 10
GROUP BY CustomerId
HAVING SUM(Total) >= 30
ORDER BY 2

이렇게 섞어도 FROM 부터 실행된다?

스키마(schema)

데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명(데이터베이스의 청사진)

테이블 사이에 관계가 있을 때

1:N(일대다) 관계에서 N쪽에서 연결되는 1의 정보를 담아야 깔끔하다

N:N(다대다) 관계에서는 각각과 1:N관계가 되는 테이블(조인 테이블)을 만들어 관계를 엮는다.

행, 열

행 : 레코드, tuple

열 : 칼럼, relataion

primary key

레코드들을 식별할 수 있도록 만드는 고유 값

여러개의 table join

여러 테이블을 join할 때 처음 select구문에서 column명이 겹치지 않는 요소는 그냥 써도 되지만 아닌 경우는 테이블명.칼럼명 으로 해줘야 한다.

join default

inner join이 디폴트라서 그때는 join만 써도 된다.

Subquery

소괄호 안에 sql쿼리문을 작성하여 쓸 수 있다.

테이블 변수 저장

가상테이블 - 일시적으로 저장해놓을 수 있는 테이블

profile
매일 꾸준히

0개의 댓글