본문 바로가기

Structured Query Language/MY_SQL_basic

SQL_Basic 01_Day 01, 02. 데이터 베이스 다루기

Day 1, 2. 데이터 베이스 다루기


1. 데이터 타입 알아보기 (숫자형,문자형,날짜형)


데이터 란?

컴퓨터가 처리 할 수 있는 문자, 숫자, 소리, 그림 따위의 형태로 된 정보

 

데이터 타입의 종류

  • 숫자데이터 
  • 문자데이터
  • 그림데이터
  • 영상데이터

MySQL에서 사용가능한 데이터타입은 정해져 있다.

 

많이 사용하는 MySQL 데이터타입

정수형  소수점이 없는 숫자 데이터 ex. 486
실수형  소수점이 있는 숫자 데이터 ex. 1.14
문자형 텍스트로 구성된 문자열 데이터 ex. “ABC”, “가나다”
날짜형  날짜와 시간 데이터 ex. “2021-12-15 01:02:03”

 

데이터타입을 알아야 하는 이유

 

MySQL에서는 데이터를 저장하기 전에 저장공간의 데이터 타입을 미리 정해줘야 한다.

 

 

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

 

 

숫자형 데이터 타입

 

 

문자형 데이터 타입

 

 

날짜형 데이터 타입

 

 

2. 기본적인 데이터 다뤄보기


기본적인 데이터 다루기

 

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

 

예제1


a = 10 이고 b = 2일 때 , a + b 실행하기

 

 

예제2


성과 이름을 합쳐 전체 이름 표현하기

 

 

숫자형 데이터 기본 특징

 

숫자형 데이터는 ‘수’ 입니다. 따라서, 데이터 간 연산이 가능합니다.

 

문자형 데이터 기본 특징

 

 

 

데이터 타입 간 타입 변환

숫자형, 문자형, 날짜형 데이터는 함수를 사용하여 서로 타입 변환이 가능하다.

 

 

 

3. 테이블 만들고 변경하기


테이블이란?

데이터 베이스에서 데이터를 형태를 정해 모아놓은 저장공간
쉽게 말해 , 행과 열로 이루어진 데이터표

 

데이터 베이스의 의미

넓은의미.  여러 사람이 공유하고 사용할목적으로 통합 관리되는 데이터 저장소
좁은의미.  테이블을 저장해두는 저장소 = 스키마(Schema)

 

 

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

 

데이터 베이스 만들기

 

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

 

쿼리 작성시 주의할 점
✮ 쿼리가 끝날때는 항상 ‘명령을마친다’는 의미의 ; (세미콜론)을 꼭 붙여주어야 한다.
✮ 키워드는 약속이다.

 

 

데이터 베이스 목록보기

 

SHOW DATABASES;

 

 

데이터 베이스 사용하기

 

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

 

테이블 만들기

 

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

 

 

쿼리 예제

 

CREATE TABLE 아이돌(
            이름 VARCHAR(20),
            나이 INT,
            소속 VARCHAR(50)
            );

 

 

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

 

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

 

CREATE TABLE idol (
            name VARCHAR(20),
            age INT,
            group VARCHAR(50)
            );

 

 

쿼리 작성시 주의할 점
✮ 쿼리에서는 기능적으로는 대소문자 구분이 필요없으나, 가독성을 위해
보통 키워드나 함수명은 대문자, 사용자가 정의한 이름에는 소문자를 사용한다는 규칙이 있습니다

 

 

테이블 이름 변경하기

 

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

ALTER TABLE costomor RENAME customers;

 

 

새로운 컬럼 추가하기

 

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


ALTER TABLE customers ADD COLUMN age INT;

 

 

 

 

기존 컬럼 타입 변경하기

 

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


ALTER TABLE customers MODIFY COLUMN age FLOAT

 

 

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

 

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


ALTER TABLE customers
CHANGE COLUMN age new_age FLOAT;

 

 

컬럼지우기

 

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

ALTER TABLE customers DROP COLUMN new_age;

 

 

4. 테이블 지우기


데이터베이스지우기

 

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

 

테이블 지우기

 

DROP TABLE [테이블이름];

 

테이블 값만 지우기

 

TRUNCATE TABLE [테이블이름];

 

※DROP 과 TRUNCATE의 차이점

 

 

 

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

 

※만약 IF EXISTS가 없이,존재하지 않는 데이터베이스/테이블를 삭제한다면, ERROR가 발생합니다.

 

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



DROP TABLE IF EXISTS [테이블이름];


5. 데이터삽입, 삭제, 수정하기

 

데이터 하나 삽입 하기

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

 

테이블 REMIND

 

테이블이란? 데이터베이스에서 데이터를 형태를 정해 모아놓은 저장공간

 

 

데이터 하나 삽입 예시

 

