❯ SQL(Structured Query Language)
SQL이란, 관계형 데이터베이스에 사용되는 데이터베이스 언어이다.
MySQL, Oracle, SQLite, PostgreSQL 등 다양한 데이터베이스에서 SQL 구문을 사용할 수 있다.
영어 해석 그대로 구조화된 쿼리 언어를 의미하는데 이 때 쿼리란 '질의문' 이라는 뜻을 가진다.
즉 쿼리를 통해 원하는 데이터를 필터링하거나 수정, 추가하는 등 원하는 동작을 수행할 수 있다.
이 때 SQL을 사용하기 위해서는 데이터 구조가 고정되어 있어야 한다.
❯ ACID
ACID에 앞서 트랜잭션(Transaction)에 대해 이해해야한다.
트랜잭션이란 여러 작업을 하나로 묶어놓은 실행 유닛이다.
은행 계좌이체를 예로 들어보자. 한 계좌에서 인출은 되었으나 다른 계좌로 이체되지 않는다면 문제가 발생한다.
따라서 트랜잭션의 모든 동작이 완료되어야만 정상적으로 종료된다. 만약 하나라도 실패한다면 전체 트랜잭션이 실패한 것으로 간주된다.
이러한 트랜잭션은 ACID의 특성을 갖는다. ACID란 데이터베이스에서 트랜잭션이 발생할 때 안정성을 보장할 수 있는 성질이다.
- Atomicity (원자성) : 트랜잭션의 모든 작업이 성공하거나 전부 실패해서 결과를 예측할 수 있어야한다.
- Consistency (일관성) : 트랜잭션 이후에 DB 상태는 이전과 같이 유효해야한다.
- Isolation (독립성) : 모든 트랜잭션은 다른 트랜잭션으로부터 독립적이어야한다.
- Durability (지속성) : 트랜잭션이 성공적으로 수행되면, 그 기록은 영구적으로 남아야한다.
SQL 연습하기
링크 : https://www.w3schools.com/sql/sql_exercises.asp
링크 : https://www.w3schools.com/quiztest/quiztest.asp?qtest=SQL
❯ SQL vs NoSQL
데이터베이스는 크게 관계형 데이터베이스(SQL)과 비관계형 데이터베이스(NoSQL)로 구분된다.
두가지는 저장하는 정보의 종류, 저장하는 방법에서 차이가 있다.
- SQL: 테이블 구조와 데이터 타입을 사전에 정의하고 알맞은 형태의 데이터만 삽입할 수 있다.
대표적으로 MySQL, Oracle, SQLite, PostgreSQL, MariaDB 등이 있다. - NoSQL: 데이터가 고정되어있지 않은 데이터베이스를 말한다. 하지만 스키마가 반드시 없는것은 아니다. 데이터를 읽어올 때 스키마에 따라 데이터를 읽어온다.
크게 4가지 타입으로 구분할 수 있다.
1) key-value 타입: Redis, Dynamo 등
2) 문서형(Document) DB: 데이터를 문서처럼 저장하는 방식. MongoDB 등
3) Wide-Column DB: 열에 대한 데이터를 집중적으로 관리. Cassandra, HBase 등
4) 그래프(Graph) DB: 자료 구조 그래프와 비슷한 형식으로 데이터간 관계를 구성. Neo4J, InfiniteGraph 등
❯ Mac MySQL 설치 및 실행
1) Homebrew를 이용한 mysql 설치
brew install mysql
brew info mysql
2) MySQL 서비스 시작
brew services start mysql
3) MySQL 접속
# 비밀번호 설정 전
mysql -u root
# 비밀번호 설정 후
# -u(계정 접근), -p(비밀번호)
mysql -u root -p
4) 처음 설치하면 root의 암호는 비어있음. 아래 명령어로 변경 가능
# MySQL에서 'root'의 비밀번호를 'yourPassword'로 바꾸는 명령어
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourPassword';
데이터와 관련된 내용을 학습했다.
특히 SQL은 실습을 통해서 배울 수 있어서 더 빨리 와닿았다.
아무래도 백엔드에서 데이터베이스를 다룰 일이 많은만큼 해당 부분은 확실히 하고 넘어가야겠다.
'부트캠프 개발일기 > Database' 카테고리의 다른 글
33일차: 데이터베이스 설계 및 SQL 심화 (0) | 2023.03.30 |
---|---|
32일차: 데이터베이스 설계 (0) | 2023.03.29 |