본문 바로가기
Database/MySQL

[Programming][MySQL] 테이블 만들기(CREATE DATABASE/ CREATE TABLE/ INSERT INTO/ DELETE FROM)

by LydiaRyu 2021. 8. 2.
반응형

지금까지는 원래 있던 데이터들을 CSV 형태의 파일로 불러와서 테이블을 만들었다. 

 

이 페이지에서는 직접 데이터 베이스를 만들고 테이블을 만드는 작업을 해보기로 한다. 

 

테이블을 만들기 위해서는 먼저, SCHEMAS에 해당하는 데이터 베이스를 만들어야 한다. 

사람들이 맛집에 대한 정보를 입력한 데이터 베이스를 만든다고 하자. (미쉐린 가이드와 같이!)

 

  • CREATE DATABASE
CREATE DATABASE food_guide;

데이터 베이스 만들기

 

  • 데이터 베이스를 만들기 위해서는 CREATE DATABASE 예약어를 사용해야 한다. 위와 같이 작성하고 실행 버튼을 누른 뒤, SCHEMAS를 새로고침 하면 왼쪽에 [food_guide] SCHEMA가 생성된 것을 볼 수 있다. 
  • 만약 SCHEMAS에 중복되는 이름이 있는 것을 방지하고 싶다면 CREATE DATABASE IF NOT EXISTS food_guide와 같이 예약어를 쓰고 작성한다. 

 

테이블을 만들기 전에 사용할 데이터 베이스를 지정해야 하는데,

SCHEMAS의 데이터 베이스에 오른쪽 클릭을 하고 [Set as Default Schema]를 선택하거나 USE 예약어를 사용하여 지정한다. 

데이터 베이스 지정

 

 

  • CREATE TABLE

다음으로 테이블을 만들기 위해서 위의 테이블 모양 아이콘을 선택한다.

 

테이블 만들기

 

Table Name에 만들고 싶은 테이블 이름을 작성하고, Column NameDatatype에 만들어 줄 데이터의 형식에 맞게 작성한다. 위의 테이블에서는 id가 Primary Key로, NN(Not Null)과 AI(Auto Increment)까지 설정하여 NULL 값이 없고 데이터가 추가될 때마다 자동으로 id가 늘어날 수 있도록 만들었다.

 

APPLY를 누르면 아래와 같은 쿼리가 나오는데 아래와 같은 쿼리를 직접 작성해서 테이블을 만들 수도 있다.

 

CREATE TABLE `food_guide`.`customer` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `category` VARCHAR(45) NULL,
  `main_menu` VARCHAR(20) NULL,
  `score` INT NULL,
  `feedback` VARCHAR(50) NULL,
  `date` DATE NULL,
  PRIMARY KEY (`id`));

테이블 만들기 (Query)

 

  • 테이블을 만들 때 데이터 베이스, 테이블 이름, 열의 이름 같은 요소들은 키보드에서 [Tab] 위에 있는 백 틱(`)으로 묶어주고 구분한다. 

 

  • INSERT INTO

이제, 직접 데이터 값들을 넣어보도록 하자. 

 

INSERT INTO customer
(id, category, main_menu, score, feedback, date)
VALUES (1, '중식', '중국냉면', 5, '톡 쏘는 겨자맛과 땅콩버터 맛이 어우러진 국물 맛이 일품', '2020-08-02');

 

INSERT INTO로 입력해 줄 테이블과 열을 지정하고, VALUES 뒤에 입력할 값들을 작성한다.

 

 

Customer 테이블을 조회하면 INSERT 한 열이 잘 추가되어 있는 것을 확인할 수 있다.

 

INSERT INTO customer
VALUES (2, '기타', '큰새우치킨', 4, '매콤한 치킨과 아르헨티나산 큰 새우의 환상의 조화 ', '2020-07-15');    

INSERT INTO customer
( category, main_menu, feedback, date)
VALUES ( '한식', '한우 불고기', '역시나 우리 맛이 최고!', '2020-07-30');

 

  • 위와 같이 열 전체에 값을 입력할 경우에는 열의 INSERT TABLE 테이블 이름 뒤에 따로 열을 작성하지 않고 바로 VALUES로 값을 넣어 줘도 된다. 
  • 또한, 열들 중 일부만 작성해도 INSERT 할 수 있고, 값이 들어가지 않은 열들은 NULL 값으로 나온다.

 

UPDATE customer
SET score = 5
WHERE id  = 3;

 

  • 비어 있었던 세 번째 id의 값을 채워보기로 한다. 값을 변경하기 위해서는 UPATE 테이블 이름 SET 변경할 값 WHERE 변경할 데이터 지정과 같이 작성한다. 

 

UPDATE customer
SET score = score * 20

 

  • 만약 점수가 100점 만점으로 바뀌었다고 하면, score에 일괄적으로 계산을 하는 쿼리를 작성하여 값을 UPDATE 할 수 있다. 100점 만점에 맞게 바꾸기 위해 score 전체 20을 곱해서 같은 비율로 점수가 매겨지도록 설정하였다. 

 

ERROR 예시

 

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

변경할 데이터를 지정할 때 WHERE 뒤에 Key 값을 쓰지 않고 다른 값으로 지정하면, 위와 같은 오류가 날 수 있다.

1) WHERE 절 뒤에 Key 값을 지정하거나, 
2) [Edit] - [Preferences] - [SQL Editor] - 제일 아래 [Safe Updates]의 체크 박스를 해지 - Workbench [Exit]하고 다시 시작한다.

 

 

  • DELETE FROM
DELETE FROM customer
WHERE id = 1;

 

  • 데이터 값을 지우고 싶다면 DELETE FROM 테이블 WHERE 지우려는 열로 삭제할 수 있다.

그러나, 이 경우 데이터가 지워지는 것이기 때문에 신중하게 작업해야 한다!

728x90

댓글