Database/MySql

INDEXIndex는 테이블에서 특정 찾기 작업을 빠르게 수행하기 위해서 MySQL이 별도로 만드는 데이터 구조를 말함컬럼별로 만들어짐PK나 FK로 지정된 컬럼은 기본적으로 Index를 갖게됌특정 컬럼을 바탕으로 자주 검색시 Index 생성은 큰 도움이 될 수 있음SELECT / DELETE / JOIN 빠르게 하고 INSERT / UPDATE는 느리게 함테이블에 너무 많은 INDEX를 추가하면 인덱스의 로딩으로 인한 오버헤드로 인해 시스템이 전체적으로 느려질 수 있음CREATE TABLE ryu_index ( id int NOT NULL auto_increment, user_id int not NULL, created timestamp not NULL default CURRENT_TIMESTAMP, c..
Stored ProcedureStored ProcedureDROP PROCEDURE IF EXISTS return_ryu;DELIMITER //CREATE PROCEDURE return_ryuBEGIN SELECT * FROM ryu;END //DELIMITER ;-- 띄어쓰기 중요하고 //는 $$도 상관없음 IN 파라미터 (입력 전용)DELIMITER //CREATE PROCEDURE return_ryu(IN channelName varchar(64))BEGIN SELECT * FROM ryu WHERE channel = channelName;END //DELIMITER ;CALL return_ryu('Facebook');-- 데이터를 직접 집어넣어서 프로시저를 돌릴 수 있음 INOUT 파라..
아래의 select를 자주 쓴다면SELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;아래처럼 등록 가능CREATE OR REPLACE VIEW test.session_details ASSELECT s.id, s.user_idFROM session sJOIN channel c ON c.id = s.channel_id;SELECT * FROM test.session_details;  View에 값 대입view에 값을 대입했는데 대입이 된다면 원래 테이블에 null 조건이 안걸려서 대입 된거원본 테이블을 확인하면 id만 들어가 있고 나머지 것들은 null이 들어감즉, 접근을 못하게 하거나 not null 형식 등등 제약을 해주어야 함
INNER JOIN양쪽 테이블에서 매치가 되는 레코드들만 리턴함양쪽 테이블의 필드가 모두 채워진 상태로 리턴됨대부분의 조인은 INNER JOIN LEFT JOIN왼쪽 테이블의 모든 레코들을 리턴함오른쪽 테이블의 필드는 왼쪽 레코드와 매칭되는 경우에만 채워진 상태로 리턴됨 FULL JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들을 리턴함매칭되는 경우에만 양쪽 테이블들의 모든 필드들이 채워진 상태로 리턴됨LEFT JOIN(UNION VS UNION ALL) => 중복제거 / 중복 포함RIGHT JOIN CROSS JOIN왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 리턴함 SELF JOIN동일한 테이블을 alias를 달리해서 자기 자신과 조인함 -- InnerJoinSELECT * FROM vit..
String FunctionsLEFT(str, N)REPLACE(str, exp1, exp2)UPPER(str)LOWER(str)LENGTH(str)LPAD, RPAD // STRING의 길이가 짧을 경우 부족한 공간을 채워줌SUBSTRINGCONCAT  Type Castingcast(category as float)convert(expression, float)  GROUP BY와 함께 쓰이는 Aggregate 함수GROUP BY & Aggregate 함수[Aggregate 함수] COUNT, SUM, AVG, MIN, MAX, GROUP_CONCAT...SELECT LEFT(created, 7) AS mon, COUNT(1) AS session_countFROM prod.sessionGROUP ..
기초 문법SELECT 테이블들에서 레코드들을 읽어오는데 사용SELECT 필드이름1, 필드이름2FROM 테이블 이름WHERE 선택조건GROUP BY 필드일므1, 필드이름2 ORDER BY 피들이름 [ASC|DESC]LIMIT N  CASE WHENCASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 값3END 필드 이름  COUNT의 이해Null 1 1 0 0 4 3 value가 이와 같을 때COUNT(1) -> 7COUNT(0) -> 7COUNT(NULL) -> 0COUNT(value) -> 6COUNT(DISTINCT value) -> 4 DELETE FROM vs TRUNCATEDELETE FROM vs TRUNCATETRUNCATE 는 조건없이 모든 레코드 삭제, 속도가..
류가든
'Database/MySql' 카테고리의 글 목록