본문 바로가기
데이터 분석 및 업무 자동화

MySQL에서 데이터베이스는 어떻게 다루면 될까요? (CREATE, ALTER, DROP, TRUNCATE, INSERT, DELETE, UPDATE)

by 공부머리 2021. 12. 29.
반응형

오늘은 MySQL에서 데이터베이스 다루기 파트에 대해서 정리해보려고 합니다. 간략하게 아웃라인을 살펴보면 아래와 같습니다. MySQL에서 데이터를 배우는 첫걸음이라고 보시면 되겠습니다.

  • 데이터 종류 알아보기 (문자형, 숫자형, 날짜형)
  • 테이블 만들고 변경하기 (CREATE-ALTER)
  • 테이블 지우기 (DROP-TRUNCATE)
  • 데이터 삽입, 삭제, 수정하기 (INSERT, DELETE, UPDATE)

자, 그러면 각 항목별로 내용을 좀 더 자세히 살펴보도록 하겠습니다.


데이터 종류 알아보기 (문자형, 숫자형, 날짜형)

MySQL에서는 데이터를 저장하기 전에 저장 공간의 데이터 타입을 미리 정해줘야 합니다. 만약 해당 저장 공간에서 미리 정해둔 데이터 타입이 아닐 경우, 데이터 저장이 불가능합니다. MySQL의 데이터의 종류는 대표적으로 정수형, 실수형, 문자형, 날짜형이 있습니다. 

 

  • 숫자형 (정수형) : 소수점이 없는 숫자 데이터 ex. 123
    • 정수형의 대표적인 데이터 타입은 INT이고 4바이트 입니다. 표현 가능한 숫자 범위는 -21억에서 +21억까지 입니다.
  • 숫자형 (실수형) : 소수점이 있는 숫자 데이터 ex. 1.14
    • 실수형의 대표적인 데이터 타입은 FLOAT이고 4바이트 입니다. 표현가능한 숫자 범위는 소수점 아래 7자리까지 표현 가능합니다.
  • 문자형 : 텍스트로 구성된 문자열 데이터 ex. "홍길동", "APPLE"
    • 문자형의 대표적인 데이터 타입은 VARCHAR(n)이고 최대 바이트 수는 65535 바이트 입니다. n을 1부터 65535까지 지정 가능하고 지정을 하지 않으면 사용 불가합니다. 또한 변동 길이로 문자열이 저장됩니다. 즉, 필요한 만큼의 공간만 사용한다는 의미입니다.
  • 날짜형 : 날짜와 시간 데이터 ex. "2021-12-29 15:48:00"
    • 날짜형에는 날짜만 표현하는 DATE (0000-00-00 ~ 9999-12-31), 날짜와 시간을 표현하는 DATETIME (0000-00-00 00:00:00 ~ 9999-12-31 23:59:59), 시간을 표현하는 TIME (-838:59:59 ~ 838:59:59), 년을 표현하는 YEAR (1901~2155)가 있습니다.

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

1. 테이블의 의미와 구성

 

테이블이란 데이터베이스에서 데이터의 형태를 정해서 모아 놓은 저장 공간입니다. 다른 말로 행과 열로 이루어진 데이터 표라고 이해하시면 되겠습니다. 컬럼은 열이고 로우는 행입니다.

테이블
컬럼1 컬럼2 컬럼3
  • 컬럼 : 데이터를 저장하기 위한 틀
    • 컬럼의 이름과 데이터 타입은 테이블을 만들 때 미리 정해진다.
    • 컬럼의 이름은 동일한 테이블 내에서 중복될 수 없다.
    • 테이블은 반드시 1개 이상의 컬럼을 가져야 한다.
  • 값 : 컬럼에 속한 실제 데이터 값
    • 컬럼의 데이터 타입 만을 값으로 가질 수 있다.
  • 로우 : 관계된 값의 리스트
    • 하나의 로우는 하나의 관계된 데이터를 의미한다.
    • 같은 테이블 안에서 로우는 항상 동일한 구조를 가진다.
    • 로우를 단위로 데이터를 삽입한다.

2. 데이터베이스의 의미와 구성

 

데이터베이스는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소 입니다. 테이블을 저장해두는 저장소라고 이해하시면 되겠습니다. 같은말로는 스키마(Schema)입니다.

 

