반응형

MySQL 24

[혼공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 $$ -- 구분자 / 스토어드 프..

[MySQL 코딩테스트 연습] 2. JOIN (4) 보호소에서 중성화한 동물

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조..

[MySQL 코딩테스트 연습] 2. JOIN (3) 오랜 기간 보호한 동물(1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조..

[혼공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..

반응형