Mysql&DBeaver 35

DBeaver)서버에서 DB 사용하려면 (nodejs 환경)

실제로 데이터베이스 하나만 가지고 단독으로 뭔가 하는 경우는 거의 없습니다.데이터베이스는 대부분 웹/앱서비스, 게임같은 다양한 프로그램들의 데이터 저장소로 사용되므로 항상 프로그래밍언어로 DB를 조작하는 경우가 많습니다.  그래서 프로그래밍 언어로 DB를 어떻게 조작할 수 있는지 알아봅시다. 가장 쉬운 자바스크립트라는 언어를 사용해볼텐데 나는 자바스크립트나 프로그래밍 그런거 모르면 몰라도 됩니다.         그래서 웹서비스를 운영하는데 DB 입출력 어떻게 합니까 님들이 웹서비스를 운영하는데 갑자기 회원가입용 데이터베이스가 필요해진겁니다. 거기에 회원 아이디, 이름, 비번을 저장해두고 싶은겁니다. 그럼 고객들이 직접 데이터베이스에 아이디, 비번을 INSERT문으로 집어넣을 수 있게 만들면 되겠군요?  ..

Mysql&DBeaver 2024.09.08

DBeaver) 엔티티 관계도 쉽게 잘그리는 법 (ERD)

DB를 설계할 때 정규화로 테이블을 쪼개놓으면 좋다고 했습니다. 하지만 테이블을 그런 식으로 100개 만들어놓으면나중에 테이블 하나를 보고있을 때 이게 어떤 용도의 테이블인지 판단하기 어렵습니다. 그래서 테이블들의 관계를 도식화해서 그려놓기도 하는데 이걸 엔티티 관계도 (ERD) 라고 부릅니다.     ▲ 대충 이렇게 생겼습니다. 새로운 기능 만들 때 DB설계를 위해 ERD부터 그리라고 요구하는 사람이 있기도 하고 JOIN연산같은거 할 때 관계를 한 눈에 파악할 때도 ERD를 찾기도 합니다. 아무튼 ERD 그리는 법을 알아봅시다. 직접 종이에 그려도 되고 아니면 무료 온라인 ERD 그리기 프로그램들도 많습니다. ERD그리면 DDL 문법으로 바꿔주는 곳들도 있음       DBeaver에서는 자동으로 그려..

Mysql&DBeaver 2024.09.08

DBeaver)Trigger 사용하기

DBMS 보면 Trigger 메뉴가 있습니다.어디다 쓰는 것이냐면 데이터베이스에 INSERT UPDATE DELETE 하기 전에자동으로 실행하고 싶은 코드가 있으면 Trigger 메뉴 들어가서 설정해놓으면 됩니다. 그럼 정말 자동으로 실행되는데  - 데이터를 다른 테이블에 반영하고 싶을 때- 데이터 넣기 전에 데이터를 깔끔하게 정제하고 싶을 때 - 테이블 변경기록 (로그)를 다른 테이블에 저장해두고 싶을 때- 테이블의 통계를 다른 테이블에 저장해두고 싶을 때 대충 이런 경우에 사용하면 편리합니다.      테이블 2개 준비해봅시다  예를 들어 product 테이블과 counter 테이블이 있다고 칩시다.  ▲ product 테이블은 그냥 상품저장용임 상품도 하나 저장해봅시다.   ▲ 이건 counter ..

Mysql&DBeaver 2024.09.08

DBeaver)데이터베이스 필요하면 빌려쓰는 것도 (AWS)

(변경사항)올해부터 RDS를 '퍼블릭 액세스 허용'으로 사용시 Public IPv4 사용요금 명목으로 월 3달러정도 추가요금이 발생해서한 번 만들어보고 안쓰면 삭제합시다.이외엔 Azure가면 MySQL 유동서버 이런 것들도 만들기 쉬운데 IPv4 이용요금은 없고아니면 Supabase 가면 무료로 PostgreSQL 500MB 호스팅받을 수 있습니다.    강의 맨 처음에 했던 것 처럼 MySQL을 컴퓨터에 설치하면여러분 컴퓨터에서 데이터베이스를 이용할 수 있습니다.근데 개발자 마케터 등 회사 내 많은 사람들이 이용하게 하고 싶으면데이터베이스를 직접 컴퓨터에 설치하는 것 보다 AWS, GCP 같은 클라우드서비스에서 하나 호스팅받는게 훨씬 안전합니다. - 자동 백업- 자동 스케일업- 모니터링 - 로그작성 -..

Mysql&DBeaver 2024.09.08

DBeaver)돈 다루다가 큰일나기 싫으면 Transaction

데이터베이스를 너무 믿으면 안됩니다.간혹가다 INSERT, UPDATE, DELETE가 안되고 실패하는 경우가 많은데 그럼 뭐 다시 시도하면 되긴 합니다만 동시에 여러 쿼리를 실행해야하는데 그 중에 하나만 실패하는 경우여러분들 서비스 운영에 심각한 문제가 발생하는 경우가 있습니다.  예를 들어 여러분이 은행 DB를 운영하는데A 고객 -> B 고객 이렇게 1000원을 보내야한다고 칩시다. 1. 그럼 A 고객의 잔고에서 -1000을 하고 2. B 고객의 잔고에 +1000을 하면 됩니다. UPDATE 문법을 2번 쓰면 되겠군요.  근데 1번은 성공했는데 2번은 실패하면 어떻게되죠? 은행 문닫아야합니다. 문닫기 싫으면 transaction이라는 기능을 사용합시다.       Transaction 기능 위와 같은..

