멋쟁이 사자처럼 13기 강의를 진행하며 만든 자료를 블로그에 공유합니다.
관찰의 결과로 나타난 정량적인 실제 값
데이터에 의미를 부여한 것
조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
예시)
에베레스트산의 높이 → 데이터
에베레스트산의 지리적 특성 → 정보
데이터를 저장하고 관리하는 소프트웨어
(ex. MySQL, Oracle, MariaDB)
→ 엑셀처럼 보일 수 있지만 훨씬 더 체계적
실제 데이터가 저장되는 하드디스크의 구조
→ 여러 개의 테이블로 구성, DBMS가 관리
🧊 비유:
DB는 냉장고 안 음식
DBMS는 냉장고 문 여닫는 사람
데이터를 어떻게 구조화하고 표현할지를 정해주는 설계도

⇒ 부모 자식 관계처럼 위계 구조로 표현

⇒ 하나의 데이터가 여러 부모와 연결될 수 있는 그래프 구조

⇒ 데이터를 객체 단위로 저장

⇒ 데이터를 테이블(행과 열) 형태로 저장하고 테이블 간에 공통 키로 연결하여 관리
⇒ 가장 널리 쓰이는 모델
행과 열로 구성된 테이블, 실제 데이터를 담고 있는 테이블
🔹 스키마 + 인스턴스로 구성
- 릴레이션의 특징
- 속성은 단일 값을 가짐
- 속성을 서로 다른 이름을 가짐
- 한 속성의 값은 모두 같은 도메인 값을 가짐 (도메인 : 속성이 가질 수 있는 값의 집합)
- 속성의 순서는 상관없음
- 릴레이션 내의 중복된 투플은 허용하지 않음
- 투플의 순서는 상관없음
스키마: 쿠키 틀
인스턴스: 쿠키 완성품
속성: 쿠키의 맛, 모양, 재료
튜플: 개별 쿠키 하나
테이블에서 각 행(투플)을 유일하게 식별하거나
테이블 간 관계를 만들기 위해 사용하는 속성(열)을 의미함
id + 이름이 유일하더라도 id만으로도 유일하다면 후보키 아님💡 테이블 정의 시, 기본키는 밑줄로 표현하기도 함
예시)
student (이름, 학번, 학과, 성별, 나이, 핸드폰)


주문 테이블의 기본키 : 주문번호
주문 테이블의 외래키 :



하나의 테이블 내에서 관계를 표현
ex) 특정 서비스의 회원가입 시 추천인 id를 입력하는 기능
자기 자신을 외래키로 참조해야 함 (ex. member.recommender_id → member.id)

관계형 데이터베이스에서 데이터를 조회, 삽입, 수정, 삭제할 때 사용하는 기본 SQL 문법
SELECT 컬럼명 FROM 테이블명;
SELECT 컬럼명 FROM 테이블명 WHERE 조건;
SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 ASC;
SELECT 컬럼명 FROM 테이블명 WHERE 조건 ORDER BY 컬럼명 DESC;
INSERT INTO 테이블명 (칼럼명1, 칼럼명2, 칼럼명3) VALUES (값1, 값2, 값3)
INSERT INTO 테이블명 VALUES (값1, 값2, 값3)
UPDATE 테이블명 SET 칼럼명 = 변경할 값 //데이터의 모든 값을 변경
UPDATE 테이블명 SET 칼럼명 = 변경할 값 WHERE 조건 //조건에 해당하는 데이터만 변경
DELETE FROM 테이블명 //데이터의 모든 값을 삭제
DELETE FROM 테이블명 WHERE 조건 //조건에 해당하는 데이터만 삭제
더 공부해보기!!
https://code-angie.tistory.com/158
https://velog.io/@cyseok123/MySQL-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%8B%A4%ED%96%89-for-Mac
모두 설치 완료해 오셨죵~?









USE LikeLion; -- 사용할 데이터베이스 선택
CREATE TABLE teams (
id INTEGER PRIMARY KEY, -- 팀(파트) 고유 ID, 기본키, 정수값
name VARCHAR(50) NOT NULL -- 팀(파트) 이름 (Backend, Frontend, AI), 글자로 최대 50자, null값 안됨
);
CREATE TABLE users (
id INTEGER AUTO_INCREMENT PRIMARY KEY, -- 사용자 고유 ID, 자동으로 1씩 증가, 기본키
name VARCHAR(50) NOT NULL, -- 사용자 이름, 글자로 최대 50자, null값 안됨
part_id INTEGER, -- 소속된 파트 ID teams 테이블의 id 참조, 정수값
FOREIGN KEY (part_id) REFERENCES teams(id) -- 외래키 : part_id는 teams 테이블의 id와 연결
);
→ 외래키를 통해 users.part_id는 반드시 teams.id에 존재하는 값만 가질 수 있다
→ teams 테이블의 id가 부모 키, users.part_id가 자식 키
→ 이를 통해 part_id에 존재하지 않는 팀 id를 입력하면 오류

USE LikeLion;
INSERT INTO teams (id, name) VALUES
(1, 'Backend'),
(2, 'Frontend'),
(3, 'AI');
USE LikeLion;
INSERT INTO users (name, part_id) VALUES
('다운', 1),
('준영', 1),
('하윤', 2),
('현승', 2),
('현민', 3),
('규빈', 3);
SELECT * FROM teams; -- teams 테이블 조회

SELECT * FROM users; -- users 테이블 조회

USE LikeLion;
UPDATE users
SET part_id = 3
WHERE id = (위 테이블을 보고 이름 다운의 id값을 넣어주세용..);
SELECT * FROM users;

SELECT * FROM users WHERE id = (위 테이블을 보고 이름 다운의 id값을 넣어주세용..);

DELETE FROM users
WHERE id = (위 테이블을 보고 이름 다운의 id값을 넣어주세용..);
SELECT * FROM users; -- 조회

두 개 이상의 테이블을 공통된 컬럼을 기준으로 연결하여 데이터를 조회할 때 사용









INSERT INTO users (name, part_id)
VALUES ('멋사', NULL);

SELECT
users.name AS 사용자명, -- AS로 열 이름을 사용자명으로 바꿔서 표시
teams.name AS 소속팀
FROM -- 기준이 되는 메인 테이블 지정
users
JOIN -- teams테이블과 연결
teams
ON
-- 어떤 열을 기준으로 연결할지 설정, users의 part_id와 teams의 id가 일치할 때만 데이터를 합침
users.part_id = teams.id;

⇒ 사용자 이름과 소속 팀 이름을 각각 다른 테이블에서 가져와서 한 화면에 보여주는 join 예제
⇒ JOIN을 통해 관계형 데이터베이스의 연결된 구조를 직접 조회할 수 있다
⇒ JOIN 전에는 팀이 없는 ‘멋사’ 가 테이블에 표시, JOIN 후에는 조건에 맞는 데이터가 없기 때문에 ‘멋사’가 테이블에 표시되지 않음
ERD는 Entity(개체), Relationship(관계), Attribute(속성) 간의
구조를 그림으로 시각화한 데이터베이스 설계 도구
💡 정리
ERD는 개체(Entity)가 어떤 속성(Attribute)을 가지고,
다른 개체와 어떤 관계(Relationship)를 맺는지
시각적으로 표현해주는 설계 도구









→ 시간상의 이유로 회원정보의 id, 게시글의 id만 필수적으로 생성해보기!

따라서 왼쪽 사이드 메뉴에서 알맞는 아이콘 클릭 후 회원정보 테이블, 게시글 테이블을 순서대로 클릭