보통의 경우 데이터베이스를 생성한 후에 특정 데이터베이스 내에 테이블을 생성하게 됩니다.

 

3. 데이터베이스 만들기

 

데이터 베이스를 만드는 쿼리 문법은 아래와 같습니다.

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

해석을 한다면 [데이터베이스 이름]이라는 이름의 데이터베이스를 생성해 주세요 라는 의미 입니다.

 

데이터베이스 목록을 보여주는 쿼리 문법은 아래와 같습니다.

SHOW DATABASES;

해석을 하면 현재 존재하는 모든 데이터베이스 목록을 보여주세요 라는 의미 입니다.

 

데이터베이스 사용하겠다고 선언하는 쿼리 문법은 아래와 같습니다.

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

해석을 하면 이제부터 [데이터베이스 이름] 데이터베이스를 사용 하겠다는 의미 입니다.

 

4. 테이블 만들기

 

테이블을 만드는 쿼리 문법은 아래와 같습니다.

CREATE TABLE [테이블 이름](

          [컬럼 이름] [데이터 타입],

          [컬럼 이름] [데이터 타입],

          ...

);

테이블 이름을 선언해주고, 괄호안에 컬럼 리스트들을 넣어주어야 하고, 컬럼 리스트들은 쉼표로 구분이 되며 컬럼 이름과 데이터 타입을 함께 지정해주어야 합니다. 또한 컬럼 이름과 데이터 사이에는 공백이 필요합니다.

 

예를 들어 아래와 같은 쿼리문을 작성하면

CREATE TABLE apt (

          danji VARCHAR(20),

          builddate INT,

          totalhousecount INT

);

아래와 같은 테이블이 생성되게 됩니다.

apt
danji builddate totalhousecount
     
     
     

 

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

 

  • 문자, 숫자, _를 사용합니다.
  • 이름에 쓰이는 문자는 주로 영문 소문자를 사용합니다.
  • 예약어는 사용할 수 없습니다.
  • 단어와 단어 사이에는 빈칸 대신 _를 사용합니다.
  • 문자로 시작합니다.
  • 데이터베이스 이름은 중복될 수 없습니다.

6. 테이블 이름 변경하기

 

테이블 이름을 바꿀 때 쿼리 문법은 아래와 같습니다.

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

테이블 이름이 오타가 났을 때와 같은 경우에 사용하게 됩니다.

 

7. 새로운 컬럼 추가하기

 

새로운 컬럼을 추가하는 쿼리 문법은 아래와 같습니다.

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

테이블에서 새로운 컬럼을 추가하고자 할 때는 ALTER TABE 뒤에 테이블 이름을 지정해주고 ADD COLUMN 뒤에 컬럼 이름과 데이터 타입을 지정하면 됩니다.

 

8. 기존 컬럼 타입 변경하기

 

기존 컬럼에서 타입만 변경하는 쿼리 문법은 아래와 같습니다.

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

테이블에서 기존 컬럼의 타입을 변경하고자 할 때는 ALTER TABE 뒤에 테이블 이름을 지정해주고 MODIFY COLUMN 뒤에 컬럼 이름과 새로운 데이터 타입을 지정하면 됩니다.

 

9. 기존 컬럼 이름과 타입 둘다 변경하기

 

기존 컬럼에서 컬럼 이름도 바꾸고 타입도 변경하는 쿼리 문법은 아래와 같습니다.

ALTER TABLE [테이블 이름]

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

테이블에서 기존 컬럼의 타입을 변경하고자 할 때는 ALTER TABE 뒤에 테이블 이름을 지정해주고 CHANGE COLUMN 뒤에 컬럼 이름과 새로운 컬럼 이름과 새로운 데이터 타입을 지정하면 됩니다.

 

10. 컬럼 지우기

 

기존 컬럼을 지우는 쿼리 문법은 아래와 같습니다.

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

테이블에서 기존 컬럼을 지우고자 할 때는 ALTER TABE 뒤에 테이블 이름을 지정해주고 DROP COLUMN 뒤에 컬럼 이름을 지정하면 됩니다.


테이블 지우기 (DROP-TRUNCATE)

데이터 베이스를 지울 때 쿼리 문법은 아래와 같습니다.

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

