비즈니스 로직
프로세스 흐름도
실제로 사용하는 상황의 흐름
데이터 정규화를 쓰는 이유
-> 데이터를 효율적으로 저장(중복을 줄이기 위해서)
-> 이상현상을 방지하기 위해 테이블 구조를 정리하는 과정
보통 1 ~ 3정규화는 지킴
1정규화 : 하나의 칸에는 한 개의 데이터만 !!!

2정규화 : 주문(주문번호,pk)과 직접적인 연관이 있는 녀석만 남기자 !!!

3정규화 : 메뉴랑 상관 없는 데이터는 분리해야지 !!!

id라는 컬럼 추가
ALTER TABLE article ADD COLUMN id INT;
ALTER TABLE article ADD COLUMN id INT FIRST; = id를 처음으로 보내는 방법
ALTER TABLE article ADD COLUMN id INT AFTER title; = 내가 원하는 컬럼 뒤에 보내는 벙법
UPDATE article
SET id = 1
WHERE id IS NULL; = 널인 녀석들을 찾아서 바꿔라
UPDATE article
SET id = 1
WHERE id IS NOT NULL; = 널이 아닌 녀석들을 찾아서 바꿔라
UPDATE article
seet id = 2
LIMIT 1; = 하나만 바꿔라(숫자를 두개도 쓸 수 있음 1, 10 = 1번 인덱스부터 10개)
SELECT *
FROM article
LIMIT 1 , 2;
페이징 처리
목록에서 한 페이제 몇 개씩 보여줄 건데 ?
몇 번 페이지까지 있을 건데 ?
SELECT NOW(); = DB서버의 시간 / 정확하지 않을 수 있음
-null 안돼, 음수 안돼, 얘는 이거여야만 해, 기본값은 이래야 돼
-고유한 식별값
-FK(Foreign Key)
외래키
누군가의 주키를 참고함
밖에서 받아왔다
pk - 컬럼이 가져야할 제약사항
ALTER TABLE article MODIFY COLUMN id INT NOT NULL PRIMARY KEY;
ALTER TABLE article ADD PRIMARY KEY(id);
위아래 둘다 똑같은 거임
pk는 한 번 명시하면 굳이 하지 않아도 됨
-AUTO_INCREMENT = 자동 증가 / pk가 지정된 곳에만 가능
계속 명시해야 됨
id라는 컬럼은 음수가 존재할 수 있나 ?
UNSIGNED = 음수 불가 / 데이터 타입에게 제약을 거는 것
ALTER TABLE article MODIFY COLUMN id INT UNSIGNED NOT NULL;
UNSIGNED 뒤에 NOT NULL이 와야됨
컬럼 이름 변경
ALTER TABLE article CHANGE
bodycontent TEXT;
= body를 content로 변경 이 때 뒤에 있는 제약사항,타입도 다 들고 와야 됨
정렬
SELECT *
FROM article
ORDER BY id DESC;
asc = 오름차순
desc = 내림차순
asc는 기본값이라 생략이 가능
desc는 역순이라 무조건 명시
SELECT *
FROM article
WHERE title LIKE '%제%';
'제'가 포함된 녀석을 찾아와
% = 이 자리에는 뭐가 있던 다 돼
SELECT *
FROM article
WHERE title NOT LIKE '%제%';
'제'라는 단어가 포함되지 않는 녀석을 찾아와
create database 'DB이름'
drop database 'DB이름'
UPDATE 테이블이름 SET
INSERT INTO 테이블이름
SELECT FROM 테이블이름
ALTER TABLE 테이블이름
DELETE FROM 테이블이름
제약사항 왜 쓸까 ?
타입에 맞지 않는 데이터의 저장을 방지하려고
데이터의 무결성을 위해서
제약사항이 디테일하게 많이 들어가있다
왜 ??
제약사항이 많다라는 건 ?
지켜야 할 것들이 많다
데이터를 저장하는 시점에서 생각했을 때 까다롭고 귀찮다.
유지보수가 용이하다
데이터가 문제될 일이 없다
유지보수
지금 현재를 보는 게 아니라 먼 미래를 봐야함
DATA TYPE
UNSIGNED
NOT NULL
UNIQUE : 중복값 안돼 / NULL가능 (NULL이 겹치는 건 안됨)
PK
AUTO_INCREMENT
CHECK
DEFAULT
COMMENT
...
EX) 회원 테이블에 키, 몸무게 컬럼이 있다고 가정
키가 100cm이상이어야 돼
100cm이하면 들어올 수 없어
이러한 과정을 CHECK가 함
쿼리가 실행되는 순서
FROM -> WHERE(조건) -> GROUP BY(요약) -> HAVIG(조건) -> SELECT -> ORDER BY(정렬)