[wecode TIL] - 200619

hyuckhoon.ko·2020년 6월 19일
0

What I learned in wecode

목록 보기
73/109

6월 22일 월요일부터 2주동안 백엔드와 프론트엔드가 협업하여
웹 홈페이지를 클론하는 프로젝트가 시작된다.

팀원이나 홈페이지는 22일 월요일에 발표가 날 예정이다.

설렘이 걱정보다 커서 다행이다. 지금까지 배운 API, 데이터베이스, 모델링을
프로젝트로 협업을 하며 진행하다니! 정말 재밌을 것 같다.



[자주 사용하게 될 개념 및 필요한 사항을 미리 정리해봤다.]

  1. Django 환경설정 셋팅(서버, 주석처리할 앱들, 데이터베이스 변경 및 설치)
  2. Decorator 개념(포스팅 및 댓글 작성 요청에 대한 API 코드 작성 필요)
  3. 데이터베이스 명령어 정리
  4. Json 활용 정리
  5. HTTPie, Postman 사용법 정리
  6. 스스로 회원가입, 로그인, 댓글 작성에 대한 API 만들고 데이터 검증하기
    (단 하나의 코드도 '암기'가 아닌 확실한 이해를 바탕으로!)
  7. git 사용법


1. 데이터베이스

1. 데이터베이스 설치

brew install mysql


mysql 시작

mysql.server start


mysql 기본설정 시작

mysql_secure_installation
  1. root 패스워드 입력
  2. 비밀번호 복잡도 : n
  3. 익명 사용자 삭제 : y
  4. 원격 접속 허용하지 않을 것인가? : y (로컬에서만 개발)
  5. test DB 삭제 : y
  6. previlege 테이블을 다시 로드할 것인지 : y




2. mysql 사용

mysql -u root -p

위의 명령어 입력 및 루트 비밀번호 입력 후 아래와 같은 화면 출력됨.

그리고 장고 3.0과 mysql 연결

pip install mysqlclient





그 이후부터는 아래 두 명령어 실행

mysql.server start
mysql -u root -p    (-u : 유저, -p : 패스워드)





3. 데이터베이스 생성 명령어

[1] DDL(Data Define Language)


1) 데이터 베이스 생성 구문

CREATE DATABASE [database name] CHARACTER SET [character set];
CREATE DATABASE mysql_test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

결과 mysql_test라는 이름의 데이터베이스 생성 완료!



2) 데이터베이스 사용하기

  • 아래의 명령어 입력
use mysql_test;



3) 현재 데이터베이스에 있는 테이블 확인 명령어

show tables;



4) 테이블 생성 명령어

CREATE TABLE [table] (column1, column2 …)

ex) books라는 테이블을 만들어 보자

CREATE TABLE books (id INT NOT NULL, name VARCHAR(30));

(참고) VARCHAR : 가변길이 문자열. 문자열을 저장할 수 있는 자료형으로 저장하는 문자열의 크기에 따라 저장공간의 크기도 변경됨

결과



5) books라는 테이블이 잘 생성됐는지 다시 확인하기.

show tables;



6) books테이블의 컬럼 확인 명령어(필드 및 타입 등의 세부 정보)

explain books;



7) 컬럼 추가하기 명령어

ALTER TABLE books ADD published_at DATE;

books라는 테이블에 출판일자를 추가하고 싶다. 데이터 타입은 DATE으로.

그 이후 아래의 명령어를 입력하여 추가됐는지 확인가능.

explain books;



8) (참고)mysql 지원 데이터 타입.

https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html



9) 만든 테이블 삭제하는 명령어

DROP TABLE [table];

지워졌는지 확인도 해보자.( show tables; )







[2] DML(Data Manipulation Language)

데이터를 추가, 삭제, 수정(업데이트)하기 위한 명령어

실습을 위해 삭제했던 books테이블을 다시 생성한 후 돌아오자.(DDL명령어)

1) 컬럼에 데이터 추가하기

INSERT INTO books VALUES(1, 'physics', '2020-06-19');





2) 입력된 데이터 확인하기

SELECT * FROM books;



3) 데이터 수정하기(update)

알고리즘 책의 출판일자를 변경해보겠다.

UPDATE books SET published_at = '2020-01-09' WHERE id=2;

결과





4) 데이터 삭제하기(delete)

DELETE FROM [table] WHERE [condition]

ex) DELETE FROM books WHERE id=2;

삭제 후 books테이블을 확인해본다.(SELECT * FROM books)





[3] TCL (transransaction Control Language)

출저 : https://keep-cool.tistory.com/46

1) 트랜잭션(TCL)이란

지인과 국밥을 먹으러 갔다. 지갑을 두고 왔기에 지인이 계산을 완료했다.
내가 6000원을 송금하면, 지인의 계좌에 6000원이 입금돼야 한다.

그런데, 6000월이 내 계좌에서 빠져나간 직후, 서버가 다운이 되면
내 돈은 돈대로 잃고 지인에게도 돈이 가지 않은 상황이 발생해버린다.

내 계좌에서 6000원이 빠져나가야 하고, 지인의 통장에 돈이 들어오는 두 단계를 하나의 단계로 묶는 다면 어떨까?

이것이 트랜잭션의 개념이다.
지인이 돈을 받기 전까지 그 전에 서버가 다운이 되어도 두 번째 단계까지 이행되지 않았기에 나 역시 돈을 잃지 않게 되는 것이다.


2) 트랜잭션의 시작

DDL, DML 등의 명령어가 시작될 때

3) 트랜잭션의 종료

1) COMMIT이나 ROLLBACK 명령이 실행될 때.( 너무나 당연)

2) DDL이나 DCL 문장은 실행이 완료되면 자동으로 종료된다.(테이블 생성 등)

3) 사용자의 정상 종료 시에 종료된다.

4) 데드락(Deadlock)이 걸리면 트랜잭션의 일부만 종료된다.

중요한 점은 DML(INSERT, DELETE, UPDATE) 명령어의 경우는반드시 COMMIT 또는 ROLLBACK으로 종료해야 한다.


즉,
DML 은 생성한 테이블(by DDL)에 대한 값을 입력, 수정, 삭제 하는 명령어다. 그러니 변경 이후 commit을 하지 않으면, 엑셀 파일에 잔뜩 자료를 작성하고 저장을 하지 않은 것과 같다. 메모리에만 있는 정보이기에, 물리적인 디스크에 저장을 해야한다.

0개의 댓글