코딩일기

MySQL 기초부터 훑어보기6(Table) 본문

Code/SQL

MySQL 기초부터 훑어보기6(Table)

daje 2021. 3. 8. 15:12
728x90
반응형

https://dev.mysql.com/

 

 

안녕하십니까 다제입니다. 

 

오늘도 SQL에 대해서 배워보도록 하겠습니다.

 

그중에서도 table 생성, 추가, 수정, 삭제에 관하여 배워보도록 하겠습니다.

 

 

 

 


 

 

 

1. Table

1) DATABASE 생성

# 데이터베이스 생성 
CREATE DATABASE EXISTS course_rating;

# 만약 데이터베이스가 없다면 생성하라는 의미
CREATE DATATBASE IF NOT EXISTS course_rating;

 

 

2) DATABASE 사용

USE course_rating;

 

 

3) Data type

 숫자형 타입

  -. 정수형 타입

   * TINYINT : 작은 범위의 정수를 저장할 때 사용

   * SMALLINT : TINTINT보다 좀 더 큰 범위의 정수 

   * MEDIUMINT

    MEDIUMINT SIGNED : -8388608 ~ 8388607

    MEDIUMINT UNSIGNED : 0 ~ 16777215

   * INT

    → INT SIGNED : -2147483648 ~ 2147483647

    → EDIUINT UNSIGNED : 0 ~ 4294967295

   * BIGINT

    → BIGINT SIGNED : -9223372036854775808 ~ 9223372036854775807

    BIGINT UNSIGNED : 0 ~ 18446744073709551615

NED : -8388608 ~ 8388607

  -. 실수형 타입

   * DECIMAL

    일반적으로 자주 쓰이는 실수형 타입 중 하나로 보통 DECIMAL(M, D)의 형식

    → M은 최대로 쓸 수 있는 전체 숫자의 자리수이고, D는 최대로 쓸 수 있는 소수점 뒤에 있는 자리의 수

    M은 최대 65, D는 30까지의 값을 가질 수 있음 

    DECIMAL이라는 단어 대신 DEC, NUMERIC, FIXED를 써도 가능함

 

   * FLOAT

     -3.402823466E+38 ~ -1.175494351E-38,

     0, 

     1.175494351E-38 ~ 3.402823466E+38

     범위의 실수들을 나타낼 수 있는 데이터 타입

 

   * DOUBLE 

     -1.7976931348623157E+308 ~ -2.2250738585072014E-308, 

     

     2.2250738585072014E-308 ~ 1.7976931348623157E+308

     범위의 실수들을 나타낼 수 있는 데이터 타입

     FLOAT에 비해 더 넓은 범위의 수를 나타낼 수 있을 뿐만 아니라, 그 정밀도 또한 더 높은 타입

 

날짜 및 시간 타입

   * DATE : 날짜를 저장하는 데이터 타입, ex) ’2020-03-26’

   * DATETIME : 날짜와 시간을 저장하는 데이터 타입, ex ’2020-03-26 09:30:27’

   * TIMESTAMP : 날짜와 시간을 저장하는 데이터 타입입니다. ’2020-03-26 09:30:27’

     TIMESTAMP 타입은 타임 존(time_zone) 정보도 함께 저장함 

 

 문자열 타입

   * CHAR : 문자열을 나타내는 기본 타입으로 Character의 줄임말, ex) CHAR(30) 

   * VARCHAR : 문자열을 나타내는 기본 타입으로 Character Varing의 줄임말, ex) VARCHAR(30)

     CHAR는 고정 길이 타입이고, VARCHAR는 가변 길이 타입이라는 점

     저장 용량이 설정된 최대 길이에 맞게 고정되는 게 아니라 실제 저장된 값에 맞게 최적화됨

   * TEXT : 문자열을 저장하는 데이터 타입으로 최대 65535 자까지 저장 가능한 LONGTEXT 타입

 

 

4) Table 생성 

CREATE TABLE `cell phone store`.`good_seller` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(20) NULL,
    `local` VARCHAR(20) NULL,
    `number` INT NULL, 
    `date` DATE NULL,
    PRIMARY KEY(`id`));

  -. 생성원리 : [feature 이름] [데이터타입] [속성] [PRIMARY KEY(원하는 컬럼쪽에 써줘도 됨)]

     속성의 NULL은 NULL이 있어도 괜찮다라는 의미 

     feature 이름을 생성할 때는 `(백터)로 감싸는 것을 추천 

     cell pheon store DB 안에 good_seller table을 생성하는 코드 

 

 

5) row 추가 

INSERT INTO student( id, name, major, phone) VALUES( 1, 홍길동, 컴퓨터, 1234-4567 );

INSERT INTO food_menu (menu, price, ingredient) VALUES ("123", 5000, "맵다");
INSERT INTO food_menu (menu, price, ingredient) VALUES ("1234", 3000, "천천히 먹자");
INSERT INTO food_menu (menu, price, ingredient) VALUES ("1235", 8000, "식혀먹자");
INSERT INTO food_menu (menu, price, ingredient) VALUES ("1236", 7000, "맛있게 먹자");

 -. 특정 feature 정보만 가지고 있을 때는 feature 이름을 기재하여야 한다.

 -. 이때 적어주지 않은 곳은 NULL로 입력이 된다. 

 -. 단, 모든 row값을 다 넣을 때는 feature 이름을 제외하여도 된다.

 -. 또한, id feature 값을 주지 않아도 id는 auto_increment(AI) 특성으로 자동으로 입력이 된다. 

 

 

6) row 수정 

# 1개 수정
UPDATE student SET major = "css" WHERE id = 2; 

# 2개 이상 수정 
UPDATE student 
SET major = "css", name = "홍길탕"
WHERE id = 2; 

# 한 feature의 모든 row 수정하기 
UPDATE final_test SET SCORING = SCORING + 10

 -. UPDATE [table명] SET [feature name] = "변경된내용" WHERE id = id번호;

 -. WHERE절을 사용하지 않으면 major feature가 모두 css로 변경되어 버린다. 그래서 꼭! WHERE절을 사용해주어야 합니다. 

 

 

7) row 삭제 

DELETE FROM student WHERE id = 200;

 -. student table에서 id 200에 해당되는 row를 삭제하겠다는 의미입니다. 

 -. 삭제에는 물리적인 삭제와 논리적인 삭제가 있습니다. 물리적인 삭제는 데이터베이스에서 아에 삭제를 하는 것을 으미하며, 논리적인 삭제는 UPDATE를 의미합니다.

 

 

우리는 데이터가 무척 소중한 존재라는 사실에 대해 인지할 필요가 있습니다.

 

데이터 하나하나가 자산이고, 인사이트를 발견할 수 있는 밑거름인것이죠!

 

절대 결재권자의 승인이 없이 데이터베이스값을 변경(수정, 삭제)하지 않겠습니다. 

 

감사합니다. 

 

 

728x90
반응형
Comments