데이터의 종류
데이터
- 컴퓨터가 처리할 수 있는 문자, 소리, 그림, 숫자 따위의 형태로 된 정보
- MySQL에서는 데이터를 저장하기 전에 저장 공간의 데이터 타입을 미리 정해줘야 한다.
- 해당 저장공간에서 미리 정해준 데이터 타입이 아닐경우, 데이터 저장이 불가능하다.
MySQL 데이터 타입
- 정수형(INT) : 소수점이 없는 숫자 데이터
- 실수형(FLOAT) : 소수점이 있는 숫자 데이터
- 문자형(VARCHAR(n)) : n을 1부터 65535까지 지정 가능, 지정 안 할 시 사용 불가
- 날짜형
기본적인 데이터 다루기
- MySQL에서 데이터를 다루는 방법은 엑셀과 굉장히 유사
- 숫자형 데이터는 데이터간 연산이 가능하다
- 문자형 데이터는 반드시 ""또는 ''와 함께 쓰여야한다.
- 따옴표가 없는 문자는 키워드나 함수, 데이터베이스/테이블/컬럼의 이름으로 인식된다.
- 숫자형, 문자형, 날짜형 데이터는 함수를 사용하여 서로 타입 변환이 가능하다.
테이블 만들고 변경하기(CREATE-ALTER)
테이블
- 테이블 : 데이터베이스에서 데이터를 형태를 정해 모아 놓은 저장 공간
- 행과 열로 이루어진 데이터 표
컬럼(열)
- 데이터를 저장하기 위한 틀
- 1. 컬럼의 이름과 데이터 타입은 테이블을 만들 때 미리 정해진다.
- 컬럼의 이름은 동일한 테이블 내에서 중복될 수 없다.
- 테이블은 반드시 1개 이상의 컬럼을 가져야 한다.
값
- 컬럼에 속한 실제 데이터 값
- 1. 컬럼의 데이터 타입 만을 값으로 가질 수 있다.
로우(행)
- 관계된 값의 리스트
- 1. 하나의 로우는 하나의 관계된 데이터를 의미한다.
- 같은 테이블 안에서 로우는 항상 동일한 구조를 가진다.
- 로우를 단위로 데이터를 삽입한다.
데이터 베이스
- 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소
- 테이블을 저장해두는 저장소
테이블과 데이터베이스의 생성 순서
- 데이터베이스를 생성한 후에 특정 데이터베이스 내에 테이블을 생성
쿼리 문법(데이터 베이스)
- 쿼리 작성시 주의할 점
- 쿼리가 끝날때는 항상 '명령을 마친다'는 의미의 ; (세미콜론)을 꼭 붙여야한다.
- 키워드는 약속이다.
- 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-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. 포켓몬 데이터베이스를 만들어 주세요
- 포켓몬 데이터베이스 안에 나의 포켓몬 테이블을 만들어 주세요
- 포켓몬 테이블 안에 포켓몬 데이터를 각각의 로우로 넣어 주세요
CREATE DATABASE pokemon;
USE pokemon;
CREATE TABLE mypokemon (number INT, name VARCHAR(20), type VARCHAR(10));
CREATE TABLE pokemon.mypokemon (
number INT,
name VARCHAR(20),
type VARCHAR(10)
);
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으로 변경해주세요
- myoldpokemon테이블의 name 칼럼의 이름을 eng_nm으로 변경해 주세요
- mynewpokemon테이블의 name 컬럼의 이름을 kor_nm으로 변경해 주세요
USE pokemon;
ALTER TABLE mypokemon
RENAME myoldpokemon;
ALTER TABLE myoldpokemon
CHANGE COLUMN name eng_nm VARCHAR(20);
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;