본문 바로가기
반응형

DB & SQL40

인덱스 (2) Preface 이번 장에선 인덱스가 없는 경우, 클러스터형 인덱스를 사용하는 경우, 그리고 보조 인덱스를 사용하는 경우의 시스템 성능을 직접 비교해봤다. 단순 읽기 작업을 하는 경우엔 보통 클러스터형 인덱스를, 데이터 수정이 자주 발생하는 경우엔 보조 인덱스를 사용하는 것이 좋다. 또, DB에 저장된 대부분의 데이터를 읽는 경우나 데이터 중복도가 높은 경우엔 오히려 인덱스를 사용하지 않는 것이 효울적이다. 이 외에도 인덱스를 사용할 때 몇 가지 주의할 점을 알아봤는데, 크게 어려운 부분은 없었다. 꼭 기억해야 할 점이라면 인덱스가 생성된 열에는 where절에 함수나 연산을 사용하면 안 된다는 것 정도가 있다. 4. 인덱스 생성/변경/삭제 - create index문으로는 primary key로 생성되는 .. 2022. 5. 29.
인덱스 (1) Preface 이번 장에선 데이터의 검색 속도와 연관된 인덱스에 대해 공부했다. 인덱스의 개념 자체는 일상생활에서도 흔히 쓰이므로 쉽게 이해할 수 있었지만, 클러스터형 인덱스와 보조 인덱스의 차이를 완벽히 이해하기까지는 시간이 조금 걸렸다. 이번 장을 공부하며 한 가지 궁금했던 점이 있는데, 두 인덱스를 혼합하여 사용할 때 보조 인덱스의 리프 페이지는 클러스터형 인덱스의 키 값을 가진다는 부분이다. 만약 보조 인덱스의 리프 페이지가 주소값을 가지게 되면 추후 데이터 입력 시 클러스터형 인덱스의 리프 페이지가 재구성되어 데이터 페이지의 번호 및 오프셋이 대폭 변경된다고 하는데, 이런 문제점을 피하기 위해 데이터 페이지를 각각 따로 두면 되지 않을까? 위의 의문점에 대해 이런 저런 생각을 해봤는데, 아마도 .. 2022. 5. 24.
Preface 이번 장에선 뷰의 사용 방법을 공부했다. 지난 책에서부터 이미 여러 번 접했던 내용이고, 테이블과 사용 방법도 동일해서 딱히 어려운 부분은 없었다. MySQL의 기본적인 사용 방법은 대부분 숙지했다고 생각했지만, 책에 나온 실습을 그대로 따라하는 것이 아닌, 내가 원하는 데이터를 수정할 땐 종종 문법이 기억나지 않아 앞 부분을 찾아봐야 하는 경우가 있다. 아무래도 진도를 더 나가기 전에 틈틈이 복습을 해야할 것 같다. 1. 뷰 - 뷰(view): 하나 이상의 테이블에서 원하는 모든 데이터를 선택하여, 그들을 사용자 정의하여 나타낸 것 1) 뷰를 새로운 테이블로 생각하고 접근하면 된다. 2) primary key 등의 정보는 확인되지 않는다. - 뷰를 생성하는 방법 use tabledb; c.. 2022. 5. 21.
테이블 Preface 이번 장에선 SQL문을 이용해 테이블을 조작하는 방법을 공부했다. 앞선 장에서부터 별 생각 없이 사용하던 문장들을 막상 하나 하나 나열하니 내용이 정말 많다고 느껴졌다. 또, 여러 제약 조건들을 고려하며 테이블을 정의하고 수정하는 것은 정말 복잡한 것 같다는 생각이 들었다. 그래도 책을 공부하며 한 번, 블로그를 업로드하며 한 번 SQL문을 작성하다보니 나름 익숙해져서 내가 원하는 간단한 작업은 큰 어려움 없이 진행할 수 있게 되었다. 아, 그리고 오늘 달력을 보던 도중 알게 되었는데 내가 개발 공부를 시작한지 벌써 1년이 넘었다. 그동안 나름 꾸준히 한다고 한 것 같긴 한데 음... 아직 한참 부족한 것 같다. 부족한 부분에 스트레스를 받기 보단 간단한 코드라도 짤 수 있게 된 것, 무지.. 2022. 5. 20.
SQL 프로그래밍 Preface 이번 내용은 'SQL 고급' 장의 마지막에 있는 내용이지만, 별도의 내용이라고 생각되어 따로 업로드한다. if문과 while문 등의 반복분, 제어문은 형식만 조금 다를 뿐 기본적인 내용은 파이썬과 거의 동일하다. 또, MySQL의 prepare, execute 문은 '?'를 이용하여 포매팅을 가능하게 해주는 것 같다. 내가 아직 익숙치 않아서 그런지 SQL은 일반 프로그래밍 언어들 보다 쓸데없이 복잡한 것 같다는 생각이 든다. 1. SQL 프로그래밍 - 스토어드 프로시저를 만들고 사용하는 방법 delimiter $$ create procedure 스토어드 프로시저 이름() begin 이 부분에 SQL 프로그래밍 코딩... end $$ delimiter ; call 스토어드 프로시저 이름().. 2022. 5. 17.
SQL 고급 (2) Preface 이번 장에선 두 개 이상의 테이블을 조인하는 방법을 공부했다. 개념 면에선 크게 어려운 부분이 없지만, 아무래도 실습으론 처음 접하는 코드이므로 따로 코드 형식을 찾아보지 않고 능숙하게 사용하기 위해선 시간이 조금 필요할 것 같다. 이번 책은 주문할 때 분철 신청을 했더니 총 3권으로 나뉘어 왔고, 그 중 첫 번째를 방금 막 마쳤다. 이제 조금 있으면 기말고사 기간인데, 시험 공부를 시작하기 전에 두 번째 책을 끝내고 싶다. 4. 조인 - 조인: 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것 - 1대다 관계: 한쪽 테이블에는 하나의 값만 존재해야 하지만, 다른 쪽 테이블에는 여러 개가 존재할 수 있는 관계 - 내부 조인(inner join): 가장 많이 사용되는 .. 2022. 5. 15.
SQL 고급 (1) Preface 이번 장에선 MySQL에서 사용하는 데이터 형식과 다양한 내장 함수에 대해 공부했다. 데이터 형식도 그렇고, 내장 함수도 그렇고 python과 비슷한 부분이 많아 쉽게 이해하며 넘어갈 수 있었다. 다만, 변수의 생성과 사용 방법은 python과 조금 달라 익숙해지려면 시간이 조금 걸릴 것 같다. 또, MySQL의 함수를 공부하며 이렇게 불편하게 Workbench에서 함수를 작성하여 사용할 바에 프로그밍 언어를 사용하는 IDE와 DBMS를 연결하여 사용하는 것이 훨씬 편할 것 같다는 생각을 했다. 1. MySQL의 데이터 형식 - Data Type: 데이터 형식, 데이터형, 자료형, 데이터 타입 etc. - 숫자 데이터 형식 데이터 형식 바이트 수 숫자 범위 설명 SMALL INT 2 -32.. 2022. 5. 10.
SQL 기본 (2) Preface 이번 장은 너무 많은 내용을 담고 있어 두 파트로 나눠서 업로드한다. 2. 데이터의 변경을 위한 SQL문 - SQL의 분류 1) DML(Data Manipulation Language): 데이터를 조작(선택, 삽입, 수정, 삭제)하는 데 사용되는 언어 → 트랜잭션이 발생한다. 2) DDL(Data Definition Language): 데이터베이스 개체를 생성, 삭제, 변경하는 역할 3) DCL(Data Control Language): 사용자에게 어떤 권한을 부여하거나 빼앗을 때 주로 사용하는 구문 - 트랜잭션(transaction): 테이블의 데이터를 변경할 때 실제 테이블에 완전히 적용하지 않고, 임시로 적용시키는 것 - insert문: 테이블에 데이터를 삽입하는 명령어 1) 테이블 .. 2022. 5. 9.
SQL 기본 (1) Preface 이번 장에선 MySQL의 기본적인 문법을 공부했다. 데이터베이스 개론에서 이미 한 번 훑어봤던 내용들이라 쉽게 이해하며 넘어갈 수 있었다. 또, Workbench에서 직접 코드를 작성해보며 실습을 하니 기본 문법들은 금방 손에 익어 영문도 금방 작성할 수 있었다. 처음 파이썬 공부를 시작했을 땐 영타를 칠 줄 몰라 하나 하나 키보드를 찾아가며 독수리 타법으로 타자를 쳤었는데, 그동안 코딩 공부를 하며 영타를 계속 접했던 것이 도움이 됐는지 요즘엔 대부분 막힘 없이 잘 쓴다. 공부도 공부지만, 요즘 무기력증이 온 것 같아 큰일이다. 만사가 귀찮고 아무것도 하기가 싫다. 뭘 해도 재미가 없고 열심히 하고자 하는 욕구가 생기지 않는다. 잠을 자도 자도 피곤하고 몸이 축축 쳐져서 쉬는 날에는 10.. 2022. 5. 8.
Mac 환경에서 MySQL Server 외부 접속 허용하기 Preface 지난 글에서도 언급했듯, Mac에 있는 MySQL Server를 Windows 환경에서도 사용하고싶어 해당 책과 여러 블로그의 글들을 읽어 본 결과 드디어 두 노트북에서 동시에 같은 DB를 사용할 수 있게 되었다. 다음에 같은 상황이 발생하면 신속히 문제를 해결하고자 자세한 방법을 남겨둔다. 1. 연결할 컴퓨터(Window)에서 cmd를 실행한 후 명령어 입력하기 ping Mac_IP_주소 → 맥북의 IP 주소는 환경설정의 네트워크에서 볼 수 있다. → 별다른 문제 없이 연결되면 네트워크가 잘 작동하는 것이다. 2. 맥북에서 터미널을 실행한 후 MySQL 접속하기 - homebrew로 MySQL을 설치한 경우 mysql -u root -p - 사이트에서 직접 MySQL을 설치한 경우 cd .. 2022. 5. 3.