1. 테이블 생성
구분 | 문법 |
신규생성 | create table 테이블명( 칼럼명 데이터 타입 [default 값] [not null] {,칼럼명 데이터 타입 [default 값] [not null] }* [primary key (칼럼리스트),] {(foreign key (칼럼리스트) references 테이블명 [(칼럼명)] [on delete 옵션] [on update 옵션]],}* [check (조건식) | unique (칼럼명)]); |
다른 테이블 정보를 활용한 테이블 생성 | create table 테이블명 as select문; |
DBMS 제품마다 차이가 있다.
2. 테이블 변경
alter를 이용하여 테이블 구조를 변경할 수 있다.
구분 | 문법 |
열 추가 | alter table 테이블명 add 칼럼명 데이터타입 [default값] |
열 데이터 타입 변경 | alter table 테이블명 modify 칼럼명 데이터타입 [default값] |
열 삭제 | alter table 테이블명 drop 칼럼명 |
3. 테이블 삭제, 절단, 이름 변경
drop table , truncate table , rename table 명령문으로 테이블 삭제, 테이블의 데이터 삭제, 테이블 이름을 변경할 수 있다.
구분 | 문법 |
테이블 삭제 | drop table 테이블명 |
테이블 내용 삭제 | truncate table 테이블명 |
테이블명 변경 | alter table 이전_테이블명 rename 새로운 테이블명 |
4. 제약 조건 적용
create 문을 통해 테이블 생성 과정에서 제약 조건을 설정할 수 있고 , alter문을 통해 이미 생성된
table의 제약 조건을 변경할 수도 있다.
제약 조건 | 설명 |
Primary Key | 테이블의 기본 키를 정의함 기본적으로 Not Null, Unique 제약 사항이 설정된다 |
Foreign Key | 테이블의 외래 키를 정의함 참조 대상을 테이블명(칼럼명) 형식으로 작성해야 함 참조 무결성이 위배되는 상황 발생시 다음 옵션으로 처리가능 (cascade , no action , set null , set default) |
Unique | 테이블에서 해당하는 열값은 유일해야 함을 의미함 테이블에서 모든 값이 다르게 적재되어야 하는 열에 설정함 |
Not Null | 테이블에서 해당하는 열의 값은 Null 불가능 필수적으로 입력해야 하는 항목에 설정함 |
Check | 사용자가 직접 정의하는 제약 조건 발생 가능한 상황에 따라 여러 가지 조건을 설정 가능 |
5. 다중 테이블 조회(DML문)
관계형 데이터베이스는 데이터의 중복을 최소화하기 위해 데이터를 분해하여 저장하고 통합하여 사용한다.
데이터를 분해하는 방법에는 정규화 기법이 있고 , 데이터를 통합하는 방법에는 다중 테이블 검색 기법이 있다.
다중 테이블 검색 기법 | 내용 |
조인 | 두 개의 테이블을 결합하여 데이터를 추출하는 기법 |
서브쿼리 | SQL문 안에 포함된 SQL문 형태의 사용 기법 |
집합 연산자 | 테이블을 집합 개념으로 조작하는 기법 |
6. 조인(JOIN)
1. 조인 개념
조인은 말 그대로 결합을 의미하며 , 관계형 데이터베이스에서의 조인은 교집합 결과로 데이터 결합 방법을 의미한다.
교집합이 되는 공통점은 다양한 관점에서 정의될 수 있으며 , 그 관점을 정의하는 것이 조인의 조건이 된다.
조인은 두 테이블의 공통값을 이용하여 칼럼을 조합하는 수단이다.
보통 PK나 FK값을 결합하여 사용하는 것이 일반적이다.
3개 이상의 테이블에 대한 조인은 두 개의 테이블을 우선 조인하고 그 결과와 나머지 한 개의 테이블을 다시 조인한다.
2. 조인 유형
조인은 관계형 데이터베이스의 가장 큰 핵심 기능이자 큰 장점이다.
조인은 크게 물리적 조인과 논리적 조인으로 구분할 수 있다.
조인 분류 | 내용 |
논리적 조인 | 사용자가 작성한 SQL문에 의해서 표현한 테이블 결합 방식 |
물리적 조인 | 데이터베이스 관리시스템(DBMS)의 옵티마이저 엔진에 의해 발생하는 테이블 결합 방식 - Nested Loop Join - Merge Join - Hash Join |
조인 유형 | 내용 |
내부 조인 ( inner Join ) | 두 테이블에 공통으로 있는 칼럼(열)을 활용하는 유형 (공통 칼럼 기반) |
동등 조인 ( Equi Join ) | 공통으로 있는 칼럼값이 같은 경우에 레코드 추출 |
자연 조인 ( Natural Join ) | 두 테이블에 있는 동일한 칼럼명을 기준으로 모든 칼럼값이 같은 경우에 레코드 추출 |
교차 조인 ( Cross Join ) | 조인 조건이 없는 모든 데이터의 조합을 추출 |
외부 조인 ( Outer Join ) | 특정한 테이블의 모든 데이터를 기준으로 다른 테이블의 정보와 비교하여 추출 ( 단 , 다른 테이블에 동일한 값이 없어도 특정한 테이블은 출력됨 ) |
왼쪽 외부 조인 ( Left Outer Join ) | 왼쪽 테이블의 모든 데이터와 오른쪽 테이블의 동일한 데이터를 추출( 단 , 오른쪽 테이블에 동일한 값이 없어도 왼쪽 테이블의 레코드는 출력됨 ) |
오른쪽 외부 조인 ( Right Outer Join ) | 오른쪽 테이블의 모든 데이터와 왼쪽 테이블의 동일 데이터를 추출 ( 단 , 왼쪽 테이블에 동일한 값이 없어도 오른쪽 테이블의 레코드는 추출됨 ) |
완전 외부 조인 ( Full Outer Join ) | 양쪽의 모든 데이터를 추출 ( 단 , 오른쪽과 왼쪽 테이블에 동일 한 값이 없어도 오른쪽 , 왼쪽 테이블의 레코드는 출력됨 ) |
내부 조인에서 내부의 의미는 외부 조인에 대비하기 위해 사용되었으므로 , 수식어가 없는 조인은 내부 조인을 의미한다.
내부 조인의 세부 유형은
- 명시적으로 지정하지 않고 , 두 테이블의 컬럼명이 같은 값을 기준으로 하면 자연 조인이다.
- 특정 컬럼을 지정하면서 같은 값을 비교하면 동등 조인이다.
- 값이 다른 것을 비교하면 비동등조인이 된다.
외부 조인은 기준 테이블이 참조 테이블과 조인하되 , 참조 테이블에 조인할 데이터가 있는 경우에는
참조 테이블의 데이터를 함께 출력하고 , 참조 테이블의 조인 데이터가 없는 경우에도 기준 테이블의
모든 데이터를 표시하고 싶은 경우에 사용한다.
보통 기준 테이블의 모든 값에 대해 참조 테이블의 데이터가 반드시 존재한다는 보장이 없는 경우
외부 조인을 사용한다.
'개인 공부' 카테고리의 다른 글
MySQL 데이터 제어 ( DCL 문 ) (0) | 2023.04.03 |
---|---|
MySQL 서브쿼리 , 집합 연산자에 대해 (0) | 2023.04.03 |
MySQL 기본 SQL 작성하기 - 테이블의 데이터 사전 조회 (0) | 2023.04.03 |