6월 22일 월요일부터 2주동안 백엔드와 프론트엔드가 협업하여
웹 홈페이지를 클론하는 프로젝트가 시작된다.
팀원이나 홈페이지는 22일 월요일에 발표가 날 예정이다.
설렘이 걱정보다 커서 다행이다. 지금까지 배운 API, 데이터베이스, 모델링을
프로젝트로 협업을 하며 진행하다니! 정말 재밌을 것 같다.
[자주 사용하게 될 개념 및 필요한 사항을 미리 정리해봤다.]
- Django 환경설정 셋팅(서버, 주석처리할 앱들, 데이터베이스 변경 및 설치)
- Decorator 개념(포스팅 및 댓글 작성 요청에 대한 API 코드 작성 필요)
- 데이터베이스 명령어 정리
- Json 활용 정리
- HTTPie, Postman 사용법 정리
- 스스로 회원가입, 로그인, 댓글 작성에 대한 API 만들고 데이터 검증하기
(단 하나의 코드도 '암기'가 아닌 확실한 이해를 바탕으로!)- git 사용법
brew install mysql
mysql 시작
mysql.server start
mysql 기본설정 시작
mysql_secure_installation
mysql -u root -p
위의 명령어 입력 및 루트 비밀번호 입력 후 아래와 같은 화면 출력됨.
그리고 장고 3.0과 mysql 연결
pip install mysqlclient
그 이후부터는 아래 두 명령어 실행
mysql.server start
mysql -u root -p (-u : 유저, -p : 패스워드)
CREATE DATABASE [database name] CHARACTER SET [character set];
CREATE DATABASE mysql_test CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
결과
mysql_test라는 이름의 데이터베이스 생성 완료!
use mysql_test;
show tables;
CREATE TABLE [table] (column1, column2 …)
ex) books라는 테이블을 만들어 보자
CREATE TABLE books (id INT NOT NULL, name VARCHAR(30));
(참고) VARCHAR : 가변길이 문자열. 문자열을 저장할 수 있는 자료형으로 저장하는 문자열의 크기에 따라 저장공간의 크기도 변경됨
결과
show tables;
explain books;
ALTER TABLE books ADD published_at DATE;
books라는 테이블에 출판일자
를 추가하고 싶다. 데이터 타입은 DATE으로.
그 이후 아래의 명령어를 입력하여 추가됐는지 확인가능.
explain books;
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html
DROP TABLE [table];
지워졌는지 확인도 해보자.( show tables; )
데이터를 추가
, 삭제
, 수정(업데이트)
하기 위한 명령어
실습을 위해 삭제했던 books테이블을 다시 생성한 후 돌아오자.(DDL명령어)
INSERT INTO books VALUES(1, 'physics', '2020-06-19');
SELECT * FROM books;
알고리즘 책의 출판일자를 변경해보겠다.
UPDATE books SET published_at = '2020-01-09' WHERE id=2;
결과
DELETE FROM [table] WHERE [condition]
ex) DELETE FROM books WHERE id=2;
삭제 후 books테이블을 확인해본다.(SELECT * FROM books)
출저 : https://keep-cool.tistory.com/46
지인과 국밥을 먹으러 갔다. 지갑을 두고 왔기에 지인이 계산을 완료했다.
내가 6000원을 송금하면, 지인의 계좌에 6000원이 입금돼야 한다.
그런데, 6000월이 내 계좌에서 빠져나간 직후, 서버가 다운이 되면
내 돈은 돈대로 잃고 지인에게도 돈이 가지 않은 상황이 발생해버린다.
내 계좌에서 6000원이 빠져나가야 하고, 지인의 통장에 돈이 들어오는 두 단계를 하나의 단계로 묶는 다면 어떨까?
이것이 트랜잭션의 개념이다.
지인이 돈을 받기 전까지 그 전에 서버가 다운이 되어도 두 번째 단계까지 이행되지 않았기에 나 역시 돈을 잃지 않게 되는 것이다.
DDL, DML 등의 명령어가 시작될 때
1) COMMIT이나 ROLLBACK 명령이 실행될 때.( 너무나 당연)
2) DDL이나 DCL 문장은 실행이 완료되면 자동으로 종료된다.(테이블 생성 등)
3) 사용자의 정상 종료 시에 종료된다.
4) 데드락(Deadlock)이 걸리면 트랜잭션의 일부만 종료된다.
즉,
DML 은 생성한 테이블(by DDL)에 대한 값을 입력, 수정, 삭제 하는 명령어다. 그러니 변경 이후 commit을 하지 않으면, 엑셀 파일에 잔뜩 자료를 작성하고 저장을 하지 않은 것과 같다. 메모리에만 있는 정보이기에, 물리적인 디스크에 저장을 해야한다.