CS/데이터베이스 3

[데이터베이스] DB indexing

DB index정의: 데이터를 빠르게 검색할 수 있도록 도와주는 데이터 구조Why?: 데이터를 빠르게 검색하고 조회 성능을 개선하기 위해 사용책의 목차처럼 특정 데이터의 위치를 미리 알고 빠르게 찾을 수 있게 한다. 언제 사용?사용해야 할 때:자주 검색하거나 정렬해야 하는 컬럼이 있을 때WHERE, JOIN, ORDER BY, GROUP BY 절에 자주 사용되는 컬럼데이터 양이 많아질수록 검색 성능이 중요한 경우 사용하지 말아야 할 때:자주 업데이트, 삽입, 삭제가 발생하는 컬럼 (인덱스 유지 비용이 높음)작은 테이블 (인덱스 효과가 크지 않음)   인덱스 종류dense vs sparsedense : 데이터 파일의 모든 값에 대한 인덱스 항목이 존재하는 것을 의미sparse : 데이터 파일의 일부 값에 ..

[데이터베이스] SQL Injection

정의: 해커에 의해 조작된 SQL 쿼리문이 데이터베이스에 그대로 전달되어 비정상적 명령을 실행시키는 공격 기법 공격 방법Basic SQL Injection정의: 쿼리 문자열에 악성 SQL 코드 삽입예시: 항상 참이 되는 조건을 삽입해 인증을 우회하는 경우 (' OR '1'='1 )SELECT * FROM users WHERE username = 'input' AND password = 'input';SELECT * FROM users WHERE username = 'jang' OR '1'='1'; -- AND password = 'input'; Union-Based SQL Injection정의: UNION SQL 연산자를 사용하여 추가 데이터를 반환받음단, 자료형이 동일해야함예시: 상품 정보를 가져오는 ..

[데이터베이스] SQL Join

종류두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법(INNER) JOINLEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOINCROSS JOINSELF JOIN 1. INNER JOIN정의: 두 테이블의 공통된 정보만 가져오는 방식 결과: 2. LEFT OUTER JOIN정의: 왼쪽 테이블의 모든 정보를 가져오고, 만약 오른쪽 테이블에 해당 정보가 없으면 빈 값(NULL)을 삽입 결과:  3. RIGHT OUTER JOIN정의: 오른쪽 테이블의 모든 정보를 가져오고, 만약 왼쪽 테이블에 해당 정보가 없으면 빈 값(NULL)을 삽입 결과: 4. FULL OUTER JOIN정의: 두 테이블의 모든 정보를 가져오는데, 어느 한 쪽에 정보가 없으면 빈 값으로 ..