해석을 한다면 [데이터베이스 이름]이라는 데이터베이스를 지워 주세요 라는 의미 입니다.

 

테이블을 지울 때 쿼리 문법은 아래와 같습니다.

DROP TABLE [테이블 이름];

해석을 한다면 [테이블 이름] 이라는 테이블을 지워 주세요 라는 의미 입니다.

 

값만 지우고 싶을 때의 쿼리 문법은 아래와 같습니다.

TRUNCATE TABLE [테이블 이름];

해석을 한다면 [테이블 이름] 이라는 테이블의 값만 지워 주세요라는 의미 입니다.

 

DROP은 테이블 전체가 삭제되고 TRUNCATE TABLE은 테이블과 컬럼은 유지가 되면서 그 안에 들어있는 값이 삭제된다는 점 구분해주시기 바랍니다. 

 

만약에 존재하지 않는 데이터베이스나 테이블을 삭제한다면 ERROR가 발생합니다.

그렇다면 데이터 베이스와 테이블이 존재하는지 확인하고 지우는게 ERROR 발생을 막을 수 있겠죠?

 

만약 데이터베이스가 존재하는지 확인 후 데이터 베이스를 지울 때 쿼리 문법은 아래와 같습니다.

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

해석을 하면 [데이터베이스 이름] 데이터베이스가 존재한다면 지워 주세요라는 의미 입니다.

 

만약 테이블이 존재하는지 확인 후 테이블을 지우고 싶을 때 쿼리 문법은 아래와 같습니다.

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

해석을 하면 [테이블 이름] 테이블이 존재한다면 지워 주세요라는 의미 입니다.


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

 

1. 데이터 삽입하기

 

데이터를 삽입할 때 쿼리 문법은 아래와 같습니다.

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

VALUES ([컬럼1 값], [컬럼2 값], [컬럼3 값]);

행 단위로 데이터를 삽입하기 때문에 위와 같은 형태의 문법이 정해졌다고 이해하시면 되구요, 여기서 첫째줄의 컬럼의 갯수와 둘째줄 값의 갯수는 일치해야 합니다.

 

예를 들어서 아래와 같은 쿼리문을 작성했다면,

INSERT INTO apt (danji, builddate, totalhousecount)

VALUES ("도곡렉슬", 2006, 3002);

apt
danji builddate totalhousecount
도곡렉슬 2006 3002
     
     

이러한 형태로 데이터가 삽입될 것입니다.

 

만약에 데이터를 여러 행 삽입하고자 할 때는

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

VALUES([컬럼1 값], [컬럼2 값], [컬럼3 값]),

          ([컬럼1 값], [컬럼2 값], [컬럼3 값]),

          ...

          ([컬럼1 값], [컬럼2 값], [컬럼3 값]);

각 행마다 괄호로 열고 닫아주시고, 쉼표로 구분해주시면 됩니다.

 

2. 원하는 데이터 일부만 삭제하기

 

원하는 데이터를 일부만 삭제하는 쿼리 문법은 아래와 같습니다.

DELETE FROM [테이블 이름]

WHERE [조건 값];

WHERE 절에 조건 값을 명기하며, WHERE의 조건절에 부합하는 데이터만 삭제되게 됩니다.

 

3. 원하는 데이터 일부만 수정하기

 

데이터를 일부만 수정하는 쿼리 문법은 아래와 같습니다.

UPDATE [테이블 이름]

SET [컬럼 이름] = [새 값]

WHERE [조건 값];

UPDATE에 테이블 이름을 명기해주시고, SET에 원하는 컬럼 이름과 값을 입력해주시고, WHERE 절에 조건 값을 명기하시면, WHERE의 조건절에 부합하는 데이터만 수정 됩니다.


오늘은 MySQL에서 데이터의 종류는 무엇이 있는지 데이터 베이스와 테이블을 생성하고 수정하는 기본적인 쿼리 문법에 대해서 알아보았습니다.

 

MySQL에 대해서 기본부터 정리하였는데 저에게 먼저 도움이 되었습니다. 독자님들께도 도움이 되셨길 바라겠습니다.

읽어주셔서 감사합니다! 오늘도 성장하는 하루 되세요!

 

 

 

 

반응형

댓글