데이터베이스 다루기

오상윤·2023년 1월 25일
0

SQL

목록 보기
1/10

데이터의 종류

데이터

  • 컴퓨터가 처리할 수 있는 문자, 소리, 그림, 숫자 따위의 형태로 된 정보
  • MySQL에서는 데이터를 저장하기 전에 저장 공간의 데이터 타입을 미리 정해줘야 한다.
  • 해당 저장공간에서 미리 정해준 데이터 타입이 아닐경우, 데이터 저장이 불가능하다.

MySQL 데이터 타입

  1. 정수형(INT) : 소수점이 없는 숫자 데이터
  2. 실수형(FLOAT) : 소수점이 있는 숫자 데이터
  3. 문자형(VARCHAR(n)) : n을 1부터 65535까지 지정 가능, 지정 안 할 시 사용 불가
  4. 날짜형

기본적인 데이터 다루기

  • MySQL에서 데이터를 다루는 방법은 엑셀과 굉장히 유사
  • 숫자형 데이터는 데이터간 연산이 가능하다
  • 문자형 데이터는 반드시 ""또는 ''와 함께 쓰여야한다.
    - 따옴표가 없는 문자는 키워드나 함수, 데이터베이스/테이블/컬럼의 이름으로 인식된다.
  • 숫자형, 문자형, 날짜형 데이터는 함수를 사용하여 서로 타입 변환이 가능하다.

테이블 만들고 변경하기(CREATE-ALTER)

테이블

  • 테이블 : 데이터베이스에서 데이터를 형태를 정해 모아 놓은 저장 공간
    - 행과 열로 이루어진 데이터 표

컬럼(열)

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

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

로우(행)

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

데이터 베이스

  • 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소
  • 테이블을 저장해두는 저장소

테이블과 데이터베이스의 생성 순서

  • 데이터베이스를 생성한 후에 특정 데이터베이스 내에 테이블을 생성

쿼리 문법(데이터 베이스)

  • 쿼리 작성시 주의할 점
    • 쿼리가 끝날때는 항상 '명령을 마친다'는 의미의 ; (세미콜론)을 꼭 붙여야한다.
      - 키워드는 약속이다.
  • CREATE DATABASE[데이터베이스 이름];
    - 해석 : [데이터베이스 이름]라는 이름의 데이터베이스를 생성해 주세요
  • SHOW DATABASES;
    - 해석 : 현재 존재하는 모든 데이터베이스 목록을 보여주세요
  • USE[데이터베이스 이름]
    - 해석 : 이제부터 [데이터베이스 이름]데이터베이스를 사용 한다.

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

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

쿼리 문법(테이블)

  • CREATE TABLE [테이블 이름](
    [컬럼이름][데이터 타입],
    [컬럼이름][데이터 타입],
    ...
    );
    - 해석 : 테이블을 생성한다.
  • ALTER TABLE [테이블 이름] RENAME [새로운 테이블 이름];
    - 해석 : 테이블 이름 변경하기
  • ALTER TABLE [테이블 이름] ADD COLUMN [컬럼 이름][데이터 타입];
    - 해석 : 새로운 컬럼 추가하기
  • ALTER TABLE [테이블 이름] MODIFY COLUMN [컬럼이름][새로운 데이터 타입];
    - 해석 : 기존 컬럼 타입 변경하기
  • ALTER TABLE [테이블 이름]
    CHANGE COLUMN[컬럼이름][새로운 컬럼이름][새로운 데이터 타입]:
    - 해석 : 기존 컬럼 이름과 타입 변경하기
  • ALTER TABLE [테이블 이름]DROP COLUMN[컬럼 이름];

테이블 지우기 (DROP-TRUNCATE)

