mysql구분 기호를 재정의하려면delimiter명령을 사용하십시오.//전체 정의를 단일 명령문으로 서버에 전달한 다음;프로시저를 호출하기 전에 로 복원할 수 있도록구분 기호가 변경됩니다 .이렇게 하면 프로시저 본문에 사용된 구분 기호가mysql자체;에서 해석되지 않고 서버로 전달될 수 있습니다."
use test;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤',now(),'10000000');
set @lastDate = (select deposit_date from sequence order by id desc limit 1) ;
set @initial_amount = (select deposit_amount from sequence where id='1');
set @name = (select name from sequence where id='1');
INSERT INTO sequence (name,deposit_date,interest_amount)
select @name,
(select date_add(@lastDate,INTERVAL 1 MONTH)),
@initial_amount* 0.04 /12;
INSERT INTO sequence (deposit_date,interest_amount) select date_add(now(),INTERVAL 1 MONTH),10000000* 0.04 /12;
숫자로 넣어서 하긴했는데 실제는 이렇게 하면 안될듯
재사용할 수 있게 변수지정해야되지 않을까
<4차시도>
INSERT INTO sequence (deposit_date,interest_amount) select date_add((select deposit_date from sequence where id='1'),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;
where id="1"
로 첫번째 행에 있는 값을 사용하게 했다. 금액은 괜찮은데
하지만 날짜는 이전행을 기준으로 한달씩 증가되어야한다.
<5차시도>
LAG함수쓰면 될거같은데 안되네....
아 된건가?
SELECT * FROM test.sequence; use test; insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000'); INSERT INTO sequence (deposit_date,interest_amount) select date_add(now(),INTERVAL 1 MONTH),10000000* 0.04 /12; select deposit_date, LAG(deposit_date) over(order by deposit_date) from sequence;
<6차시도>
흠...
select deposit_date from sequence order by id desc limit 1;
마지막행선택함.
이렇게 마지막 행의 날짜를 선택하고 거기에 한달씩 더해주면 되지 않을까?
select date_add(deposit_date,INTERVAL 1 MONTH) from sequence where deposit_date order by id desc limit 1;
오 됐다
한달 추가하겠다 마지막행으로 찾은 날짜에
ㅇㄴㄹㄴ
오됐다
INSERT INTO sequence (deposit_date,interest_amount) select date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;
<종합해보면>
SELECT * FROM test.sequence; use test; insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');
INSERT INTO sequence (deposit_date,interest_amount) select date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 MONTH),(select deposit_amount from sequence where id='1')* 0.04 /12;
<7차시도>
아 이름도 같이 들어가게끔
INSERT INTO sequence (name, deposit_date,interest_amount) select (select name from sequence order by id desc limit 1) ,date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 MONTH), (select deposit_amount from sequence where id='1')* 0.04 /12 ;
<결과>
use test;
insert into sequence (name,deposit_date,deposit_amount) values ('이소윤','20200509','10000000');
INSERT INTO sequence (name, deposit_date,interest_amount)
select (select name from sequence order by id desc limit 1) ,date_add((select deposit_date from sequence where deposit_date order by id desc limit 1),INTERVAL 1 MONTH),
(select deposit_amount from sequence where id='1')* 0.04 /12 ;
As we saw earlier, Axios automatically stringifies the data when sending requests (though you can override the default behavior and define a different transformation mechanism). When usingfetch(), however, you’d have to do it manually.
bodyParser를 쓰면 된다고 함 (팀플할때 무지성으로 썼는데 혼자하니 이렇게 깨닫는구나 역시 왜 쓰는지 생각해봐야함)
파싱이란 HTML 형식으로 사용자가 제출한 데이터에 접근하는 것을 의미합니다. 'GET' 방식으로 폼을 제출하면 '쿼리 문자열'에 데이터가 추가되어 쉽게 접근할 수 있지만 'POST' 방식으로 폼을 제출하면 데이터에 접근하기가 다소 어렵습니다. 보안을 위해 인코딩되었습니다. 데이터를 매우 쉽게 파싱할 수 있는 바디 파서 NPM 방법이 있지만 이 파싱 방법을 처음부터 구현하려고 하면 몇 가지 단계가 필요합니다.
Parsingmeans accessing the data submitted by user with HTML form. When the form is submitted with the ‘GET’ method, data are appended in ‘query string’ and can access easily but when a form is submitted using the ‘POST’ method, it is somewhat difficult to get access over those data since they are encoded because of security purpose. There exist a body-parser NPM method that makes it very easy to parse the data but if we try to implement this parsing method from scratch, there’s involve some steps.
근데 드는 의문이
bodyParser쓰면 multer지금 쓰고 있는거 필요없는거 아닌가?
걔도 미들웨어... 둘다 쓰는건가..
어라라 찾아보니까
하지만, express 버전 4.16이상 부터는 'express bodyparser deprecated ( bodyParser는 더이상 지원되지 않습니다.)' 와 같은 문제가 발생한다.
그 이유는,4.16버전 이상 부터는 express 내부에 bodyParser가 포함되기 때문이다.
일단 body-parser 모듈을 사용할 때 아무 옵션을 주지 않는 다면 body-parser deprecated undefined extended: provide extended option같은 문구가 뜬다.
bodyParser 미들웨어의 여러 옵션 중에 하나로 false 값일 시 node.js에 기본으로 내장된 queryString, true 값일 시 따로 설치가 필요한 npm qs 라이브러리를 사용한다.
queryString 과 qs 라이브러리 둘 다 url 쿼리 스트링을 파싱해주는 같은 맥락에 있으나 qs가 추가적인 보안이 가능한 말 그대로 extended 확장된 형태이다. 기본이 true 값이니 qs 모듈을 설치하지 않는다면 아래와 같이 false 값으로 따로 설정을 해주어야 한다.
"blob의 경우 4GB의 이진 데이터를 저장할 수 있다고 합니다. 하지만 이건 DB에 직접 저장하는 것이 아니라 DB에는 Large Object의 위치 포인터만 저장하게 됩니다."
그말은 즉, 컴퓨터가 인식하는 모든 파일(이진 데이터)를 저장하는 타입이라고 한다.오 찾아보니까 볼 수 있긴하네
이렇게 확인할 수는 있구만
하지만 BLOB보다는 URL자체로 저장을 선호한다고 한다.
그 이유는데이터베이스 서버는 애플리케이션이 확장될 때 종종 성능병목 현상이 일어나는데 이미지와 함께 로드하면 더 큰 병목현상이 발생한다고 함.
Many web app designers don't store images in database BLOBS, but rather store them in a file system, and store their URLs in database strings. Why? Database servers often become a performance bottleneck when an application scales up. If you load them with images, they'll become even bigger bottlenecks.
그럼 string문자열로 바꿔줘야지~
하고 string찾는데 없어 아 맞다 VAR이지하고 보다가
VARCHAR과 CHAR의 차이가 뭔가 궁금해졌다
VARCHAR은 '가변길이'
실질적인 데이터와길이 정보도 같이 저장된다.
CHAR은 길이가 고정되어있어야한다. 남는 공간은 공백으로 채운다 공간낭비 발생!
VARCHAR is variable length, while CHAR is fixed length