Database(Coursera) - 1

Database Design and Basic SQL in PostgreSQL - 1주차

Coursera 에서 강의를 듣고 공부하였다. database가 뭔지 감이 너무 안왔고, 진행되는 공모전 프로젝트에 있어서 DB를 만들 엄두도 안났기에 답을 얻고자 수업을 들었다. 7일동안 무료이기에 빨리 들어야 했다


1주차 강의

일단 기본적으로 영어 강의라서 해석하는데에 어려움을 많이 느꼈다.

90년대 후반에 시작한 아마존은 Oracle을 선택했다. 우리는 아마존이 원했던 것처럼 빠른 DB를 원했고 DB회사는 되기 싫었기 때문이다. 아마존은 그래서 Oracle DB와 관련해서 많은 것들을 구축했다. 이로 인해서 많은 비용이 들었고, 아마존이 커질수록 Oracle 비용도 점점 더 커졌다. 따라서 아마존이 Oracle을 안쓰기 위해 돈을 많이 썼고, PostgrSQL 을 사용하기 시작했다.


History of Relational DataBase

DataBase가 생기기 이전

Disk는 용량이 작다. 따라서 Tape에 저장했지만 linear하게 데이터가 저장됐기에 access delay가 매우 컸다. 그래서 은행 같은 경우엔 계좌번호로 분류된 tape에 데이터를 저장했다. 그래서 낮에는 종이로 거래를 하고, 밤에는 컴퓨터를 이용해서 해당 변경 내용을 tape에 기록했다. 이 때 데이터를 계좌번호가 낮은 순서로 카드를 정렬시킨 다음 tape에 저장했었는데 이러한 정렬을 우리는 매번 했어야 했다.

데이터를 매번 정렬해야 했고, tape가 어제, 2일전, 3일전, 4일전… 처럼 점점 많아졌다.

=> DataBase가 필요한 이유다.


SQL 이전에는 file system으로 데이터를 보관했지만 DB가 생긴 이후로는 database system으로 데이터를 관리한다.


PostgreSQL Installation in MacOS

이 강의에서는 회사들이 PostgreSQL로 가는 추세인 것 같다고 하면서 이걸 가르칠 것이라 했다.

brew install postgresql

brew로 설치해줬다.

brew services start postgresql

을 입력해서 실행시켜 줬다.


PostgreSQL 사용법

CREATE USER "user name" WITH PASSWORD 'password';
CREATE USER pg4e WITH PASSWORD 'secret';

user name이라는 사용자의 비밀번호를 password으로 하겠다 라는 뜻. super user계정으로만 할 수 있다. 강의에서는 밑에 쓴 것처럼 했다.


CREATE DATABASE "database name" WITH OWNER 'owner name';
CREATE DATABASE people WITH OWNER 'pg4e';

database name이라는 이름의 DB를 만들겠다. 이 DB를 쓸 사용자는 owner name으로 하겠다 라는 뜻. 강의에서는 밑에 쓴 것처럼 했다.


psql "database name" "owner name"
psql people pg4e

database name이라는 DB에 접속하겠다.


CREATE TABLE "table name"(
  column1 DATATYPE,
  column2 DATATYPE
  ...
);

CREATE TABLE user(
  name VARCHAR(128),
  email VARCHAR(128)
);

table name이라는 이름의 table을 만들 것이다. attributes는 column1, column2...이다. 강의에서는 밑에 쓴 것처럼 했다.


SELECT column1, column2, column3... FROM "table name"

table name이라는 이름의 table에서 각 column에 해당하는 table element 보여준다.


DELETE FROM "table name"

table name의 내용 삭제.


INSERT INTO "table name" (column1, column2, column3...) VALUES (value1, value2, value3...)

각 column에 value를 삽입.


추가


1주차 후기

영어로 된 강의여서 오역이 많을 것 같은게 걱정이다.