Database Handling (MySQL)

개발새발·2021년 12월 25일
0

DB 강의 (MySQL)

목록 보기
2/11
post-thumbnail

Database Handling

본 글은 Fastcampus의 MySQL Database 강의를 수강하며 정리한 내용입니다.
강의 링크

1. 데이터 타입

MySQL에서는 해당 저장 공간에서 미리 정해둔 데이터 타입이 아닐 경우, 데이터 저장이 불가능하다.

숫자형 데이터 타입

데이터 타입(정수형)바이트 수표현 가능한 숫자 범위
TINYINT1-128 ~ 127
SMALLINT2-32,768 ~ 32,767
MEDIUMINT3약 -838백만 ~ 838백만
INT4약 -21억 ~ 21억
BIGINT8약 -900경 ~ 900경

 

데이터 타입(실수형)바이트 수표현 가능한 숫자 범위
FLOAT4소수점 아래 7자리까지 표현
DOUBLE8소수점 아래 15자리까지 표현

문자형 데이터 타입

데이터 타입최대 바이트 수범위특징
CHAR(n)2551 ~ 255지정 안하면 1 자동 입력 / 고정길이 문자열 저장
VARCHAR(n)655351 ~ 65535지정 안하면 사용 불가 / 가변길이 문자열 저장

 

데이터 타입고정 바이트 수특징
TINYTEXT255255 바이트의 문자열까지 표현 가능
TEXT6553565535 바이트의 문자열까지 표현 가능
MEDIUMTEXT약 천 6백만약 천 6백만 바이트의 문자열까지 표현 가능
LONGTEXT약 42억약 42억 바이트의 문자열까지 표현 가능

알파벳 1자는 1바이트

날짜형 데이터 타입

데이터 타입바이트 수표현 가능 범위
DATE30000-00-00 ~ 9999-12-31
DATETIME30000-00-00 00:00:00 ~ 9999-12-31 23:59:59
TIME4-838:59:59 ~ 838:59:59
YEAR11901 ~ 2155

2. 기본적인 데이터 다루기

MySQL에서 데이터를 다루는 방법은 엑셀과 굉장히 유사하다.

숫자형 데이터 기본 특징

  • 숫자형 데이터는 '수'이다.
  • 따라서, 데이터 간 연산이 가능하다.

문자형 데이터 기본 특징

  • 문자형 데이터는 반드시 "" 또는 '' (quotes)와 함께 쓰여야 한다.
  • Quotes가 없는 문자는 키워드함수, 데이터베이스/테이블/컬럼의 이름으로 인식된다.

데이터 타입 간 타입 변환

  • 숫자형, 문자형, 날짜형 데이터는 함수를 사용하여 서로 타입 변환이 가능하다.
  • 예제 1(숫자→문자) :
SELECT CAST(123 AS CHAR(5));
  • 예제 2(문자→숫자) :
SELECT CONVERT('1004', INT);
  • 예제 3(문자→날짜) :
SELECT DATE_FORMAT('20211225', '%Y-%m-%d');

3. 테이블

테이블이란?

  • 데이터베이스에서 데이터를 형태를 정해 모아 놓은 저장 공간
  • 행과 열로 이루어진 데이터 표
컬럼1컬럼2컬럼3

컬럼(열)

  • 데이터를 저장하기 위한 틀
  • 컬럼의 이름과 데이터 타입은 테이블을 만들 때 미리 정해진다.
  • 컬럼의 이름은 동일한 테이블 내에서 중복될 수 없다.
  • 테이블은 반드시 1개 이상의 컬럼을 가져야 한다.

  • 컬럼에 속한 실제 데이터 값
  • 컬럼의 데이터 타입만을 값으로 가질 수 있다.

로우(행)

  • 관계된 값의 리스트
  • 하나의 로우는 하나의 관계된 데이터를 의미한다.
    • 예) 하나의 로우가 한 사람의 데이터
  • 같은 테이블 안에서 로우는 항상 동일한 구조를 가진다.
  • 로우를 단위로 데이터를 삽입한다.

