no image
sql JOIN(Inner, Outer, Cross, Self)
Inner Join 교차 부분만 추출한다. ( NULL이 없다. ) Outer Join Left Outer Join - 왼쪽 테이블 기준으로 추출한다. JOIN 조건과 무관하게 왼쪽 데이터가 모두 보이는 결과이다. - JOIN 조건(on)에 맞지 않은 부분은 NULL 로 구성된다. Right Outer Join - 오른쪽 테이블 기준으로 추출한다. JOIN 조건과 무관하게 오른쪽 데이터가 모두 보이는 결과이다. - JOIN 조건(on)에 맞지 않은 부분은 NULL 로 구성된다. Full Outer Join - 양쪽의 모든 데이터를 추출한다. JOIN 조건과 무관하게 양쪽 데이터가 모두 보이는 결과이다. - 데이터 조합을 추출하는건 아니다. ( JOIN 조건이 있다. ) - JOIN 조건(on)에 맞지 않..
2023.09.06
SQL
데이터베이스 정규화
정규화 이상 현상(삽입, 삭제, 갱신) 을 제거하기 위해 테이블을 분해하는 과정이다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다. 테이블을 분해하므로 JOIN이 늘어나고 성능이 느려질 수도 있다. 그래서 반정규화도 존재한다. 제1 정규화 - 속성의 원자성을 확보하고 원자값이 아닌 도메인을 분해해라. 제2 정규화 - 완전 함수 종속을 만족해라 = 부분 함수 종속을 제거해라 - 완전 함수 종속 : 기본키가 2개 이상으로 이루어진 경우, 기본키의 부분집합이 결정자가 되어선 안된다 제3 정규화 - 이행 함수 종속을 제거해라 ex) A->B (B는 A를 의존한다.) A(PK) B C 컬럼을 가진 테이블에서 A->B, B->C,..
2023.08.05
SQL
SQL) sql, 서브쿼리 (23-06-02)
velog에서 이전한 글 입니다. from, order by, group by 쉼표로 조합한다. select * from A, B select course_id, week, count(c.likes) from checkins c group by course_id, week join 연속 a inner join b on ~~ inner join c on ~~ a+b join한 table에 c를 join한다. 없는 것 들을 포함해서 통계를 내고 싶을 때 left join이 필요하다. count는 null을 세지 않는다. union에서는 개인 order by가 적용되지 않는다. 전체에 order by를 할 수 있다. 서브쿼리 select절 서브쿼리, join절 서브쿼리, from절 서브쿼리 select *, ..
2023.07.13
SQL