large database를 import 해 보면서, 어떤 식으로 mysql에 dump 파일을 db에 반영하는지 알아보겠습니다. 문제의 데이터 베이스는, 깃헙의 이 저장소에 들어 있습니다. test_db라고 다운을 받아보시면, dump 파일들이 있고, sql 파일이 있는데요. 이 중에, employees.sql을 열어보면 코드가 좀 길다는 것을 알 수 있습니다. 그런데, 이것을 해석해 보면 크게 2 부분으로 나눌 수 있습니다. 테이블과 view를 create 하는 문장이 있습니다. 이 중에서, create or replace view는 뷰를 없으면 생성하고, 있으면 대체합니다. 그런데, table은 생성하는 것만 있는데요. 해당 쿼리문 위에 drop table이 있습니다. 이것은 테이블이 존재하면 삭제하..
mysql 검색 결과
외부에서 mysql에 접속이 가능하게끔 하고 싶습니다. 어떻게 하면 좋을까요? 제 디비 서버는 172.30.1.36에 있고, 172.30.1.8에서 접근을 하려고 합니다. 클라이언트에는 dbeaver가 깔려 있습니다. 제가 접속하려는 계정은 cho입니다. host가 %인 것으로 보아서는 외부에서도 접근이 가능하게끔 하려던 모양입니다. 해당 계정으로 접속해 보겠습니다. 그러면, 뜬금없이 이런 메세지가 나옵니다. 영어를 해석해 보면, last packet이 서버에 갔지만, 드라이버가 어떠한 패킷을 응답받지 않았다고 합니다. 가는 건 문제가 없었다면, 오는 게 문제였을까요? 아니면, 중간에 차단이 일어났을까요? 방화벽이 의심스러우니, 방화벽부터 보겠습니다. 이미 172.30.1.0/24에 대해서 3306으로 ..
예전에 ifnull 함수를 배운 적이 있었습니다. null이면 A로 처리하더라. 이런 플로우였습니다. 반대로, nullif 함수가 있습니다. 이것은 반대로 B이면, null로 처리하게끔 할 때 씁니다. 어떤 플로우인지 잠깐 언급을 드리고, 예제를 간단하게 보겠습니다. 먼저, expr1 = expr2가 참이라면, true이니 이 때에는 null을 돌려줍니다. 그렇지 않으면, expr1을 돌려줍니다. 생각보다 복잡하지 않아요. 그러면, 학점 score가 'F'라면 null 처리를 하겠다. 고 하면 어떻게 하면 좋을까요? nullif의 플로우는 위와 같아요. 우리가 리턴해야 하는 값은 score입니다. 그러니, expr1에는 score가 들어가야 합니다. 다음에, expr2에는 'F'가 들어가야 겠네요. 즉,..
레코드에 double, float과 같은 실수 타입이 있습니다. 예를 들자면, 0.1달러, 0.2달러와 같은 것들입니다. 이것을 double로 저장했을 때와 decimal로 저장했을 때 어떤 차이가 있을까요? 간단하게 알아보겠습니다. NewTable은 deci, dou, deci2, dou2 필드가 있습니다. deci가 prefix인 것은 decimal(10,5)로, dou가 prefix인 것은 double로 저장하였습니다. 데이터들을 넣어 보겠습니다. 이 테이블에 있는 데이터들을 보겠습니다. 그러면 1.3, 1.3, 1.3, 1.3과 1.1, 1.1, 1.1, 1.1이 나옵니다. 여기서 deci+deci2와 dou+dou2를 출력해 보도록 하겠습니다. 위와 같이 나오는데요. 각각 2.6, 2.6과 2...
nameAB 테이블에 저장되는 레코드들은 아래와 같은 컬럼들을 가집니다. key는 하나도 없습니다. 이 문제를 생각해 봅시다. name 별로 A가 최대일 때의 B값, A가 최소일 때의 B값을 가져와서 그것의 차이를 구하는 게 목표입니다. 단, A와 B는 0이상 32768 미만의 정수입니다. 그리고, 임의의 str, a에 대해서, 이름이 name이고, A값이 a인 레코드는 많아봐야 1개만 있다고 가정하겠습니다. 예를 들어서, name이 'tEq'라고 해 보겠습니다. 그러면 nameAB에서 다음과 같은 레코드들이 나옵니다. A값이 최소인 레코드의 B값은 1710이 나옵니다. A값이 최대인 레코드의 B값은 1233이 나옵니다. 이 두 값의 차이는 1233 - 1710 = -477입니다. 이 값을 name별로 ..
최근댓글