개발 여정/DataBase (MySQL)
-
[DB] 클러스터드 인덱스 vs 넌클러스터드 인덱스 차이개발 여정/DataBase (MySQL) 2021. 12. 15. 19:34
클러스터드 인덱스 vs 넌클럭스터드 인덱스 클러스터드 인덱스 넌클러스터드 인덱스 생성 물리적으로 행을 재배열 리프(Leaf) 페이지를 따로 생성 용량 원 테이블 하나만 사용하니 용량이 적음 따로 리프 페이지를 생성하니 용량을 많이 차지함 속도 검색 - 빠름 삽입/수정 - 느림 검색 - 느림 삽입/수정 - 빠름 선택도 30% 이내 사용 권장 3% 이내 사용 권장 최대 개수 테이블 당 1개 테이블 당 249개 비유를 하자면 클러스터드 인덱스는 책에서 필요한 내용이 있을 경우 인덱스 스티커를 붙여서 바로 찾을 수 있도록 하는 것이고, 넌클러스터드 인덱스는 목차를 통해서 찾는 것이다. 선택도란? 테이블 조회할 때 행이 필터링되는 비율 행(밀도)이 많으면 선택도가 낮고, 행(밀도)이 적으면 선택도가 높음 예 SE..
-
MySQL :: SELECT 심화 (Like, Order by, Concat)개발 여정/DataBase (MySQL) 2021. 9. 3. 19:06
SELECT 심화 (Like, Order by, Concat) 1-1. Like (※대소문자 구별이 없는 것이 default) ex) '이'로 시작하는 유저네임을 찾기 select * from `review` where `userName` like '이%'; ex) '트'로 끝나는 menu 찾기 (권장 안함. 이유 : table을 full-scan하게 되기 때문) select * from `review` where `menu` like '%트'; ex) 'B'가 들어가는 storeName 찾기(권장 안함. 이유 : table을 full-scan하게 되기 때문) select * from `review` where `storeName` like '%B%'; 1-2. Like (대소문자 구별이 있는 경..
-
MySQL :: DELETE (삭제)개발 여정/DataBase (MySQL) 2021. 9. 3. 18:52
테이블 내용 삭제하기 (DELETE, TRUNCATE) ㅁ 모든 내용 삭제 DELETE FROM `테이블` ※ 단 id는 초기화되지 않음. ㅁ모든 내용 삭제 (id 초기화 포함) TRUNCATE TABLE `테이블` ㅁ조건에 해당하는 내용 삭제 DELETE FROM `테이블` WHERE 조건 ex) `user` 테이블에서 `name`이 홍길동인 행을 삭제하세요. DELETE from `user` WHERE `name` = '홍길동';
-
MySQL :: UPDATE (내용 변경하기)개발 여정/DataBase (MySQL) 2021. 9. 3. 18:50
테이블 내용 변경하기 - UPDATE문 이용 ㅁ 공식 update `테이블` // 내용 변경할 테이블 set `열` = '값' // 바꿀 내용 where `열` = '값'; // 조건 ㅁ 예 ex) `student` 테이블에서 홍길동 학생의 2019년 2학기 수학 성적을 85로 수정하세요. update `student` set `score` = 85 , `updatedAt` = now() // 업데이트하는 시점도 표기 where `name` ='홍길동' and `year` = '2019' and `semester` = '2' and subject = '수학'; // 조건
-
MySQL :: SELECT (조회)개발 여정/DataBase (MySQL) 2021. 9. 3. 18:47
테이블 내용 출력하기 (SELECT ~ FROM) ㅁ 테이블에 있는 모든 데이터 출력 ex) SELECT * FROM `table` ㅁ 데이터가 많을 때 한번에 보면 load에 무리가 가므로 limit 지정해주는 게 좋음 ex) SELECT * FROM `table` limit 10 (10개만 출력) ㅁ테이블명, 컬럼명에 별칭 붙이기 - as ex) `yyyymmdd` as 'birth' ㅁ컬럼 중복값 제거해서 가져오기 - distinct ex) SELECT distinct `name` FROM `user`; ㅁ데이터의 개수 조회 - count(1), count(*) ex) SELECT count(1) FROM `테이블명`; ㅁ특정 조건부 값 조회 ex) 이름이 '홍길동'인 사람의..
-
MySQL :: CREATE, INSERT (생성, 삽입)개발 여정/DataBase (MySQL) 2021. 9. 3. 18:47
1. 테이블 생성 (CREATE) ㅁ 테이블 생성하기 CREATE TABLE `테이블명`( `id` int NOT NULL auto_increment primary key ) ENGINE = "INNODB" CHARSET = UTF8MB4; 2. 열/값 삽입(INSERT) ㅁ 테이블에 열, 값 넣기 INSERT INTO `테이블명` ( `column1`, ` column2`...) VALUE('값', '값' ...); ㅁ 여러 값들을 한 번에 삽입 INSERT INTO `테이블명` ( `column1`, ` column2`...) VALUES ('값', '값' ...) , ('값', '값' ...) , ('값', '값' ...);