ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQL] MySQL - CREATE, ALTER, DROP, DELETE
    데이터분석/SQL 2023. 3. 7. 18:24

     

     

    해당 시리즈는 패스트캠퍼스의 '가장 쉽게 시작하는 데이터 분석, SQL 유치원' 강의를 듣고 정리한 내용입니다.

    데이터와 데이터베이스

    데이터란, 컴퓨터가 처리할 수 있는 문자, 숫자, 소리, 그림과 같은 형태로 된 정보를 말합니다.

    이런 데이터들을 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 저장소를

    데이터베이스라고 말하죠.

     

    데이터베이스의 특징이 몇 가지 있는데,

    첫 번째로, 데이터베이스에서는 자료를 구조화하여 저장하기 때문에 데이터를 효율적으로 관리할 수 있습니다.

    두 번째로, 여러 업무에 여러 사용자가 동시에 사용할 수 있습니다.

    나 혼자 사용하는 게 아니기 때문에 다른 사람들도 알아볼 수 있도록 하는 여러 가지 규칙들이 있겠죠?

    이런 규칙들은 추후에 살펴볼 예정입니다.

    마지막으로, 사용자가 데이터베이스의 기능을 사용하기 위해 DBMS라는 프로그램을 활용합니다.

    DBMS는 Database Management System으로, 데이터베이스의 여러 기능을 제공하는 프로그램입니다.

    사용자는 항상 DBMS를 통해서 데이터베이스에 접근할 수 있습니다.

     

    그럼 DBMS의 종류에는 어떤 것들이 있을까요?

    사용 목적이나 필요에 따라 MySQL, Oracle, MariaDB 등 여러 종류가 있지만

    저희는 가장 보편적으로 쓰이는 MySQL을 기본으로 두고 학습할게요!

     

    DBMS에서 내가 원하는 결과를 얻기 위해서는 SQL이라는 언어가 사용되는데,

    예를 들어 우리 회사에 20대 직원이 몇 명이 있는지 알기 위해서는

    그에 맞는 SQL 쿼리를 DBMS에 넣어 DBMS가 데이터베이스에서 필요한 결과를 반환해줍니다.

     

    MySQL 데이터 타입

    MySQL에서 사용되는 데이터 타입으로는 숫자형, 문자형, 날짜형 데이터가 있습니다.

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

    지정한 데이터 타입이 아닐 시 데이터 저장이 불가합니다.

     

    먼저 숫자형 데이터입니다.

    숫자형 데이터 중 정수형을 나타내는 데이터 타입은 SMALLINT, MEDIUMINT, INT 등으로

    가장 보편적으로 사용되는 건 INT 타입입니다.

    각각의 데이터 타입은 허용되는 바이트 수로 구분됩니다.

    실수형을 나타내는 데이터 타입은 FLOAT와 DOUBLE이 있는데

    이 역시 허용되는 바이트 수에 따라 구분되고, 가장 많이 사용되는 건 FLOAT 타입입니다.

    숫자형 데이터는 당연히 데이터 간 연산이 가능합니다.

     

    문자형 데이터 타입은 CHAR(n)과 VARCHAR(n)이 있습니다.

    CHAR(n)은 최대 255 바이트까지 허용 가능하고, n을 지정하지 않을 경우 1이 디폴트 값입니다.

    CHAR(n)을 사용하면 고정 길이로 문자열이 저장됩니다.

    VARCHAR(n)은 최대 65535 바이트까지 허용 가능하고, n을 필수로 지정해야 합니다.

    VARCHAR(n)은 변동 길이로 문자열이 저장됩니다.

    고정 길이로 문자열이 저장되는 것보다 변동 길이로 문자열이 저장되는 것이

    필요한 만큼의 공간만 사용하는 것이기 때문에 더 효율적이어서 VARCHAR(n)을 주로 사용합니다.

    문자형 데이터는 사용할 때 따옴표가 꼭 같이 쓰여야 합니다.

    또한 문자 중 이미 SQL에서 지정된 함수나

    데베, 테이블, 컬럼의 이름과 동일한 문자의 경우 그렇게 인식할 수 있으니 주의해야 합니다.

     

    날짜형 데이터는 DATE와 DATETIME이 주로 사용되는데,

    DATE는 년월일까지만 표현이 가능하고

    DATETIME은 년월일에 시간분초까지 표현이 가능하다는 특징이 있습니다.

     

    데이터베이스와 테이블

    앞서 데이터베이스가 무엇인지 설명했었는데요.

    넓은 의미로는 여러 사람이 공유하고 사용할 목적으로 통합 관리되는 데이터 저장소이지만,

    좁은 의미로는 테이블을 저장해두는 저장소, 즉 스키마(Schema)를 의미합니다.

     

    테이블은 무엇일까요?

    테이블은 쉽게 말해 데이터베이스에서 데이터를 모아 놓은 저장 공간으로,

    흔히 엑셀에서 볼 수 있는 행과 열로 이루어진 표를 의미합니다.

     

    그럼 이제부터 데이터베이스와 테이블을 어떻게 만들 수 있는지 살펴볼게요.

    테이블을 생성하기 전에 데이터베이스부터 생성해야 합니다.

    데이터베이스나 테이블을 생성할 때는 CREATE라는 키워드를 사용합니다.

    예를 들어 annalyst라는 데이터베이스를 생성하고 싶을 때는 아래와 같이 적어줍니다.

    CREATE DATABASE annalyst;

     

    위에서도 볼 수 있듯이 쿼리가 끝날 때는 항상 ; (세미콜론)을 붙여서 명령이 끝났다는 걸 알려주세요!

     

    데이터베이스를 생성했으니 그 안에 테이블을 생성해야겠죠?

    그러기 위해서는 먼저 데이터베이스를 사용한다는 명령어를 적어야 합니다.

    USE annalyst;

     

    어때요, SQL 정말 직관적이지 않나요?

    거의 모든 키워드가 우리가 아는 영어 단어 그대로의 의미를 가지고 있다고 생각하시면 돼요.

     

    이제 정말 테이블을 생성해볼게요.

    테이블을 생성할 때 쓰이는 기본 구조는 다음과 같습니다.

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

     

    데이터베이스나 테이블, 컬럼의 이름을 정할 때는 굉장히 중요한 규칙이 있습니다.

    첫째, 이름에는 문자, 숫자, _ 만 사용이 가능합니다.

    둘째, 이름에 쓰이는 문자는 주로 영어 소문자를 사용합니다.

    한글로 쓰면 절대 안 되는 건 아니지만 인코딩 문제가 있을 수 있어 주로 영문을 사용합니다.

    대문자와 소문자를 구분하진 않지만, 가독성을 위해 보통 키워드나 함수명은 대문자를 사용하고

    사용자가 정의한 이름은 소문자를 사용합니다.

    셋째, 이미 키워드, 함수명 등 문법적인 용도로 사용되는 예약어는 사용이 불가합니다.

    예를 들어, 테이블 명으로 CREATE와 같은 이름은 사용할 수 없습니다.

    넷째, 단어와 단어 사이에는 빈칸 대신 _를 사용합니다.

    다섯째, 이름은 숫자나 _ 로는 시작할 수 없고, 문자로 시작해야 합니다.

    여섯째, 데이터베이스의 이름은 중복이 불가합니다.

    같은 의미로 하나의 데이터베이스 안에서 테이블들의 이름은 중복 불가하고,

    하나의 테이블 안에서 컬럼들의 이름도 겹치면 안 됩니다.

     

    위에서 언급했듯이 데이터베이스가 여러 사람이 공유하고 사용할 목적이 있기 때문에

    복잡하지만 이런 규칙들이 꼭 지켜져야 한다는 거 기억해주세요! ⭐️

     

    테이블 수정하기 (ALTER)

    테이블을 이미 만들었지만 수정하고 싶을 때도 있겠죠?

    테이블을 수정할 땐 ALTER 키워드를 사용해서 수정합니다.

     

    테이블의 이름을 다른 이름으로 바꾸고 싶을 땐 이렇게 작성합니다.

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

    테이블에 새로운 컬럼을 추가하고 싶을 땐 이렇게 작성합니다.

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

     

    테이블에 이미 있는 컬럼의 이름과 데이터 타입을 바꾸고 싶을 땐 이렇게 작성합니다.

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

     

    테이블과 데이터베이스 지우기 (DROP, TRUNCATE)

    테이블과 데이터베이스를 지우는 방법은 두 가지가 있습니다.

    DROP 키워드를 사용하게 되면 테이블이나 데이터베이스를 완전히 지우는 것이고,

    TRUNCATE 키워드를 사용하면 테이블이나 데이터베이스의 구조는 남기되

    안에 들어 있는 값만 지우는 것입니다.

     

    테이블이나 데이터베이스를 지우고 싶을 땐 이렇게 작성합니다.

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

     

    데이터베이스나 테이블이 존재할 경우 지우고 싶다면 이렇게 작성합니다.

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

     

    데이터 삽입, 수정, 삭제

    데이터베이스와 테이블을 생성하고 수정하고 삭제하는 것을 배웠으니,

    이제는 그 안에 데이터를 삽입하고 수정하고 삭제하는 것을 배워볼 차례입니다.

     

    데이터를 삽입할 때는 로우(행) 단위로 삽입해야 합니다.

    컬럼 이름과 컬럼 값이 일대일 대응을 이뤄야 하고, 그렇지 않으면 에러가 발생하게 됩니다.

    데이터를 삽입하는 기본 구조는 다음과 같습니다.

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

     

    데이터를 수정할 때는 UPDATE라는 키워드를 사용하는데요, 아래와 같이 작성할 수 있습니다.

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

     

    마지막으로 데이터를 삭제하고 싶다면 아래와 같이 작성합니다.

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

     

    이렇게 기본적인 데이터와 데이터베이스에 대한 개념과 데이터베이스, 테이블을 다루는 것에 대해 배워봤습니다.

    다음 글부터는 SQL의 핵심이라고 할 수 있는 데이터 가져오는 것을 공부해봐요 🙌

    '데이터분석 > SQL' 카테고리의 다른 글

    [SQL] MySQL - 데이터 만지기  (2) 2023.03.17
    [SQL] MySQL - 데이터 가져오기 (2)  (0) 2023.03.09
    [SQL] MySQL - 데이터 가져오기 (1)  (0) 2023.03.09

    댓글

Designed by Tistory.