데이터베이스의 의미
넓은 의미 : 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소
좁은 의미 : 테이블을 저장해두는 저정소 (폴더와 비슷한 개념)

생성 순서는 보통의 경우, 데이터베이스를 생성한 후에 특정 데이터 베이스 내에 테이블을 생성한다.

4. SQL 문법

데이터베이스 만들기

CREATE DATABASE [데이터베이스 이름];

데이터베이스 목록보기

SHOW DATABASES;

데이터베이스 사용하기

USE [데이터베이스 이름];

테이블 만들기

CREATE TABLE [테이블 이름] (
		[컬럼 이름] [데이터 타입],
		[컬럼 이름] [데이터 타입],
		...
);

테이블 이름 변경하기

ALTER TABLE [테이블 이름] RENAME [새로운 테이블 이름];

새로운 컬럼 추가하기

ALTER TABLE [테이블 이름] ADD COLUMN [컬럼 이름] [데이터 타입];

기존 컬럼 타입 변경하기

ALTER TABLE [테이블 이름] MODIFY COLUMN [컬럼 이름] [데이터 타입];

기존 컬럼 이름과 타입 변경하기

ALTER TABLE [테이블 이름]
CHANGE COLUMN [컬럼 이름] [새로운 컬럼 이름] [새로운 데이터 타입];

컬럼 지우기

ALTER TABLE [테이블 이름] DROP COLUMN [컬럼 이름];

데이터베이스 지우기

DROP DATABASE [데이터베이스 이름];

테이블 지우기

DROP TABLE [테이블 이름];

테이블 값만 지우기

TRUNCATE TABLE [테이블 이름];

데이터베이스 / 테이블이 존재한다면 지우기

DROP DATABASE IF EXISTS [데이터베이스 이름];
DROP TABLE IF EXISTS [테이블 이름];

데이터 하나 삽입하기

INSERT INTO [테이블 이름] ([컬럼1 이름], [컬럼2 이름], [컬럼3 이름])
VALUES ([컬럼1 값], [컬럼2 값], [컬럼3 값]);

데이터 여러 개 삽입하기

INSERT INTO [테이블 이름] ([컬럼1 이름], [컬럼2 이름], [컬럼3 이름])
VALUES	([컬럼1 값], [컬럼2 값], [컬럼3 값]),
		([컬럼1 값], [컬럼2 값], [컬럼3 값]),
		...
		([컬럼1 값], [컬럼2 값], [컬럼3 값]);

데이터 삭제하기

DELETE FROM [테이블 이름]
WHERE [조건 값];

데이터 수정하기

UPDATE [테이블 이름]
SET [컬럼 이름]=[새 값]
WHERE [조건 값];

5. 데이터베이스, 테이블, 컬럼 이름 정하기 규칙

  1. 문자, 숫자, _를 사용한다.
  2. 이름에 쓰이는 문자는 주로 영문 소문자를 사용한다.
    • 한글도 사용은 가능하지만 인코딩 이슈로 주로 영문 사용
    • 보통 키워드나 함수명은 대문자, 사용자가 정의한 이름에는 소문자 사용
  3. 예약어는 사용할 수 없다.
    • 예약어 : 이미 키워드, 함수명 등의 문법적인 용도로 사용되고 있기 때문에 이름으로 사용할 수 없는 단어
  4. 단어와 단어 사이에는 빈칸 대신 _를 사용
  5. 문자로 시작한다.
    • 숫자, _로 시작하지 않는다.
  6. 데이터 베이스 이름은 중복될 수 없다.
    • 테이블 이름은 하나의 데이터베이스 내에서는 중복될 수 없다.
    • 컬럼 이름은 하나의 테이블 내에서는 중복될 수 없다.

6. 실습

CREATE DATABASE pokemon;

USE pokemon;

CREATE TABLE mypokemon (
		number INT,
		name VARCHAR(20),
		type VARCHAR(10)
);

INSERT INTO mypokemon (number, name, type)
VALUES	(10, "caterpie", "bug"),
		(25, "pikachu", "electric"),
		(133, "eevee", "normal");

SELECT *
FROM mypokemon;
profile
블록체인 개발 어때요

0개의 댓글