반응형

Data Analysis/혼공SQL 14

[혼공SQL] 7-2 스토어드 함수와 커서

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 1. 스토어드 함수 스토어드 프로시저와 비슷하지만 사용방법과 용도가 조금 다르다. 1.1 스토어드 함수의 개념과 형식 MySQL에서 제공하는 내장 함수 외에 직접 함수를 만드는 기능을 제공 DELIMITER $$ CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환형식 BEGIN 이 부분에 프로그래밍 코딩 RETURN 반환값; END $$ DELIMITER ; SELECT 스토어드_함수_이름(); RETURNS 문으로 반환할 값의 데이터 형식을 지정하고, 본문 안에서 RETURN 문으로 하나의 값을 반환해야 함 스토어드 함수의 매개변수는 모두 입력 매개변수 이며 IN을 붙이지 않음 SELECT 문..

[혼공SQL] 7-1 스토어드 프로시저 사용 방법

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. ✏️ 스토어드 프로시저(stored procedure) : SQL에 프로그래밍 기능을 추가해서 일반 프로그래밍 언어와 비슷한 효과를 냄 1. 스토어드 프로시저 기본 1.1 스토어드 프로시저의 개념과 형식 MySQL에서 제공하는 프로그래밍 기능으로 내부에서 사용할 때 적절한 프로그래밍 기능을 제공 데이터베이스의 개체 중 한 가지로 테이블처럼 각 데이터베이스 내부에 저장 쿼리 문의 집합 / 어떠한 동작을 일괄 처리하기 위한 용도로 사용 → 자주 사용하는 일반적인 쿼리를 반복하는 것보다 스토어드 프로시저로 묶어 놓고 필요할 때 호출하면 편리함 📌 스토어드 프로시저 만드는 형식 DELIMITER $$ -- 구분자 / 스토어드 프..

[혼공SQL] 6-3 인덱스의 실제 사용

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 인덱스 생성 : CREATE INDEX 인덱스 제거 : DROP INDEX 1. 인덱스 생성 문법 테이블을 생성할 때 특정 열을 기본 키, 고유 키로 설정하면 인덱스가 자동 생성됨 Primary Key 문법 사용 : 클러스터형 인덱스 생성 Unique 문법 사용 : 보조 인덱스 생성 그 외 직접 보조 인덱스를 생성하려면 CREATE INDEX문을 사용해야 함 (CREATE INDEX 로 생성되는 인덱스는 보조인덱스임) CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름 (열_이름) [ASC | DESC] UNIQUE는 중복이 안 되는 고유 인덱스를 만듦 (생략하면 중복 허용) CREATE UNIQUE로 ..

[혼공SQL] 6-2 인덱스의 내부 작동

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 1. 인덱스의 내부 작동 원리 1.1 균형 트리 노드 (node) : 데이터가 저장되는 공간 루트 노드 (root node) : 상위노드로 모든 출발의 시작 리프 노드 (leaf node) : 마지막 노드 중간 노드 (internal node) : 루트노드와 리프 노드 사이의 노드 MySQL에서는 노드를 페이지(page) 라고 부름 최소한의 저장 단위 16KByte(16384byte) 크기를 가짐 ex. 데이터를 1건만 입력해도 1개 페이지가 필요함 💡 데이터를 균형 트리로 구성 vs 구성하지 x 데이터를 균형 트리로 구성하지 않는다면? 전체 테이블 검색(Full Table Scan)을 해야 함 균형트리로 구성되어있다면?..

