Programming/DB

[DB/MySQL] Database - MySQL 기초2

devssun 2018. 8. 10. 17:24
728x90
반응형

Database - MySQL 기초 2 (https://opentutorials.org/course/195/1467)

  1. 생성

    • 데이터베이스와 테이블을 만드는 행위

      • CREATE DATABASE [database name];
      • CREATE DATABASE [database name] CHARACTER SET utf8 COLLATE utf8_general_ci;
    • 데이터베이스 목록 보기

      • SHOW DATABASES;
    • 데이터베이스 삭제

      • DROP DATABASE [database name];
    • 데이터베이스 사용

      • USE [database name]
  1. Table

    • 데이터가 실질적으로 저장되는 저장소
    • File과 유사한 역할, DB는 File을 Grouping해주는 것

    • 스키마 : Schema

      • 테이블에 적재될 데이터의 구조와 형식을 정의하는 것
      • 테이블에 어떤 형식의 데이터가 들어가고 저장될 것인지를 사전에 정의해야함. 정의된 내용에 따라 데이터를 정의
      • 엑셀의 '셀 형식', 일종의 데이터 설계도
      • 설계와 다른 데이터를 삽입하면 오류가 발생
    • 테이블 생성 예시

    • data_type에는 들어갈 데이터에 맞추어 설정해준다.
    • 데이터타입 참고 : https://opentutorials.org/course/195/1537

      CREATE TABLE table_name (
       column_name1 data_type,
       column_name2 data_type
      );
    • CHAR, VARCHARNVARCHAR의 차이

      • 문자형 데이터를 삽입하기 위해서는 위 세개 중 하나를 선택하여 데이터 타입을 지정하게 된다. 그렇다면 이 세 개의 차이는 무엇일까? 크게는 두개로 나눌 수 있다.

      • 가변형/고정형

        • CHAR은 고정형, VARCHAR, NVARCHAR는 가변형 데이터 타입이다.
        • 예시로 CHAR(10)으로 지정하게 되면 해당 record는 10byte까지 데이터를 삽입할 수 있는데 만일 3byte 데이터를 입력했다고 해도 남은 7byte는 공백 데이터가 들어가 데이터 크기가 낭비되고 데이터를 가져올 때에 공백을 제거하기 위해 trim()메서드를 사용하는 작업이 추가된다.
        • VARCHARNVARCHAR는 최대 10byte의 크기를 갖지만 가변형으로 3byte를 입력하게 되면 나머지 7byte는 조정이 되어 할당된 byte만 적용되게 된다.
      • 유니코드 문자

        • 일반 문자는 1byte가 하나의 문자를, 유니코드 문자은 2byte가 하나의 문자를 표현한다.
        • 한국어, 중국어 등 유니코드 형식의 데이터는 일반 문자에 비해 2배의 공간을 사용한다.
        • VARCHAR로 지정하고 유니코드 문자를 넣게되면 2배 공간을 사용해 데이터 공간이 부족하게 된다. 그래서 NVARCHAR로 데이터 타입을 지정한다.
    • 테이블 스키마 보기

      • DESC [database name]
  2. 봐두어야 할 문법

    • LIMIT

      • ex1) SELECT * FROM student LIMIT 1;
      • ex2) SELECT * FROM student LIMIT 3,1;
      • 3 : offset, 3번째 데이터를 offset이라 함 (DB에서는 row가 0부터 시작)
      • 1 : row counter, 몇개의 행을 가져올 것인지
      • ex2에서 3, 1이라고 한다면 3번째 데이터부터 1개 행을 가져온다. 라고 볼 수 있다.
      • 이 문법을 쓰는 이유? 스터디할 때 10여개 정도의 데이터는 를 이용해 다 가져와도 시스템에 전혀 무리가 없다. 하지만 실제 업무에서 사용하는 Database에는 몇백만, 몇천만 그 이상의 데이터가 존재하게 되는데 로 모든 데이터를 가져오려고 하게 되면 시스템에 무리가 오게 된다.
      • 이때 LIMIT 문구를 사용, 전체 데이터가 아닌 일부 데이터를 가져올 수 있게 처리하는 것이 좋다.
    • Group By : 특정 칼럼을 기준으로 데이터를 그룹핑함

      • ex1) SELECT sex FROM student GROUP BY sex;
        • 데이터 중에 성이 어떠한 성이 있는지 보고싶을 때 위와 같은 구문으로 추출할 수 있다.
      • ex2) SELECT sex, SUM(distance), AVG(distance) FROM student GROUP BY sex;
        • 여러 개의 데이터에서 sex로 그룹핑한 데이터의 sex와 distance의 합, 평균을 볼 수 있는 구문이다.
    • Order By : 지정된 칼럼을 기준으로 데이터 정렬

      • DESC : 오름차순, ASC : 내림차순
반응형