Mysql&DBeaver 2024.09.08

DBeaver)진짜 검색기능은 Full Text search

여러분이 게시판 서비스를 운영한다고 칩시다.그래서 테이블 하나에 게시물의 글내용, 작성자, 발행일을 저장하기 시작했는데  검색기능이 필요해진겁니다. 검색기능은 어떻게 구현하죠?    LIKE 연산자 예전에 간단한 검색기능 만들고 싶으면 컬럼명 LIKE %단어% 하면 된다고 했습니다.짧은 문장 안에서 검색하는건 이걸로 충분하지만 1. % 기호를 맨 앞에 쓰면 인덱스활용을 못하고2. 문장이 좀 길거나 행이 너무 많아지면 LIKE 만으로는 매우 느리게 동작합니다.하지만 full text index를 만들어두면 걱정없습니다.       Full text search를 위한 index  긴 글도 데이터베이스의 컬럼 하나에 보관할 수 있습니다. text 데이터타입 쓰면 6만5천자를 보관할 수 있으니까요. 이렇게 긴..

Mysql&DBeaver 2024.09.08

DBeaver)index 만들기 / 성능평가

index 만들어두면 성능이 향상된다고 했는데 빨리 강의하단에 있는 library.csv 파일 가져와서 얼마나 SELECT 성능이 향상되는지 테스트해봅시다.어떤 도서관의 소장도서 6만권의 정보가 들어있는 데이터셋입니다.   ▲ 근데 csv파일 가져오기할 때 Configure 메뉴에서 데이터타입을 varchar(300) 이상으로 설정해야 잘 가져올 수 있습니다.책이랑 저자 이름 긴게 좀 많아서요         execution plan (실행계획) 분석해보기  SELECT * FROM library WHERE 등록번호 = 'CEM97499' 방금 가져온 테이블에서 책 아무거나 하나만 출력해봅시다. 근데 뭔가 오래걸리는 것 같으면 실행계획부터 분석해봐도 됩니다.   원하는 SELECT 쿼리문에 커서 찍고 D..

Mysql&DBeaver 2024.09.08

DBeaver)index 개념정리

테이블 안에 데이터가 1억개 있는데 거기서 'age' 컬럼이 20인 사람을 찾고 싶으면 어쩌죠? SELECT 명령을 내리면 되는데 그럼 컴퓨터는 1억개의 행을 다 뒤져봐야합니다. (매우느림)그게 싫으면 index를 만들어두면 됩니다.     업다운놀이  방금 1부터 100까지 써있는 카드를 책상에 진열해놨습니다.제가 지금 어떤 숫자를 생각하고 있는지 맞춰보십시오.저는 "예/아니오" 로만 대답할 수 있습니다.   멍청한 사람은 1입니까? / 아뇨2입니까? / 아뇨3입니까? / 아뇨이렇게 계속 물어보겠지만 똑똑한 사람은50보다 큽니까? / 넹그렇다면 75보다 작습니까? /넹그럼 68보다 큽니까? / 아뇨이런 식으로 반을 자르면서 답이 아닌걸 소거합니다. 그럼 훨씬 적은 질문으로 답을 찾아낼 수 있으니까요. ..

Mysql&DBeaver 2024.09.08

DBeaver)procedure, function 안에서 쓸 수 있는 IF

뭘 하든 경우에 따라 다른 코드를 실행하고 싶은 경우가 많습니다. 그럴 때 IF / THEN / ELSE 문법을 사용합시다.    조건에 따라 다른 SQL 문장을 실행하고 싶다 예를 들어봅시다. card테이블의 '사용금액' 컬럼 총 합계를 구하는데총 합계가 500만원이 넘지 않으면 SELECT '분발하세요'총 합계가 500만원이 넘으면 SELECT '잘했어요'를 실행하고 싶으면 어떻게 코드를 짜죠? 예전에 배운 IF() 또는 CASE 써도 가능하겠지만그 문법들은 "이 경우엔 A, 저 경우엔 B를 그 자리에 남겨주세요" 이렇게경우에 따라 문자나 숫자자료를 1개 남겨주는 문법일 뿐이라조건에 따라 SELECT같은 쿼리문은 남기지 못합니다.       조건에 따라 다른 코드를 실행하고 싶으면 IF THEN EL..

Mysql&DBeaver 2024.09.08

DBeaver)procedure와 비슷한 function 문법

실은 procedure와 비슷한 문법이 하나 있습니다.function (함수) 문법인데 용도는 같습니다만 기능만 살짝 다릅니다.procedure 왜 만들어쓴다고 했죠? 그냥 자주 쓰는 긴 코드 한 단어로 만들어놓고 싶을 때 쓴다고 했습니다.function도 똑같음      DBeaver에서 function 만드는 법   ▲ 데이터베이스 누르면 있는 procedure 만드는 곳에서 똑같이 만들 수 있습니다.다만 procedure 말고 function으로 선택하고 이름 아무렇게나 작명하면 됩니다.     ▲ 그리고 똑같이 BEGIN / END 사이에 자주 쓸 코드 집어넣어두고 저장하면 됩니다. 그럼 앞으로 함수명() 사용할 때 마다 BEGIN / END 사이에 있던 긴 코드가 실행됩니다. 용도는 proced..

Mysql&DBeaver 2024.09.08