설치
https://dev.mysql.com/downloads/windows/installer/8.0.html
설치할때 Installation화면에서 MySQl Server / MySQL Workbench / Connector j 이거
3개가 있어야 한다. 없으면 Sever에서 Execute하기!!
설치파일 실행 > Developer Default > Server, Workbench, Connector/J >
포트번호 3306확인 > Use Legacy ~~~(아래꺼) > 루트계정 아이디/비밀번호 1234 >
Bootstrap ~~는 선택하지 않고 Finish > Connect To Server에서 root/1234로 로그인 시도
Workbench 켜서 root/1234 로그인 > 성공하면 설치 끝
데이터들의 집합소(저장소)
Data Base Management System
데이터 베이스를 관리하는 시스템
오라클, MySQL, 마리아DB, ...
표 형태
로 저장되는 공간같은 대상
에 대한 데이터들이다.공통된 값
들의 주제같은 속성
의 데이터들이다. 테이블 간의 관계는 1:1
, 1:N
, N:M
(여러개랑 여러개)의 관계들이 있다.
위 그림처럼 여러명의 학생과 여러개의 수업을 테이블로 나타내면 경우의 수가 엄청 많아져서 찾을 때 매우 어려워지게 된다. 따라서, 각 테이블에는 해당 테이블에 필요한 정보를 나타내도록 하고 테이블 행을 식별할 수 있는 것만 뽑아내서 두 테이블의 관계를 표현하는 아래 그림과 같이 관계를 나타내주는 새 테이블을 만들어 1:N관계로 나눠준다.
이렇게 하면 학생들의 정보와 수업들의 정보를 담은 두 테이블과 학생_수업과의 관계를 나타내는 테이블이 만들어 지며 학생테이블과 학생-수업테이블 / 수업테이블과 학생-수업 테이블은 각각 1:N관계를 가지게 된다.
위 그림에서 이러한 관계를 표현하는 과정에서 눈에 띄는 것이 PK, FK이다. 그림에서 학생-수업 테이블은 학생테이블과 수업테이블의 관계를 1:N 관계로 나타내기위한 테이블이므로 학생테이블과 수업테이블을 참조하여 만들어야 한다. 그러기 위해서 학생정보를 식별하는 학생코드(PK), 수업정보를 식별하는 수업코드(PK)로 테이블이 구성되며 이렇게 다른 테이블의 정보를 참조하기위한 학생코드와 수업코드는 학생_수업테이블 내에서 FK(외래키)가 된다.
학생과 수업 테이블의 PK가 학생-수업 테이블에서는 FK가 되며이는 학생-수업테이블은 학생과 수업테이블을 참조하는 테이블이라는 의미를 표현하며 동시에 학생과 수업테이블은 학생-수업테이블에 의해 참조되는 테이블로 서로의 관계를 알 수 있게 된다.
각 데이터들의 고유한 값(각 데이터들의 구별점 역할)
중복이 없고, 비어있지 않음
주 식별자키로 테이블의 모든 데이터를 식별하는 컬럼
중복 불가, NULL 불가
함수적 종속 관계
기본키는 다른 항목과 절대로 중복되어 나타날 수 없는 단일 값(unique
)을 가집니다.
기본키는 절대 null(아무런 값이 없는 상태
) 값을 가질 수 없습니다.
ex) 예를 들면 주민등록번호 같은 개념이죠. 동일한 이름을 가진 사람은 많을 수 있고, 동일한 날에 동일한 이름을 가진 사람도 존재할 수 있지만, 결국 그 사람들이 만나 서로의 민증을 대조해 보면.... 결국 다른 번호로 구분 됩니다.
기본키는 하나 이상의 컬럼이 그룹화 되어 키본키로도 쓰일 수도 있습니다.
기본키를 추가할 때에는 기본키가 되는 컬럼 또는 컬럼의 그룹에 대하여 자동으로 단일의 B-트리 인덱스가 생성됩니다.
테이블은 기본키를 하나까지만 가질 수 있습니다.
기술적 측면에서 기본키는 단일 값(Unique)하고 not Null(Null 값 비허용)이면 기능적으로 동일하게 동작은 하지만,
실제적으로 기본키처럼 구분되는건 오직 하나입니다. 즉, 다 똑같은 Unique하고 not Null 이라고 기본키가 되는게 아닙니다.
관계형 DB 이론상 모든 테이블은 반드시 하나의 기본 키를 가져야 합니다.
RDBMS
Relational DataBase Management System
관계형 데이터베이스 관리 시스템테이블들끼리 서로 관계를 맺고 있는 데이터 베이스 관리 시스템
→ 상품번호가 상품테이블과 연관되어 있고 ID가 회원테이블과 연결되어 있는 관계성
외래키(외부식별자키)
테이블끼리 관계를 맺을 때 받아오는 다른 테이블의 키(보통 PK)
다른 테이블의 PK를 참조하는 키. 참조하는 PK와 동일한 domain을 갖는다.
중복 데이터 제거를 위해 테이블을 분리할 때, 반드시 필요한 개념
'한 테이블에 존재하는 다른 테이블의 정보'이기 때문에 외래키라고 부른다.
테이블 간 잘못된 매핑을 방지하는 역할
create table dish (
id varchar(5) not null,
main_image varchar(100) not null,
...
stock int not null,
point int not null,
primary key (id),
foreign key (category_id) references category (id)
);
설치
https://dev.mysql.com/downloads/windows/installer/8.0.html
설치할때 Installation화면에서 MySQl Server / MySQL Workbench / Connector j 이거
3개가 있어야 한다. 없으면 Sever에서 Execute하기!!
설치파일 실행 > Developer Default > Server, Workbench, Connector/J >
포트번호 3306확인 > Use Legacy ~~~(아래꺼) > 루트계정 아이디/비밀번호 1234 >
Bootstrap ~~는 선택하지 않고 Finish > Connect To Server에서 root/1234로 로그인 시도> Workbench 켜서 root/1234 로그인 > 성공하면 설치 끝
DDL(Data Definition Language) DML(Data Manipulation Language) DCL(Data Control Language) TCL(Transaction Control Language)
#
: 한줄 주석 // web0315라는 데이터베이스 생성
create database web0315;
// web0315라는 데이터베이스 삭제
drop database web0315;
// 데이터베이스 사용
use web0315;
Data Definition Language
create table 테이블명(
컬럼명1 자료형 [제약조건],
컬럼명2 자료형 [제약조건],
...
);
# 테이블 생성
create table Car(
brand varchar(300),
color varchar(300),
price int
);
▶ 테이블 삭제부터는 day2
숫자
int : 정수
decimal(n, m) : n(전체 자리수) / m(소수점 자리수)
ex) decimal(4,2) → -99.99 ~ 99.99
문자열
- char(n) : n바이트의 문자열(고정형), 빈 자리는 그대로 남겨둔다.
ex) char(4) → [ ] → 'A'를 넣으면? → [A ] ← 용량확보- varchar(n) : n바이트의 문자열(가변형), 빈 자리는 할당 해제
ex) varchar(4) → [ ] → 'A'를 넣으면? → [A] ← 효율적으로 사용
varchar은 최대 4000까지 가능하다.- enum(값1,값2, ..): 해당하는 값들만 들어올 수 있는 자료형 설정
ex) enum('m','w') → 'm' 또는 'w'만 들어올 수 있음
하나짜리만 사용하지 대규모에서는 사용안함
시간(날짜)
date : 한 순간의 날짜를 저장하는 타입
datetime : 한 순간에 날짜와 시간을 저장하는 타입