쿼리 문법

  • DROP DATABASE[데이터베이스 이름];
    - 해석 : [데이터베이스 이름]이라는 데이터 베이스를 지워주세요
  • TRUNCATE TABEL[테이블 이름];
    - 해석 : 테이블 값만 지우기
  • DROP DATABASE IF EXISTS[데이터베이스 이름];
    - 해석 : [데이터베이스 이름]데이터 베이스가 존재한다면 지워주세요
  • DROP TABLE IF EXISTS[테이블 이름];
    - 해석 : [테이블 이름]테이블이 존재한다면 지워 주세요

데이터 삽입, 삭제, 수정하기 (INSERT, DELETE, UPDATE)

  • INSERT INTO[테이블 이름]([컬럼1 이름],[컬럼2이름],[컬럼3이름])
    VALUES([컬럼1값],[컬럼2값],[컬럼3값]);
    - 해석 : 데이터 하나 삽입하기
  • DELETE FROM[테이블 이름]
    WHERE[조건 값];
    - 해석 : 데이터 삭제하기
  • UPDATE[테이블 이름]
    SET[컬럼 이름]=[새 값]
    WHERE[조건 값];

실습(포켓몬 데이터베이스 만들기)

문제 1

  • '포켓몬' 데이터 베이스와 '나의 포켓몬' 테이블을 만들고 캐터피, 피카츄, 이브이의 포켓몬 번호, 영문 이름, 타입 데이터를 넣어주세요
    1. 포켓몬 데이터베이스를 만들어 주세요
    1. 포켓몬 데이터베이스 안에 나의 포켓몬 테이블을 만들어 주세요
    2. 포켓몬 테이블 안에 포켓몬 데이터를 각각의 로우로 넣어 주세요
# 1.
CREATE DATABASE pokemon;
# 2-1) USE 사용
USE pokemon;
CREATE TABLE mypokemon (number INT, name VARCHAR(20), type VARCHAR(10));
# 2-2) USE 사용 X 
CREATE TABLE pokemon.mypokemon (
number INT,
name VARCHAR(20),
type VARCHAR(10)
);
# 3
INSERT INTO mypokemon (number, name, type)
VALUES (10, 'caterpie', 'bug'),
(25, 'pikachu', 'electruc'),
(133, 'eevee', 'normal');
SELECT * FROM mypokemon;

문제 2

  • 포켓몬 데이터 베이스에 나의 새로운 포켓몬 테이블을 만들고 포니타, 메타몽, 뮤의 포켓몬 번호, 이름, 타입 데이터를 넣어주세요
USE pokemon;
CREATE TABLE mynewpokemon(
                number INT,
                name VARCHAR(20),
                type VARCHAR(10)
);
INSERT INTO mynewpokemon (number, name, type)
VALUES (77, '포니타', '불꽃'),
(132, '메타몽', '노말'),
(151, '뮤', '에스퍼');
SELECT * FROM mynewpokemon

문제 3

  • 포켓몬 데이터베이스 안에 있는 나의 포켓몬 테이블과 나의 새로운 포켓몬 테이블이 아래와 같이 될 수 있게 변경해 주세요
    1. mypokemon 테이블의 이름을 myoldpokemon으로 변경해주세요
    1. myoldpokemon테이블의 name 칼럼의 이름을 eng_nm으로 변경해 주세요
    2. mynewpokemon테이블의 name 컬럼의 이름을 kor_nm으로 변경해 주세요
# 1
USE pokemon;
ALTER TABLE mypokemon
RENAME myoldpokemon;
# 2
ALTER TABLE myoldpokemon
CHANGE COLUMN name eng_nm VARCHAR(20);
# 3
ALTER TABLE mynewpokemon
CHANGE COLUMN name kor_nm VARCHAR(20);

문제 4

  • pokemon 데이터베이스 안에 있는 myoldpokemon 테이블은 값만 지우고 mynewpokemon 테이블은 전부 지워 주세요
USE pokemon;
TRUNCATE TABLE myoldpokemon;
DROP TABLE mynewpokemon;
DROP DATABASE pokemon;
profile
가보자가보자~

0개의 댓글