DB 특강

Han Lee·2022년 11월 30일
0

데이터 베이스

목록 보기
1/1

DB란?

  • 데이터 모은 저장소
  • 구체적 정의를 내릴 필요도 없게 이미 우리 삶에서 깊은 연관이 있다.

DBMS

  • 여러사람이 안정성있게 사용이 가능하게 만든 메니지먼트 시스템 = DB와 구분지을 필요없음

DB분류

  • 계층형
  • 망형
  • 관계형
    우리는 관계형을 사용할것 -> 엑셀처럼 생겨있음 구글링 : 관계형 행열, 도큐먼트

SQL : 관계형 데이터베이스에서 사용되는 언어

표준 SQL이 있고 각 DB만의 특별한 함수도 있다(방언).

SQL과 NoSQL 차이

틀을 정하는가 안정하는가
입력수정삭제는 sql 읽기,조회는 nosql이 유리하다.

네이밍

  • 이름짓는것이 가장 어렵다. 구글링 : schema를 관찰해보자 - 규칙에 맞게 지어야한다.

MYSQL DBVER에서 사용

전통적 방법

-- 데이터 베이스 생성 
CREATE DATABASE sparta_test;

-- 테이블 생성 
CREATE TABLE sparta_test.student(
    id int PRIMARY KEY AUTO_INCREMENT
    ,
    name varchar(50) NOT NULL
    ,
    email varchar(50) unique
)

sparta_test라는 db에 student라는 table을 만든다
dbeaver을 이용해 쉽게 만들기
database 우클릭 database생성 table 우클릭 생성 등 쉽게 할 수 있다.
데이터 입력 - into 목표테이블(컬럼) values(컬럼에 들어갈 내용)

INSERT
    INTO
    student (
        id
        , name
        , email
    )
VALUES(
    1
    , '정영훈'
    , 'jye7@naver.com'
)

id는 자동으로 생성되게 설정했다. id에 숫자를 안넣어도됨

INSERT
    INTO
    student
VALUES(
Null
,
'가나다'
, 
'111@mail.com'
);

데이터 지우기

DELETE
FROM
    student
WHERE
    id = 1;

where을 사용안하면 모든 데이터가 삭제 된다.

업데이트
UPDATE 테이블명 set 컬럼 = '수정할내용'
where id = 원하는 위치

검색
select * form 테이블
Where 컬럼 like = '%찾고자 하는 값' -> %뒤에 를 찾아라

NULL 검색
select * form 테이블
Where IS NULL -> not을 붙이면 null아닌것을 나타냄

실행 command+enter

도시 테이블 만들기

creat table city(
id int primary key auto_increment - id자동 생성
,
name varchar(50) not null
)
insert
into
city (name)
values
('서울'),
('도쿄'),
('뉴욕'),
('상하이'),
('파리')

컬럼추가

alter table '테이블명' add '컬럼명'
ALTER TABLE student ADD city_id int;
ALTER TABLE student ADD FOREIGN KEY (city_id) REFERENCES city(id)

데이터베이스 설계

1.요구사항 수집 및 분석
2.설계

  • 개념적 모델링 ERD작성 - 다이어그램
  • 논리적 모델링 ERD기반으로 상세 속성 정의, 정규화 - 스키마 모델을 만든다.
  • 물리적 모델링 계획에 따라 개체 인덱스 등을 생성 - 테이블 만들고 DB만들고

정규화 - 중복데이터를 없애고 관계를 단순하게, 종속성을 최대한 제거한다는 느낌으로 여러 테이블을 만드는것이 종속성을 유지하는 것보다 낳다. - 안하면 고생한다.
3정규화 까지 하고 4,5,는 천천히 해나가면됨

  • 1정규화 : 하나의 셀에는 하나만 들어가게
  • 2정규화 : 복합키중 하나에만 종속된 칼럼이 있으면 따로 떼어낸다. -> 복합키라고 생각을 가지는게 쉽지 않다. -> 구글에 제2정규화를 검색해서 계속보면서 생각의 범위를 넓혀라
  • 3정규화 : 종속의 종속이 되면 서로 다른 테이블로 분리해서 만든다.

쿼리 코드를 배워야 하는 이유는 - 알아야 코드를 쓸수 있어서 - 프로그램이 다른 프로그램에게 요청과 응답을 할때 코드로 되기 때문에 구글링(orm)
nosql - 많은 데이터를 가져야 할 때 -> 구글링(샤딩) - 한곳에서 전부 가지고있지 않고 나눠가지고 메인이 찾으라 할때 찾는 sql은 모두가 원본을 그대로 가지고 있음 -nosql은 스키마를 가질 필요 없는 이유이고
db설계 - 잘 한 예시는 없다? -> 정규화를 하는게 잘한 예시
db처음 설계 할 때
1. 엑셀을 쓴다 생각하고 써보자. -> 엑셀을 예쁘게 정리하기
2. 통계를 낼 수 있게 정리를 하면서 써보자 -> id를 부여하는 이유 상품명 혹은 이름으로 표현하면 오류가 날 수 있어서
3. 목적이 있는 데이터 끼리 모으고 목적이 있는 데이터에 id를 준다.

profile
렌덤형 인간

0개의 댓글