24.07.23 Day17

최지원·2024년 8월 12일

DROP PROCEDURE IF EXISTS 프로시저명

  • 기존에 프로시저가 존재한다면 DROP 시킨다.
  • CREATE PROCEDURE '프로시저명' (IN 들어올 파라미터명과 타입, OUT 나갈 파라미터명과 타입): 프로시저명에 맞는 프로시저 생성
  • BEGIN (로직) END : 프로시저가 타면서 일어날 로직의 시작과 끝
  • DECLARE 사용할 변수명 변수타입 default (디폴트로 설정할 값): 자바에서 쓰는 변수처럼 프로시저 안에서 사용할 변수를 선언
  • SET (DECLARE에서 선언한 변수) = 대입할 값: 원하는 값으로 세팅한다.
  • IF (조건값) THEN (조건에 맞을 경우 실행될 로직) END IF : IF문 문법
  • ELSEIF : ELSE IF 문법마지막에 실행된 쿼리가 동작하면서 result값이 select되서 반환된다.

인덱스

인덱스를 효과적으로 사용하는 방법

  • Where절에 자주 사용하는 열에 사용
  • 선택도 이슈 : 데이터의 중복이 높은 열은 인덱스를 만들어도 효과X
  • 클러스터형 인덱스는 테이블 당 하나만 생성
  • 사용하지 않은 인덱스는 제거
  • 고려사항 : 쿼리 수행 빈도, 업무상 중요도, DML 부하 등

기본키와 고유키는 중복값 허용x

create table table1(
	col1 int primary key,
    col2 int,
    col3 int
);

show index from table1;

보조 인덱스

create table table2 (
	col1 int primary key,
    col2 int unique,
    col3 int unique
);

show index from table2;

table 생성

drop table if exists buy, member;
create table member(
	mem_id char(8),
    mem_name varchar(10),
    mem_number int,
    addr char(2)
);

insert into member values('TWC','트와이스',9,'서울');
insert into member values('BLK','블랙핑크',4,'경남');
insert into member values('WMN','여자친구',6,'경기');
insert into member values('OMY','오마이걸',7,'서울');
select * from member;

클러스터형 인덱스로 생성된 열

alter table member
	add constraint
    primary key(mem_id);
select * from member;

primery key 제거 후 primery key 변경

이름이 순서에 맞춰 정리

alter table member drop primary key;
alter table member
	add constraint
    primary key(mem_name);
select * from member;

추가 데이터 입력

insert into member values('GRL','소녀시대',8,'서울');
select * from member;

drop table if exists member;
create table member(
	mem_id char(8),
    mem_name varchar(10),
    mem_number int,
    addr char(2)
);

insert into member values('TWC','트와이스',9,'서울');
insert into member values('BLK','블랙핑크',4,'경남');
insert into member values('WMN','여자친구',6,'경기');
insert into member values('OMY','오마이걸',7,'서울');

보조인덱스 생성

  • 데이터의 내용과 차례는 그대로, 순서나 내용 변경x
  • 동물사전의 찾아보기가 생성된 것으로 내용 변경x
alter table member
	add constraint
    unique(mem_id);

select * from member;

alter table member
	add constraint
    unique(mem_name);

select * from member;

# values값 추가
insert into member values('GRL','소녀시대',8,'서울');
select * from member;

table 생성

drop table if exists member;
CREATE TABLE member -- 회원 테이블
( mem_id  		CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
  mem_name    	VARCHAR(10) NOT NULL, -- 이름
  mem_number    INT NOT NULL,  -- 인원수
  addr	  		CHAR(2) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
  phone1		CHAR(3), -- 연락처의 국번(02, 031, 055 등)
  phone2		CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
  height    	SMALLINT,  -- 평균 키
  debut_date	DATE  -- 데뷔 일자
);

INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');
INSERT INTO member VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, '2016.08.08');
INSERT INTO member VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, '2015.01.15');
INSERT INTO member VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, '2015.04.21');
INSERT INTO member VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, '2007.08.02');
INSERT INTO member VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, '2019.02.12');
INSERT INTO member VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, '2014.08.01');
INSERT INTO member VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, '2011.02.10');
INSERT INTO member VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, '2016.02.25');
INSERT INTO member VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, '2014.06.19');

create table cluster(
	mem_id char(8),
    mem_name varchar(10)
);
INSERT INTO cluster VALUES('TWC', '트와이스');
INSERT INTO cluster VALUES('BLK', '블랙핑크');
INSERT INTO cluster VALUES('WMN', '여자친구');
INSERT INTO cluster VALUES('OMY', '오마이걸');
INSERT INTO cluster VALUES('GRL', '소녀시대');
INSERT INTO cluster VALUES('ITZ', '잇지');
INSERT INTO cluster VALUES('RED', '레드벨벳');
INSERT INTO cluster VALUES('APN', '에이핑크');
INSERT INTO cluster VALUES('SPC', '우주소녀');
INSERT INTO cluster VALUES('MMU', '마마무');
  • mem_id를 primary key로 설정 : 클러스터형 인덱스 구성
  • 데이터 페이지가 정렬되고 균형 트리 형태의 인덱스 형성
alter table cluster
	add constraint
    primary key(mem_id);

select * from cluster;
  • 보조 인덱스 구성하기
  • 보조 인덱스를 테스트 하기 위한 테이블
create table second(
	mem_id char(8),
    mem_name varchar(10)
);

INSERT INTO second VALUES('TWC', '트와이스');
INSERT INTO second VALUES('BLK', '블랙핑크');
INSERT INTO second VALUES('WMN', '여자친구');
INSERT INTO second VALUES('OMY', '오마이걸');
INSERT INTO second VALUES('GRL', '소녀시대');
INSERT INTO second VALUES('ITZ', '잇지');
INSERT INTO second VALUES('RED', '레드벨벳');
INSERT INTO second VALUES('APN', '에이핑크');
INSERT INTO second VALUES('SPC', '우주소녀');
INSERT INTO second VALUES('MMU', '마마무');

insert into second values ('SPC','우주소녀');
insert into second values ('MMU','마마무');

alter table second
	add constraint
    unique (mem_id);
select * from second;

인덱스를 사용할 때

인덱스를 사용하지 않을 때

SQL & 파이썬 연결

0개의 댓글