본문 바로가기

728x90
반응형

DBMS

[DB_MySQL] 이것이 MySQL이다 ch09 인덱스 1(클러스터형 인덱스, 보조 인덱스) 1. 인덱스(Index)란? ▷ 책의 의 개념과 비슷 ▷ 데이터를 좀 더 빠르게 찾을 수 있도록 해주는 도구 ◎ 인덱스의 장단점 ▷ 장점 ▶ 검색 속도가 무척 빨라질 수 있음 (항상 그런 것은 아님) → 책도 너무 두꺼우면 찾기 어렵기 때문입니다. ▶ 쿼리의 부하가 줄어들어 시스템 전체의 성능 향상 ▷ 단점 ▶ 인덱스가 데이터베이스 공간을 차지해서 추가적인 공간 필요 → 대략 데이터베이스 크기의 10% 정도의 추가 공간 필요 ▶ 처음 인덱스 생성하는데 시간 소요 ▶ 데이터의 변경 작업 (Insert, Update, Delete)이 자주 일어나는 경우 성능이 나빠질 수도 있음 ◎ 인덱스의 종류 ▷ 클러스터형 인덱스 (Clustered Index) ▶ 기본키 ▶ ‘영어 사전’과 같은 책 ▶ 테이블 당 한 개.. 더보기
[DB_MySQL] 이것이 MySQL이다 ch08 테이블과 뷰 3(테이블스페이스) 1. 테이블스페이스(oracle) ◎ 테이블스페이스의 개념 ▷ 물리적인 공간을 뜻함 ▷ 데이터베이스는 논리적 공간 ▷ 테이블스페이스를 지정하지 않은 경우 ▶ 시스템 테이블스페이스(System Tablespace)에 테이블 저장됨 ▷ 시스템 변수 innodb_data_file_path에 관련 내용 저장됨 ▷ 시스템 테이블 스페이스 파일 확인 ▶ MySQL 8.0에서 테이블스 페이스 파일은 기본적으로 ‘C:\Programdata\MySQL\MySQL Server 8.0\Data’ 폴더에 저장 되어 있음 ◎ 성능 향상을 위한 테이블스페이스 추가 ▷ 소용량의 데이트를 사용하는 경우에는 테이블스페이스 고려하지 않아도 되나 대용량의 데이터를 운영할 경우에는 성능 향상을 위해 테이블스페이스의 분리를 적극 고려 ◎ 테.. 더보기
[DB_MySQL] 이것이 MySQL이다 ch08 테이블과 뷰 2(뷰, view) 1. 뷰 ◎ 뷰의 개념 ▷ 일반 사용자 입장에서 테이블과 동일하게 사용하는 개체 ▷ 뷰를 생성한 후에는 테이블처럼 접근 가능하여 동일한 결과 얻을 수 있음 ▷ 뷰의 작동 방식 ▷ 뷰 생성 구문 1. 테이블 생성 drop database if exists sqldb; -- sqldb가 있으면 drop해서 db를 삭제, 없으면 그냥 빠져나가기 create database sqldb; use sqldb; -- 테이블 생성 -- 회원 테이블 create table usertbl( userIDchar(8)not nullprimary key,-- 사용자 아이디(PK) namevarchar(10)not null,-- 이름 birthYearintnot null,-- 출생년도 addrchar(2)not null,-- 지.. 더보기
[DB_MySQL] 이것이 MySQL이다 ch08 테이블과 뷰 1-1(테이블 제약 조건 및 수정 방법 실습) 1. 테이블 생성 및 데이터 삽입 use tabledb; drop table if exists buytbl; drop table if exists usertbl; -- 테이블 생성 -- 회원 테이블 create table usertbl( userIDchar(8), namevarchar(10), birthYearint, addrchar(2), mobile1char(3), mobile2char(8), heightsmallint, mDatedate ); -- 회원 구매 테이블 (buytbl) create table buytbl( numintauto_increment primary key, userIDchar(8), prodNamechar(6), groupNamechar(4), priceint, amountsm.. 더보기
[DB_MySQL] 이것이 MySQL이다 ch08 테이블과 뷰 1(테이블 생성, 기본키, 외부키) 1. 테이블 만들기 1. MySQL Workbench에서 테이블 생성 ▷ Navigator – [Schemas] 클릭 – ‘tabledb’ 확장 – ‘Tables’ 마우스 오른쪽 버튼 – [Create Table] 선택 ▷ usertbl 생성 ▷ buytbl 생성 ▷ num열에 AUTO_INCREMENT, FOREIGN KEY 추가 2. MySQL Workbench에서 데이터 입력 ▷ Navigator에서 usertbl 선택 – 마우스 오른쪽 버튼 클릭 – [Select Rows – Limit 1000] 선택 ▷ 아이콘 클릭한 후, 3개 행 입력 - 클릭 - 클릭 ▷ buytbl 선택 – 마우스 오른쪽 버튼 클릭 – [Select Rows – Limit 1000] 선택 ▷ 아이콘 클릭한 후, 3개 행 입.. 더보기
[DB_MySQL] 이것이 MySQL이다 ch07 SQL 고급5 (SQL 프로그래밍, if else, case, while) 1. SQL 프로그래밍 ◎ 스토어드 프로시저를 이용한 프로그래밍 ▷ 10장에서 심화 학습 예정 ▷ 형식 DELIMITER $$ CREATE PROCEDURE 스토어드 프로시저이름() BEGIN 이 부분에 SQL 프로그래밍 코딩.. END $$ DELIMITER ; CALL 스토어드 프로시저이름(); ◎ IF...ELSE ▷ 조건에 따라 분기 ▶ 참 / 거짓 두가지만 있기에 2중 분기 ▷ 한 문장 이상 처리되어야 할 때 BEGIN.. END로 묶어주기 ▷ 형식 IF THEN SQL문장들1.. ELSE SQL문장들2.. END IF; 부울 표현식 부분이 참이면 SQL문장들1 수행 / 거짓이면 SQL문장들2 수행 ◎ IF 예제 1 drop procedure if exists ifProc; use sqldb; .. 더보기
[DB_MySQL] 이것이 MySQL이다 ch07 SQL 고급 4(피벗, JSON 데이터, 조인) 1. 피벗의 구현 ◎ 피벗(Pivot) 이란? ▷ 한 열에 포함된 여러 값 출력, 이를 여러 열로 변환하여 테이블 반환식 회전, 필요하면 집계까지 수행 1. uName을 기준으로 group -- 피벗의 구현 use sqlDB; create table pivotTest( uName CHAR(3), season CHAR(2), amount int ); desc pivotTest; insert into pivotTest values ('김범수', '겨울', 10), ('윤종신', '여름', 15), ('김범수', '가을', 25), ('김범수', '봄', 3), ('김범수', '봄', 37), ('윤종신', '겨울', 40), ('김범수', '여름', 14), ('김범수', '겨울', 22), ('윤종신', .. 더보기
[DB_MySQL] 이것이 MySQL이다 ch07 SQL 고급 3(수학 함수, 날짜 및 시간 함수, 시스템 정보 함수) 1. 수학 함수 1. ABS(숫자) ▷ 숫자의 절댓값 계산 -- ABS(숫자) : 절댓값 select abs(-100); -- 100 반환​ 2. ACOS(숫자), ASIN(숫자), ATAN(숫자), ATAN2(숫자1, 숫자2), SIN(숫자), COS(숫자), TAN(숫자) ▷ 삼각 함수와 관련된 함수 제공 3. CEILING(숫자), FLOOR(숫자), ROUND(숫자) ▷ 올림, 내림, 반올림 계산 -- CEILING(숫자) : 올림 = ceil() -- FLOOR(숫자) : 내림 -- ROUND(숫자) : 반올림 select ceiling(4.7), floor(4.7), round(4.7); -- 5, 4, 5 반환​ 4. CONV(숫자, 원래 진수, 변환할 진수) ▷ 숫자를 원래 진수에서 변환할.. 더보기

728x90
반응형