DBMS(DataBase Management System)

시바코코개발자·2023년 6월 11일
0

방대해진 데이터를 공통된 주제로 묶어 쉽게 관리할 수 있도록 해주는 도구.

  • oracle,mysqll,mariadb,postgresql,mongodb,msql,redis,dynamodb

  • 포트 포워딩(포트 연결)을 통해 하나의 DB서버로 운영할 수 있음

  • 개발자가 데이터에 접근하기 쉽게해주고, 여러명에서 데이터를 협업하여 운영

  • RDBMS(관계형 데이터베이스 시스템)

DBMS

  • 계층형
  • 네트워크형
  • 관계형(관계형 DB)
  • key-value(redis)
  • nosql

RDBMS

(Relational Database Management System)

  • 관계형 데이터에 기초
  • 이상현상 방지에 따른 에러 잡기 좋음
  • 모든 데이터를 2차원의 테이블(행과 열로 이루어진 표 형태)로 표현
  • 테이블이 서로 연관되어 있기 때문에 다른 DBMS보다 효율적인 스키마 구성
  • 데이터 관리를 위해 SQL이라는 쿼리를 사용
  • oracle,mysql,postgresql,msql,...

Mysql(mariadb)

  • 오라클과 더불어 세계에서 가장 널리 쓰이는 RDBS중 하나
    설치(생략)

쇼핑몰

DBMS에 어떤 것을 저장해야할까요?

회원정보
상품정보
상품이미지
결제내역
주문정보
쿠폰
이벤트
적립금


데이터타입
1. 숫자타입
- 정수형 : int,Bingint
- 소수형 : float,double
2. 문자타입
-char,varchar,text
3. 날짜와 시간
- date,datetime, timestamp
4. enum
- enum(f,m) ==>괄호 안에 있는 데이터만 허용
5. json
-json date


이상현상 방지를 위한 자체적으로 조건을 걸어 validation을 함.
회원정보
고유번호 : 겹치지 않는 정보 값(uuid,int)
이름:문자
전화번호:문자
주소:문자
아이디:문자
비밀번호:문자
생년월일: 문자or 숫자
가입일자: datetime


제약 조건
1. NOT NULL:null을 지정할 수 없음(required)
2. UNIQUE:중복된 값을 지정할 수 없음
3. DEFAULT :기본값(값을 저장하지 않았을때 저장되는 기본값)
4. PRIMARY KEY, FOREIGN KEY

```

- 대표키(후보키) --> 다른 데이터와 구분하여 인덱싱하여 할 수 있 는 값
(후보키-- 대표키가 아니더라도 인덱싱할 수 있는 것)
==> 기본값으로 대표키와 후보키에는 unique와 not null임

- 외래키 --> 다른 테이블과 현재 테이블과 관계를 짓는 키
이상현상을 방지하기 위해서 필요

```
  1. AUTO_INCREMENT
    데이터를 넣지 않아도 자동으로 수가 1씩 증가하여 증가
    중복값이 절대 저장되지 않음, 단 직접 데이터 추가가 불가능
    대표적으로 고유번호 idx옵션을 사용하지만, 보안적으로 중요한 경우는 uuid로 대체하여 사용하는 경우가 많음

모델링

:스키마를 정하는 과정

  • 개념모델링
    - 이 테이블(공간,표)에 어떤 것을 저장할까?
    • 추상적인 모델링 개념에 가까움.
    • 회원정보를 저장하기 위해 어떤 컬럼이 필요할까?
    • erd(entity relation diagram,개체관계다이어그램)
  • 논리모델링
    - 테이블간의 관계(1:1,1:N,N:M)까지 추상화-> 개념적인 부분을 상세화하는 과정
    • 정규화(반정규화 혹은 정규화가 반대로 되는 과정-어느정도 허용하는 과정,중복된데이터에 대해서)
    • 스키마를 정의(데이터타입,제약조건)상세화
  • 물리모델링
    - 실제 dbms에 테이블을 추가할 수 있도록 형체화

SQL

DML,DDl,DCL,TCL

DML : 데이터 조직어

  • CRUD
    실제 데이터베이스에 있는 데이터를 조회하거나 저장하거나 검색하는 언어
    create,read,update,delete

DDI : 데이터 정의어

  • 테이블 생성, 데이터베이스 생성과 같은 데이터의 구조를 정의하는 언어

DCI : 데이터 제어어

  • 데이터베이스 접근 권한에 관련된 명령어(읽기, 쓰기,삭제)
  • 루트 계정을 통해서 각 계정에 대해서 접근 권한 설정 가능

TCL : 트랜젝션 제어어

  • SQL작업의 단위를 묶어서 결과에 따라 별도로 제어하는 명령어(롤백,커밋)

명령어

  • 데이터 생성
    create table 테이블명
    CREATE TABLE대소문자 구분 x
    create table musinsa_user(
    id bigint primary key,
    namen varchar,
    user_id => varchar 컬럼명 보통 소문자 언더바
    birth varchar,
    createdAt Date, )
  • 데이터 조회
    select *(all) from from 테이블명 -> 해당 테이블의 모든 데이터를 조회
    select 컬럼명1,컬럼명2,컬럼명3 from 테이블명 해당 테이블의 특정한 컬럼을 조회
    -> select user_id from tb_user
    select user_id from tb_user where name = "김성용"
    select age from tb_user where name = "김성용" => 20
  • 데이터 추가
    insert into 테이블명 (컬럼명1,컬럼명2,...) values (데이터1,데이터2)
    컬럼명1 - 데이터1
    컬럼명2 - 데이터2
  • 테이터 갱신
    update 테이블명 set 컬럼명 = 바꾸고 싶은 데이터 where 조건식
    -> where조건식을 충족하는 데이터의 컬럼명을 원하는 데이터로 갱신 ex) update tb_user set name ='기성용' where name '김성용'
    ex)
  • 데이터 삭제
    delete from 테이블명 where 조건식
    -> where 조건식을 만족하는 데이터 삭제
    데이터 베이스 생성,사용,삭제

테이블 생성,삭제

데이터 추가 조회 갱신 삭제


sqld

서브쿼리,조인, 빌트인함수(집계,연산),정렬,그룹핑,관계(rdmbs),트랜잭션,PL/SQL,프로시져, 정규화,반정규화

0개의 댓글