목록[Web]/[DB & Mybatis] (28)
요르딩딩
[인덱스] 인덱스 특징 인덱스는 where절에서 효과가 있다. 인덱스가 걸려있는 컬럼을 where에 조건으로 넣을 경우에 효과를 볼 수 있다. 인덱스 설정 기준 카디널리티가 높을수록 좋다 : 고유한 값 위주로 (중복이 적을 수록) 선택도가 낮으면 좋다 : 하나의 값으로 적은 row가 조회된다. (일반적으로 5~10%가 적당) 조회 활용도가 높을 수록 좋다 : 조회에 자주 사용되는 컬럼 수정빈도가 낮을수록 좋다 : 인덱스 테이블도 갱신되기 때문에 낮을수록 좋다. (인덱스도 DB 메모리를 사용하여 테이블 형태로 저장되므로 개수와 공간은 비례합니다.) DML에 미치는 영향도 update, delete는 where절에 인덱스로 조건을 붙여주면, 크게 성능저하가 일어나지 않다, 조회시 빠른것이지 update, d..
중복정보 제거 1. 테이블 간의 정보는 중복되지 않아야 함. - 동일한 정보가 여러 군데 테이블에 저장되어 있으면 수정에 대한 부담과 무결성 유지가 쉽지않다. - 하나의 정보는 한 군데만 나오도록 한다. 2. 이를 위해 정규화를 통해 중복성 제거 - 제1정규형, 제2정규형, ... 3. 중복성 제거 후 필요한 정보는 외래키를 통한 조인을 통해 필요한 정보를 구한다. 정규형 중복을 제거하기 위한 테이블 정의 규칙 제1 정규형 : 나눌 수 있을 만큼 쪼개라. 제2 정규형 : 테이블의 컬럼들이 기본키와 직접 연관되는 컬럼만으로 구성하라. 제3 정규형 : 컬럼들 간의 종속관계가 있으면 안됨. 참조무결성 1. 외래키에 적용되는 규칙 2. 외래키와 참조되는 원래 테이블의 키와 관계를 명시 3. 외래키를 참조하면 원..
스키마 정의 DDL 1. 데이터베이스와 테이블을 CRUD 2. 테이블에 대한 정보는 메타데이터로 데이터사저에 저장.관리된다. 데이터베이스 생성 create database 데이터베이스명; 테이블 생성 create table 테이블명(컬럼명1 데이터타입(크기), 컬럼명2 ...); 자료형 정수형 (부호있음/ 부호없음) 1. TINYINT (-128 ~ 127 / 255) 2. INT (-21억 ~ 21억 / 43억) 3. BIGINT (-9경 ~ 9경 / 18경) 실수형 (길이, 소수점 이하 자리 수) 1. FLOAT(size, d) 2. DOUBLE (size, d) 3. DECIMAL (size, d) 문자열 1. CHAR 고정길이 문자열 (최대 255자) 2. VARCHAR 가변길이 문자열 (최대 6..
서브쿼리 1. 쿼리문 내에 또 다른 쿼리문이 있는 형태 2. 서브쿼리는 메인쿼리에 포함되는 관계 - ()를 사용해 감싸는 형태 - ORDER BY를 사용하지 못한다. 3. 사용가능한 위치 - select/ from/ where/ having/ order by - values(insert)/ set(update) 4. 종류 - 단일행 서브쿼리 - 다중행 서브쿼리 - 다중컬럼 서브쿼리 단일행 서브쿼리 1. 결과가 레코드 하나인 서브쿼리 2. 일반 연산자 (=, >, ALL (select Population) ANY 1. 여러 개의 레코드의 OR효과(가장 작은 값보다 큰) 2. Population > ANY(select Population) IN/ EXISTS 1. 결과값 중에 있는 것 중에서의 의미 2. I..
LIKE 검색 1. 정확한 키워드를 모를 경우 일부만으로 검색하는 방법 2. 와일드카드(%, _)를 사용하여 패턴 매칭 와일드카드 : % (0-N글자), _ (1글자) 3. LIKE의 검색은 매칭하기 위해 DBMS에 부담이 많으므로 LIKE에 OR와 같은 논리조건자를 중복해서 사용하지 않는 게 좋음 (바람직하지 않은 예) select * from 테이블명 where like 컬럼명1 like ... or 컬럼명2 like ...; NULL 값 1. NULL이란 해당 컬럼의 값이 없다는 의미 (해당 컬럼이 NULL값을 허용하는 경우) 2. NULL값을 가지고 있는 컬럼을 검색하려면 is NULL 3. NULL이 아닌 값을 가지고 있는 컬럼을 검색하려면 is not NULL NULL 함수 1. 숫자컬럼을 연..
SELECT INTO 1. 쿼리결과를 새 테이블로 만든다. 2. MySQL에서는 CREATE TABLE 테이블명 SELECT * FROM 테이블명 3. 기존에 존재하지 않는 테이블이 새로 생성된다. (일종의 뷰와 동일한 효과) > 뷰는 임시테이블이라는 점과 차이 INSERT INTO SELECT 1. 쿼리결과를 기존의 테이블에 추가한다. (기존 테이블이 존재해야 함) 2. INSERT INTO 테이블명1 SELECT * FROM 테이블명2 WHERE 조건절... 3. SELECT하는 테이블과 INSERT하는 테이블은 동일한 구조를 가져야 함. 4. 두 개의 별도 쿼리를 하나로 합침 CASE...WHEN...END 1. SQL의 조건문(if/ switch문)에 해당 2. 조건값에 따른 처리를 구분할 수 있..
JOIN의 개념, 종류 JOIN의 개념 1. 서로 다른 테이블을 공통 컬럼을 기준으로 합치는 테이블단위연산 2. 조인의 결과 테이블은 이전 테이블의 컬럼 수의 합과 같다. 3. select * from 테이블1 join 테이블2 on 테이블1.컬럼명 = 테이블2.컬럼명 4. 조인시 서로 다른 테이블에 같은 컬럼명이 존재하면 구분을 위해 테이블명.컬럼명으로 사용해서 표시 5. 조인시 NULL 값을 허용하는 내부조인(불가)과 외부조인(허용)으로 구분 6. (내부조인)INNER JOIN, (외부조인)LEFT JOIN/ RIGHT JOIN/ FULL JOIN INNER JOIN : 조인 시 NULL값을 허용하지 않음 (NULL값을 가진 레코드는 조인결과에 빠짐) LEFT JOIN : 조인 시 JOIN의 왼쪽 테..
쿼리결과 중복제거 (DISTINCT) DISTINCT 1. 중복된 값들이 나오는 경우에 이를 제거해서 표시하는 기능 2. select distinct 컬럼명1, 컬럼명2, ... from 테이블명 where 조건절 논리연산자 (AND, OR, NOT) 1. select문의 조건절에 논리조건 적용해서 적용할 수 있는 연산자 2. select * from 테이블명 where (not) 조건1 and/or (not) 조건2... 논리연산자 (IN, BETWEEN) 영어(IN, BETWEEN)로 표현하는 것도 가능 결과정렬 (ORDER BY) 1. select문의 결과값을 특정한 컬럼을 기준으로 오름차순/내림차순으로 정렬해서 표시 2. select * from 테이블명 where 조건절 order by 컬럼명 ..