MySQL로 데이터베이스를 다루는 기초적인 내용에 대해 정리하는 글
목차
데이터베이스(Database)
1. 집합연산
복수의 테이블을 이용한 테이블 검색
→ 수학의 집합으로 인식하여 처리하는 것
1.1. SQL과 집합
테이블에서 집합은 테이블 구조로, 테이블의 레코드는 집합에 속해 있는 요소
1.2 Union (합집합)
ex. A = {1,2,3}
B= {2,10,11}
A와 B의 합집합 = {1,2,3,10,11}
select * from 테이블A
union
select * from 테이블B;
- SQL에서의 UNION 사용시 컬럼명은 다르더라도 컬럼의 갯수 자료형이 같으면 UNION 가능
- select 구에서 * 대신 UNION이 가능한 컬럼을 지정하면 가능
- order by 사용은 지양
- 필요하다면 as 키워드로 별명을 주고 "order by 별명"으로 처리
◆ union all : 중복값을 인정하는 합집함 함수로 이해
성능면에선 union에 비하여 유리
1.3. 교집합과 차집합
교집합은 INTERSECT, 차집합은 EXCEPT
2. 테이블 결합
- 테이블 결합(join)은 집합과는 다른 테이블 연산(합집합, 교집합, 차집합이 아닌 곱집합)
- 테이블은 데이터의 무결성을 보장하기 위하여 여러 개로 나뉘어 관리하고 필요 시 결합
2.1. 곱집합과 교차 결합
- 곱집합은 두개의 집합을 곱하는 연산
- 교차결합(cross join)은 수학의 곱집합을 SQL로 구현
2.2. Inner join
곱집합으로 연산한 결과를 where 조건으로 지정하여 결합하는 방법
- foreign key는 join을 요구하는 다른 테이블의 primary key의 요소로 구성
- primary key는 테이블 내에서 not null, unique제약 조건을 갖고 있는 컬럼(보통 index 설정이 되어 있음)
2.3. Outer Join
- 한쪽에만 있는 데이터행의 연결방법들(left join, right join)
- left join은 왼쪽 테이블을 데이터 항목을 모두 살리고 연결되는 우측 테이블의 값이 없으면 NULL값으로 처리
- right join은 left join과 방향만 다르고 방식은 동일
2.4 Join 요약
곱연산
select * from 테이블1, 테이블2 where 조건;
inner join
select * from 테이블1 inner join 테이블2 on 조건 where 조건;
outter join(left join)
select * from 테이블1 left join 테이블2 on 조건 where 조건;
outter join(right join)
select * from 테이블1 right join 테이블2 on 조건 where 조건;
3. 관계형 모델
- 관계형 모델을 기반으로 작성된 데이터베이스가 ‘관계형 데이터베이스: RDB’
- SQL은 관계형 모델에 의해 구축된 데이터베이스를 조작하는 명령의 집합
- SQL과 관계형 모델의 용어는 일치하지 않음
관계형 모델은 실제 세계의 데이터를 관계라는 개념을 사용해서 표현한 데이터 모델
기본 요소는 relation
관계가 중요! 테이블을 의
SQL에서
- attribute : 컬럼
- tuple : 행
- relation : tuple의 집합
- relation에 대한 연산 : 관계 대수
- 하나 이상의 관계를 바탕으로 연산
- 연산한 결과, 반환되는 것 또한 관계
- 연산을 중첩 구조로 실행해도 상관없음.
합집합, 차집합 교집합, 곱집합, 선택,투영, 결합 등의 모델로 나타내지게 되는것임.
마무리
여러 테이블을 다룰 때 테이블이 어떤 집합으로 되어 있고 이들이 어떻게 결합하는 지를 통해
서로간의 관계를 좀 더 면밀히 파악해야 함.
특히 inner join에 대해서 익숙해질 필요!
'데이터 > Database' 카테고리의 다른 글
[MySQL] MySQL Workbench 가볍게 알아보기 (0) | 2023.06.19 |
---|---|
[데이터베이스] MySQL을 통해 데이터베이스 설계를 위한 기초 내용 정리 (1) | 2023.04.21 |
[데이터베이스] MySQL 기초 문법 정리(데이터베이스 객체, 테이블 생성/삭제 변경) (0) | 2023.04.20 |
[데이터베이스] MySQL을 이용한 데이터의 추가, 삭제, 갱신에 대한 내용 정리 (0) | 2023.04.19 |
[데이터베이스] MySQL 기초 문법 정리 (정렬과 연산) (0) | 2023.04.19 |
댓글