mysql 8

Chapter 09.04 쿼리 힌트

MySQL 서버는 인간이 원하는 서비스를 100%이해하지는 못한다. 따라서 서비스 개발자 또는 DBA보다 MySQL서버가 부족한 실행 계획을 수립할 때가 있다. RDBMS에서는 이러한 목적으로 힌트라는 기능이 제공된다. MySQL서버에서 가능한 쿼리 힌트는? 인덱스 힌트: 예전 버전에서 사용되던 힌트들 ex) USE INDEX, STRAIGHT_JOIN 옵티마이저 힌트 ex) MySQL 5.6 부터 새롭게 추가되기 시작한 힌트들을 뜻한다. STRAIGHT_JOIN 도 포함한다. 9.4.1 인덱스 힌트 USE INDEX, STRAIGHT_JOIN 등을 포함한 인덱스 힌트들은 모두 MySQL 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다. 이들은 모두 SQL 문법에 맞게 사용해야되므로 사용하게 ..

Chapter 04.01 MySQL 엔진 아키텍처(architecture)

MySQL (서버)에 대한 구분 사람의 머리 역할을 하는 MySQL 엔진 커넥션 핸들러, SQL 인터페이스, SQL 파서, SQL 옵티마이저, 캐시 & 버퍼 손발 역할 담당하는 스토리지 엔진: 핸들러 API를 만족하면 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용 가능하다. InnoDB, MyISAM, Memory MySQL (서버)은 크게 MySQL엔진 + 스토리지 엔진으로 구성된다. 4.1 MySQL 엔진 아키텍처 MySQL(서버)는 다른 DBMS에 비해 독특한 구조로 이뤄져서 큰 혜택이 있는 동시에 다른 DBMS에서는 생기지 않는 문제가 발생하기도 한다. 4.1.1 MySQL의 전체 구조 프로그래밍 언어로부터 MySQL에 접근하는 방법 C API, JDBC, .NET 의 표준 드라이버 제..

Chapter 10 DDL : 무결성 유지 메카니즘, 뷰와 데이터 사전

- 하나의 테이블에서 FK는 여러 개 가질 수 있다. - FK제약 조건 유지를 위한 DBMS의 동작 1) 자식테이블에 대한 INSERT / UPDATE문에서 부모의 PK에 존재하지 않는 값이 시도될때 DBMS가 거부 2) 부모테이블에 대한 DELETE/ UPDATE문에서 부모 테이블의 PK값을 삭제/수정할 때, -> NO ACTION, RESTRICT: DBMS가 실행을 거부 -> SET NULL, SET DEFAULT: 자식테이블에서 해당 PK값 갖는 모든 FK를 NULL 또는 DEFAULT로 수정 -> CASCADE: 자식테이블에서 FK에 해당 PK값을 갖는 모든 투플을 연속적 삭제/ 수정 - 참조무결성 옵션 1) NO ACTION(표준SQL) / RESTRICT(MySQL) 2) SET NULL /..

Chapter 08 DML : 조인 연산을 사용한 검색문 (다중 테이블 검색문)

- WHERE절 조인: INNER JOIN만 제공 - FROM절 조인 1) (INNER) JOIN -> ON절/ USING절 2) NATURAL JOIN 3) LEFT/RIGHT/FULL (OUTER) JOIN -> ON절/ USING절 4) CROSS JOIN - CTAS로 저장 -> ON절 조인을 CTAS로 저장하려면 에러가 난다. (office code가 두 개) -> USING절 조인은 정상 실행된다. (office code가 한 개) - OUTER조인: 조인 조건을 만족하지 않는 투플도 결과에 포함된다. -> FULL [OUTER] JOIN: LEFT 및 RIGHT JOIN 결과의 합집합(UNION) -> MySQL은 FULL [OUTER] JOIN을 지원하지 않는다. - CROSS JOIN: ..

Chapter 07 DML : 집합과 조인 연산을 사용한 검색문 (다중 테이블 검색문)

- 조인 -> WHERE절 조인: SELECT문의 WHERE절에서 INNER JOIN 기능 제공 -> FROM절 조인: SELECT문의 FROM절에서 다양한 조인 기능 제공 Ex) INNER JOIN, NATURAL JOIN, OUTER JOIN, CROSS JOIN -> 카티션 프로덕트: CROSS JOIN - JOIN 일반 형식 SELECT 컬럼명 FROM 테이블 WHERE 조건식 GROUP BY 컬럼명 { UNION [DISTINCT | ALL] } | INTERSECT | EXCEPT SELECT FROM WHERE GROUP BY ORDER BY { 컬럼명 | 컬럼별칭 | 컬럼위치 [ ASC | DESC],}+ ; -> SELECT에서는 ALL 이 디폴트, UNION에서는 DISTINCT가 디폴..

Chapter 06 DML : 내장 함수와 갱신문

1. 단일행 내장함수(Single-Row Built-In Functions) 1-1. SQL 내장 함수 - 단일행 내장 함수(SINGLE-ROW BUILT-IN FUNCTIONS): 함수의 입력이 단일 행 -> 각 행에 대해 개별적으로 적용, 단 하나의 결과를 리턴 (SELECT, ORDER BY, WHERE절에 사용) -> 함수의 인자(argument)로 컬럼명, 표현식, 상수가 가능 -> 함수의 인자로 함수를 사용하는 함수의 중첩(nesting)이 가능하다. Ex) 문자형 - ASCII(char), CHAR(integer): 아스키 코드 값, 아스키 문자를 리턴 - INSTR(str, substr): str에서 첫번째 나타나는 substr의 시작위치를 리턴 - SUBSTR(str, position[,..

Chapter 05 DML : 단일 테이블 검색문 (Part 2)

3. 검색문의 GROUP BY 절과 HAVING절 - SELECT문의 GROUP BY절과 HAVING절 -> HAVING을 이용하면 원하는 특정 그룹만 선택 가능하다. -> 집단 함수를 함께 사용해서 그룹별 통계치를 생성한다. (1) 집단함수(Aggregate Functions) - 집단함수명 ( [ALL 또는 DISTINCT] 컬럼명 또는 표현식 ) ex) COUNT, SUM, AVG, MIN, MAX, STDDEV, VARIAN - 집단 함수는 WHERE절에 사용할 수 없다. (HAVING 절에는 가능) (2) GROUP BY절 - 표준SQL에서는 WHERE, GROUP BY절에서 alias 사용 불가능 - MySQL에서는 GROUP BY절 사용 가능 - 집단 함수의 중첩은 허용하지 않는다. - GR..

[2주차] 강의노트 DDL & DML

2022-03-05 프로그래머스 2주차 강의 0. 지난 과제 리뷰 - 표준 SQL 기능은 여러 프로그램에서 사용할 수 있다. - 내가 쓰는 기능이 표준인지 파악한다. - 고정길이 문자열(항상 n개 문자를 저장) / 가변길이 문자열의 차이() -> CHAR(n): 최대 255문자 / VARCHAR(n): 최대 65,535문자 -> 고정길이는 데이터를 읽어내는 게 빠르다. 단점: 디스크의 낭비? -> 가변길이는 디스크의 낭비가 적다. 단점: - NOT NULL -> 컬럼제약방식이 가장 적합 -> 그 외 -> ???방식 - Constraint는 수정이 안 된다. - 컬럼별칭은 표준 SQL에서는 '출력 용도'로만 사용한다.(SELECT, ORDER BY 절에 사용가능) -> MySQL에서는 GROUP BY절에서..