본문 바로가기
반응형

MySQL20

php, MySQL을 사용한 게시판 Preface 이전 글에서도 언급했듯 주먹구구식의 공부 방법을 배척하고 올바른 방향을 잡기 위해 동적인 웹사이트를 직접 제작해봤다. 사실 개발을 시작하기 전엔 정말 기본적인 기능만을 구현할 것이므로 몇 시간이면 결과를 뚝딱 낼 수 있을 줄 알았다. 분명 머릿속으론 완벽했는데, 뚝딱은 무슨 개발환경 세팅에만 뚝딱뚝딱뚝딱뚝딱 며칠은 걸렸다. 기존 계획은 visual studio code를 기본 IDE로 사용하는 것이었지만, 지난 실습 때 설치했던 XAMPP의 php를 vscode에 연동하기 위해 여러 블로그의 글을 무작정 따라하던 과정에서 뭘 잘못 건드렸는지 프로그램이 제대로 작동되지 않아 체념하고 노트북을 포맷했다. 결국 생활코딩 강의를 보며 MAMP를 설치한 후 atom IDE를 통해 실습을 진행하려던 .. 2022. 11. 8.
(Fin) 파이썬과 MySQL 응용 프로그래밍 Preface 이번 장에선 파이썬과 MySQL의 연동 방법을 알아봤다. 특별한 방법이 있는 것은 아니고, 일반적인 파이썬 코드를 작성한 후 execute( ) 함수 안에 sql 문을 작성하기만 하면 된다고 한다. 이 부분 역시 나중에 본격적으로 사용해야 할 때가 오면 추가적인 공부를 해야할 것 같다. 또, 책의 마지막 부분에 tkinter를 사용하여 gui로 DB를 조작하는 코드와 공간 데이터를 gui에 표현하는 코드도 있었는데, 지금 상태에선 굳이 다룰 필요가 없을 것 같아 한 번 훑어보기만 했다. 이번 장을 마지막으로 드디어 "이것이 MySQL이다" 책을 모두 마쳤다. 7월이 되기 전에 마무리하고 다음 책으로 넘어갈 계획이었지만, 어쩌다보니 책 한 권을 너무 오랬동안 붙잡고 있었다. 이번에 공부할 웹.. 2022. 7. 13.
PHP와 MySQL의 연동 Preface 이번 장에선 php와 mysql을 연동하여 mysqlserver에 저장된 db를 조작하고, 화면에 출력하는 실습을 진행했다. 기본적인 화면은 html을 사용하여 구성했으며, ide는 vscode를 사용했다. html과 php의 기본적인 문법은 지난 장에서 대부분 이해했지만, 막상 이를 통해 실제 코드를 작성하기는 쉽지 않았다. 단순히 책에 적힌 내용을 따라 적는 것 뿐이었지만, 코드를 한줄한줄 이해하고 넘어가려 하니 시간이 꽤 오래 걸렸다. 새로운 언어를 공부하자 처음 파이썬을 공부했을 때가 기억난다. 뭣도 모르고 일단 따라 적기는 하지만, 내가 잘 이해하고 있는 것인지, 내가 과연 책 없이도 코드를 작성할 수 있을지 많은 걱정을 했었다. 그러나 비슷한 코드를 여러번 접하자 일정 수준까지는.. 2022. 7. 10.
MySQL과 공간 데이터 Preface 이번 장에선 MySQL에서 공간 데이터를 저장하고 사용하는 방법을 공부했다. 원래 계획대로라면 이전 장의 PHP부터 공부하는 것이 맞지만, 카페 와이파이가 너무 느려 xampp를 다운로드를 할 수 없어 뒷쪽의 공간 데이터부터 보기로 했다. 공간 데이터가 대충 어떤 상황에서 사용되고 왜 필요한지 등은 이해할 수 있었지만, 공간 함수부터 시작하여 전체적으로 익숙치 않은 문법이라 느낌만 이해하고 넘어갔다. 마지막 부분엔 GIS 응용 프로젝트를 수행하는 파트도 있었는데, 지금 상황에서 굳이 이정도의 내용까지 익힐 필요가 없을 것 같다는 생각이 들어 생략했다. 추후 해당 내용이 필요할 때가 오면 다시 한 번 제대로 공부하자. 1. 지리정보시스템의 개념 - 지리정보시스템(GIS: Geographica.. 2022. 6. 27.
전체 텍스트 검색과 파티션 Preface 이번 장에선 전체 텍스트 검색과 파티션의 사용 방법을 공부했다. 특별히 어려운 내용은 없어서 금방 끝낼 수 있었다. 이번 장을 끝으로 MySQL의 기본적인 사용 방법은 대부분 마친 것 같다. 다음 장 부턴 php, python 등 응용 프로그램들과의 연동 방법을 소개하는 것 같은데, 내가 배웠던 python을 MySQL과 어떻게 연동하여 사용할 수 있을지 궁금하고 기대된다. 1. 전체 텍스트 검색 - 전체 텍스트 검색: 긴 문자로 구성된 구조화되지 않은 텍스트 데이터를 빠르게 검색하기 위한 기능 → 첫 글자뿐 아니라, 중간의 단어나 문장으로도 인덱스를 생성해준다. - 전체 텍스트 인덱스(FULL TEXT Index)의 특징 1) InnoDB와 MyISAM 테이블만 지원한다. 2) char,.. 2022. 6. 26.
스토어드 프로그램 (2) Preface 이번 장에선 스토어드 함수, 커서, 트리거 등 다양한 스토어드 프로그램에 대해 공부했다. 내용 자체가 많진 않았지만, 직접 코드를 작성하며 이해해야 할 부분이 많아서 그런지 3~4시간이 훌쩍 갔다. 처음 BEFORE 트리거의 설명을 봤을 땐 어떤 상황에서 사용하는 트리거인지 도통 감이 오지 않았는데, 예시를 본 후 직접 코드를 짜니 금방 이해가 됐다. 또, 중첩 트리거를 공부하며 코딩은 차라리 지식이 얕을 때가 훨씬 간단하고 쉬운 것 같다는 생각을 했다. 이런저런 내용을 배우면 배울수록 코드를 짤 때 고려해야 할 부분이 많아지는 것 같다. 그래도 오늘은 오랜만에 코딩 공부를 처음 시작했을 때 처럼 시간 가는 줄 모르고 재미있게 공부했다. 2. 스토어드 함수 - 스토어드 함수: 사용자가 직접.. 2022. 6. 25.
스토어드 프로그램 (1) Preface 기말고사를 끝내고 대략 한 달만에 MySQL 공부를 다시 시작했다. 중간고사 때와 달리 종강을 앞두고 있어 이것 저것 제출할 것도, 준비할 것도 너무 많아 개발 공부에 시간을 쓰지 못했다. 어찌저찌 종강을 한 후엔 일주일 정도 아무것도 안 하고 푹 쉬었다. 몸이 너무 피곤해서 7월부터 공부를 시작할까 생각도 했지만, 남은 시간이 얼마 없어 후다닥 책을 폈다. 이번 장은 한 번에 글을 업로드 할 생각이었는데 오버플로우 코드를 실행시킨 뒤부터 맥북 발열이 너무 심해서 어쩔 수 없이 파트를 나누어 업로드해야 할 것 같다. 딱히 어려운 부분은 없었지만, 오랜만에 다시 공부를 해서 그런지 기억이 잘 나지 않는 부분도 있다. 잠시 복습하는 시간을 가진 후 빡새게 공부해서 얼른 SQL을 마치고 웹 공부.. 2022. 6. 23.
DB 및 테이블의 정보를 출력하는 명령어 Preface MySQL을 사용하다 보면 DB나 테이블의 정보를 출력하는 명령어를 사용해야 하는 경우가 종종 있는데, 이런 명령어들은 자주 사용하는 코드가 아니라 매번 이전 글들을 확인해야 하는 불편함이 있다. 이러한 단점을 줄이고, 필요한 모든 명령어를 한 눈에 볼 수 있는 편의성을 제공하기 위해 이렇게 따로 글을 업로드한다. 추후 다른 명령어들을 배우면 이번 글의 하단에 추가할 계획이다. 1. MySQL의 DB 및 테이블의 정보 출력 명령어 - 현재 서버에 어떤 DB가 있는지 조회 show databases; - 현재의 DB에 있는 테이블의 정보를 조회 show table status; -- 특정 테이블 show table status like '테이블이룸'; - 특정 테이블의 열이 무엇이 있는지 확.. 2022. 5. 29.
인덱스 (2) Preface 이번 장에선 인덱스가 없는 경우, 클러스터형 인덱스를 사용하는 경우, 그리고 보조 인덱스를 사용하는 경우의 시스템 성능을 직접 비교해봤다. 단순 읽기 작업을 하는 경우엔 보통 클러스터형 인덱스를, 데이터 수정이 자주 발생하는 경우엔 보조 인덱스를 사용하는 것이 좋다. 또, DB에 저장된 대부분의 데이터를 읽는 경우나 데이터 중복도가 높은 경우엔 오히려 인덱스를 사용하지 않는 것이 효울적이다. 이 외에도 인덱스를 사용할 때 몇 가지 주의할 점을 알아봤는데, 크게 어려운 부분은 없었다. 꼭 기억해야 할 점이라면 인덱스가 생성된 열에는 where절에 함수나 연산을 사용하면 안 된다는 것 정도가 있다. 4. 인덱스 생성/변경/삭제 - create index문으로는 primary key로 생성되는 .. 2022. 5. 29.
인덱스 (1) Preface 이번 장에선 데이터의 검색 속도와 연관된 인덱스에 대해 공부했다. 인덱스의 개념 자체는 일상생활에서도 흔히 쓰이므로 쉽게 이해할 수 있었지만, 클러스터형 인덱스와 보조 인덱스의 차이를 완벽히 이해하기까지는 시간이 조금 걸렸다. 이번 장을 공부하며 한 가지 궁금했던 점이 있는데, 두 인덱스를 혼합하여 사용할 때 보조 인덱스의 리프 페이지는 클러스터형 인덱스의 키 값을 가진다는 부분이다. 만약 보조 인덱스의 리프 페이지가 주소값을 가지게 되면 추후 데이터 입력 시 클러스터형 인덱스의 리프 페이지가 재구성되어 데이터 페이지의 번호 및 오프셋이 대폭 변경된다고 하는데, 이런 문제점을 피하기 위해 데이터 페이지를 각각 따로 두면 되지 않을까? 위의 의문점에 대해 이런 저런 생각을 해봤는데, 아마도 .. 2022. 5. 24.