INSERT INTO idol (name, age, group)
VALUES (“제니”, 27, “블랙핑크”);

 

데이터 여러 개 삽입하기

 

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

 

데이터 삭제하기

 

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

 

데이터 수정하기

 

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

 

 

6. [실습] 테이블을 만들고 데이터를 넣어보자(CREATE, INSERT)


MISSION (1)
‘포켓몬’ (pokemon) 데이터베이스와 ‘나의포켓몬’ (mypokemon)테이블을 만들고,
캐터피, 피카츄, 이브이의 포켓몬 번호, 영문이름, 타입데이터를 넣어보자.

 

# STEP1. 포켓몬 데이터베이스를 만들어 주세요. (데이터베이스 이름 : pokemon)

CREATE DATABASE pokemon;

 

STEP2. 포켓몬 데이터베이스 안에 나의 포켓몬 테이블을 만들어 주세요. (테이블 이름 : mypokemon)
이 때, 컬럼은 (1) 포켓몬 번호, (2) 포켓몬 영문 이름, (3) 포켓몬 타입, 총 3가지로 하고, 

이름과 데이터 타입을 지정해 주세요.
컬럼 이름 및 데이터 타입 : (1) number : INT, (2) name : VARCHAR(20), (3) type : VARCHAR(10)

 

# 1) USE 사용 
USE pokemon;
CREATE TABLE mypokemon (
            number INT,
            name VARCHAR(20),
            type VARCHAR(10)
);

# 1) USE 사용X

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

 

# STEP3. 포켓몬 테이블 안에 포켓몬 데이터를 각각의 로우로 넣어 주세요.

 

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

 

# 테이블 전체를 조회하는 쿼리

 

SELECT * FROM mypokemon;

 

 

MISSION (2)
MISSION (1)에서 만든 ‘포켓몬’ (pokemon) 데이터베이스에
‘나의새로운포켓몬’ (mynewpokemon)테이블을 만들고,
포니타, 메타몽, 뮤의 포켓몬번호, 이름, 타입 데이터를 넣어주세요.

 

# STEP1. 포켓몬 데이터 베이스 안에 나의새로운포켓몬 테이블을 만들어주세요. (테이블이름: mynewpokemon)
이때, 컬럼은 (1) 포켓몬번호, (2) 포켓몬영문이름, (3) 포켓몬타입, 총 3가지로 하고, 이름과 데이터 타입을 지정해주세요.
컬럼 이름 및 데이터타입: (1) number : INT, (2) name : VARCHAR(20), (3) type : VARCHAR(10)

 

USE pokemon;
CREATE TABLE mynewpokemon (
			number INT,
            name VARCHAR(20),
            type VARCHAR(10)
);

 

# STEP2. ‘나의새로운포켓몬’ 테이블 안에 포켓몬 데이터를 각각의 로우로 넣어주세요.

 

INSERT INTO mynewpokemon (번호, 이름, 타입)
VALUES ( 77 , '포니타', '불꽃'), 
        (132, '메타몽', '노말'),
	    (151, '뮤', '에스퍼') ;

 

SELECT *
FROM mynewpokemon;

 

 

 

7. [실습] 테이블을 변경하고 지워보자(ALTER, DROP)


MISSION (1)
‘포켓몬’ (pokemon)데이터베이스안에 있는 ‘나의포켓몬’ (mypokemon)테이블과 ‘나의새로운포켓몬’ (mynewpokemon)테이블이 아래와 같이 될수있게 변경해주세요.
※테이블을 새로 생성하지말고, 기존의 테이블에서 변경해주세요!

 

 


# STEP1. ‘mypokemon’ 테이블의 이름을‘myoldpokemon’으로 변경해주세요.

 

ALTER TABLE mypokemon RENAME myoldpokemon;


# STEP2. ‘myoldpokemon’ 테이블의 ‘name’ 컬럼의 이름을 ‘eng_nm’으로 변경해주세요.
(컬럼이름: eng_nm, 데이터타입: VARCHAR(20))

 

ALTER TABLE myoldpokemon
CHANGE COLUMN name eng_nm VARCHAR(20);

 


# STEP3. ‘mynewpokemon’ 테이블의‘name’ 컬럼의이름을‘kor_nm’으로변경해주세요.
(컬럼이름: kor_nm, 데이터타입: VARCHAR(20))

 

ALTER TABLE mynewpokemon
CHANGE COLUMN 이름 kor_nm VARCHAR(20);

 

 

 

MISSION (2)
‘pokemon’ 데이터베이스 안에있는 ‘myoldpokemon’테이블은 값만 지우고,
‘mynewpokemon’테이블은 전부 지워주세요.

 

TRUNCATE TABLE myoldpokemon;
SELECT * FROM myoldpokemon;

 

DROP TABLE mynewpokemon;