[혼공SQL] 6-1 인덱스 개념을 파악하자

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 1. 인덱스 1.1 인덱스의 장점과 단점 장점 SELECT 문으로 검색하는 속도가 매우 빨라짐 컴퓨터의 부담이 줄어들어 전체 시스템의 성능이 향상됨 단점 데이터베이스 안에 추가적인 공간이 필요함 처음 인덱스를 만드는 데 시간이 오래 걸림 인덱스는 잘 사용하면 SELECT의 검색 속도가 빨라지지만, 잘못 사용하면 오히려 성능이 나빠짐 2. 인덱스의 종류 클러스터형 인덱스 (Clustered Index) → 영어사전 보조 인덱스 (Secondary Index) → 찾아보기 2.1 클러스터형 인덱스 📌 자동 생성됨 기본 키로 지정하면 자동으로 클러스터형 인덱스 가 생성됨 (기본 키는 테이블에 하나만 지정할 수 있으므로 클러스터..

[혼공SQL] 5-3 가상의 테이블: 뷰

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 1. 뷰의 개념 1.1 뷰의 기본 생성 📌 뷰를 만드는 형식 create view 뷰_이름 as select 문; 📌 뷰에 접근하는 형식 select 열_이름 from 뷰_이름 [where 조건]; 뷰 생성 create view v_member as select mem_id, mem_name, addr from member; 뷰 접근 select * from v_member; -- 필요한 열만 출력, 조건식 추가할 수 있음 select mem_name, addr from v_member where addr in ('서울', '경기'); 1.2 뷰를 사용하는 이유 1) 보안(security)에 도움이 된다. 사용자의 중요한..

[혼공SQL] 5-2 제약조건으로 테이블을 견고하게

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 1. PRIMARY KEY 제약조건 데이터를 구분할 수 있는 식별자 중복 x NULL 값 입력 x 테이블은 기본 키(PK)를 1개만 가질 수 있음 기본 키(PK)로는 테이블의 특성을 가장 잘 반영하는 열을 선택하는 것이 좋음 1.1 CREATE TABLE 에서 설정하는 기본 키 제약조건 1) 열 이름 뒤에 primary key 를 붙여줌 create table member ( mem_id char(8) not null **primary key**, mem_name varchar(10) not null, height tinyint unsigned null ); 2) 제일 마지막 행에 primary key (mem_id) 추..

[혼공SQL] 5-1 테이블 만들기

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 데이터베이스와 테이블 설계하기 1) 회원테이블(member) 아이디(mem_id) : 기본 키(primary key / PK) 평균 키(height) : TINYINT UNSIGNED → 0~ 255 범위 UNSIGNED 예약어 (4-1 MySQL의 데이터 형식) 2) 구매테이블(buy) 순번(num) : 1, 2, 3, … 자동 입력하도록 설정 아이디(mem_id) : 외래 키(Foreign Key / FK) **AUTO_INCREMENT (**3-3. 데이터 변경을 위한 SQL문) 1. 테이블 생성하기 데이터 베이스 생성 -- 데이터베이스(naver_db) 생성 DROP DATABASE IF EXISTS naver_d..

[혼공SQL] 4-3 SQL 프로그래밍

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 📌 스토어드 프로시저 : MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체 DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN 이 부분에 SQL 프로그래밍 코딩 END $$ → 스토어드 프로시저 종료 DELIMITER; → 종료 문자를 다시 세미콜론으로 변경 CALL → 스토어드 프로시저 실행 1. IF문 1.1 IF 문의 기본 형식 조건문으로 가장 많이 사용되는 프로그래밍 문법 중 하나 📌 기본 IF문의 형식 두 문장 이상이 처리되어야 할 때는 BEGIN ~ END로 묶어줘야 한다. IF THEN SQL 문장들 END IF; 📌 예시 DELIMITER $$ --..

[혼공SQL] 4-2 두 테이블을 묶는 조인

본 포스팅은 '한빛출판네트워크'의 '혼공SQL' 책을 기반으로 작성한 포스팅입니다. 📌 조인(join)이란? 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것 1. 내부 조인 1.1 일대다 관계 두 테이블의 조인을 위해서는 테이블이 일대다(one to many) 관계로 연결되어야 함 데이터베이스의 테이블은 하나로 구성되는 것보다는 여러 정보를 주제에 따라 분리해서 저장하는 것이 효율적이며 분리된 테이블은 서로 관계를 맺고 있음 1.2 내부 조인의 기본 조인은 3개 이상의 테이블로도 할 수 있지만 대부분 2개로 조인함 SELECT FROM INNER JOIN -- JOIN이라고만 써도 INNER JOIN으로 인식 ON [WHERE 검색 조건] 📌 두 테이블을 내부 조인 USE market_db;..

반응형