Post

오토에버 클라우드 2기 5일차

오토에버 클라우드 2기 5일차

데이터베이스는 효율적인 데이터 관리를 위해서 존재한다 데이터를 통합해서 관리하고 데이터 누락 및 중복 제거 여러 사용자가 공동으로 실시간 사용이 가능하다

CQRS: command query responsibility segregation의 약자로 읽기와 쓰기를 분리

삽입 수정은 RDB, 조회는 NoSQL가 빠르다

 

RDBMS 테이블의 집합으로 설명하는 데이터베이스 관리 시스템

NoSQL key-value, document, big table형식

 

DB 구성

  • Relation: 테이블
  • Attribute: 속성, 테이블의 열을 의미
  • Domain: 속성이 가질 수 있는 값들의 집합 - 자료형이나 값의 집합
  • Tuple: 테이블의 행을 의미, row나 record라고도 한다
  • Cardinality: 하나의 테이블에서 행의 개수나 서로 다른 테이블 사이에 대응되는 수(하나의 테이블인 경우 행의 개수가 되지만 테이블이 2개 이상인 경우 0,1,n)
  • Degree: 속성의 개수
  • Constraint: 데이터 무결성을 지키기 위해서 데이터를 저장하고자 할 때 실행되는 검사 규칙

 

key

각 튜플을 유일하게 식별할 수 있는 속성 또는 속성의 집합

  • super key: 속성의 개수에 상관없이 다른 튜플과 구분할 수 잇는 속성 또는 속성의 집합
  • candidate key(후보키): 속성의 개수를 최소로 해서 구분하는 key
  • primary key(기본키): 후보키 중에서 하나를 선정
  • alternate key(대체키): primary key가 아닌 candidate key
  • foreign key(외래키): 다른 테이블에서 튜프을 식별하기 위한 key 현재 테이블에서는 아무런 제약이 없지만 다른 테이블에서는 기본키 이거나 unique하면 된다

 

제약조건

  • entity integrity(개체 무결성): 기본키는 null이거난 중복될 수 없음
  • referential integrity(참조 무결성): 참조할 수 없는 외래키를 가지면 안됨 참조할 수 있는 값을 가지거나 null이어야 한다

 

SQL(structured query language)

dbms에 질의를 수행하기 위한 언어 비절차적(작성한 순서대로 실행되지 않음), 처리 단위는 튜플 각각이 아니라 튜플들 집합 단위로 처리

분류

  • DDL: 데이터 구조 정의(create), 구조 수정(alter), 구조 삭제(drop), 이름 변경(rename), 데이터만 전체 삭제(truncate)
  • DCL: 권한부여 (grant), 권한 취소(revoke)
  • TCL: 트랜잭션 관련 명령어: commit, rollback, savepoint
  • DML: 데이터 추가(insert), 데이터 수정(update), 데이터 삭제(delete)
  • DQL: 데이터 조회(select)

 

mariaDB

SQL에 기반을 둔 관계형 DBMS로 오픈소스 소프트웨어이다 mysql을 기반으로 생성했다

 

데이터베이스 명령어

  • show databases 데이터 베이스 확인
  • create database 이름 데이터 베이스 생성
  • drop database 이름 데이터 베이스 삭제
  • use 이름 데이터 베이스 사용
  • show tables 내부 테이블 확인

 

유저

  • create user 사용자계정@접속위치 identified by 비밀번호; 접속 위치는 접속하고자 하는 컴퓨터의 ip, %를 설정하면 모두 허용
  • grant all privileges on 데이터베이스이름 to 계정@접속위치; 만들어진 유저에게 권한을 부여함 데이터 베이스 이름대신 .를 하면 모든 데이터 베이스가 대상이된다 이명령어 이후 데이터 베이스 재부팅 필요 flush privileges

 

데이터 조회

select문을 통해서 데이터를 조회한다 select *(컬럼 이름) from 테이블이름

조건적으로 where, group by, having, order by를 사용한다

  • where 뒤에 조건문을 작성
  • group by 뒤에 그룹화할 조건 작성
  • having 뒤에 group by 이후 조건을 작성
  • order by 컬럼 이름이나 연산식 [ASC DESC]

 

실행순서

from → where → group by → having → select → order by

 

select의 사용법

  • select concat(name,' ',area) from tCity; 이렇게 concat을 사용해서 컬럼을 같이 표시할 수 있다
  • as 를 사용해서 컬럼명 대신 별칭을 사용할 수 있다
  • select distinct region from tcity; 컬럼 내부 중복된 결과가 있다면 중복을 제거한다 region과 추가적으로 컬럼을 넣는다면 두개 모두 같아야 중복 제거된다

 

where

조회하고자 하는 데이터의 조건을 지정 이절이 생략되면 테이블의 모든 데이터를 조회

delete, update 구문에서도 사용된다

비교를 할 때 숫자는 상수를 그냥 쓰지만 문자역과 날짜 상수는 작은 따옴표로 감싸야한다 (RDBMS에 따라 생략되는 경우가 있다)

mysql과 mariadb는 저장할때 대소문자를 구분하지만 비교할 때는 대소문자 구분 X

null 데이터 조회시 is null을 이용한다

조건을 작성시 논리 연산자 AND, OR, NOT 사용 가능

 

like

패턴으로 부분 문자열을 검색 와일드 카드를 사용

  • %: 0개 이상의 문자
  • _: 1개의 문자
  • [문자나열]: 문자 리스트중 하나의 문자와 대응
  • [^문자나열]: 문자 리스트에 포함되지 않은 하나의 문자와 대응

와일드 카드인 % 또는 _를 인식하게 하기 위해서는 ESCAPE 를 사용 예를 들면 ESCAPE를 &로 설정하고 와일드 카드 앞에 사용하면 된다

where sale like '%30&%' ESCAPE '&'

 

between

값1 between 값2 의 형태로 값1부터 값2까지 데이터를 조회한다 값1과 값2를 포함한다 이상, 이하로 생각하면 된다

where popu >= 50 and popu <=100 보다 where popu between 50 and 100이게 더 빨라서 사용함

 

This post is licensed under CC BY 4.0 by the author.