[MySQL] DML(1) INSERT

Hunie_07·약 23시간 전

SQL

목록 보기
6/8
post-thumbnail

📌 DML (Data Manipulation Language)

- 데이터 조작어 (DML)

  • 테이블의 데이터를 검색, 삽입, 수정, 삭제하는데 사용
  • SELECT, INSERT, UPDATE

데이터베이스 생성

DROP DATABASE IF EXISTS marketdb;
CREATE DATABASE marketdb;
USE marketdb;

CREATE TABLE membertype(
	membertype_id INT NOT NULL PRIMARY KEY,
    membertype VARCHAR(5) NOT NULL
);

CREATE TABLE customer(
	customer_id INT NOT NULL PRIMARY KEY,
    customer_name VARCHAR(45),
    birthday DATE,
    membertype_id INT NOT NULL,
    CONSTRAINT FK_customer_membertype 
		FOREIGN KEY (membertype_id) 
		REFERENCES membertype(membertype_id)
);

CREATE TABLE product(
	product_id INT NOT NULL PRIMARY KEY,
    product_name VARCHAR(20) NOT NULL,
    stock INT DEFAULT 0 CHECK (stock >= 0),
    price INT DEFAULT 0 CHECK (price >= 0)
);

CREATE TABLE productorder(
	order_id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    customer_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL,
    price INT NOT NULL,
    order_time DATETIME,
    CONSTRAINT FK_productorder_customer 
		FOREIGN KEY (customer_id) 
		REFERENCES customer(customer_id),
    CONSTRAINT FK_productorder_product 
		FOREIGN KEY (product_id) 
        REFERENCES product(product_id)
);

📌 INSERT

1️⃣ 데이터 삽입

1. 쿼리문으로 직접 삽입

INSERT INTO 테이블명(컬럼명1, 컬럼명2, ...) values(값1, 값2, ...)
INSERT INTO 테이블명 VALUES (값1, 값2, ...);

  • 테이블의 모든 컬럼에 대한 값을 지정하여 삽입
INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...)
		VALUES (1,2, ...),
			   (1,2, ...),
               ...,
               (1,2, ...);

  • membertype 테이블 데이터 삽입
INSERT INTO membertype (membertype_id, membertype)
	VALUES (1, '보통회원');
INSERT INTO membertype(membertype_id, membertype)
	VALUES (2, '일반회원');
  • customer 테이블 데이터 삽입
INSERT INTO customer 
	(customer_id, customer_name, birthday, membertype_id) 
    VALUES (1, '김바람', '1984-06-24', 2);
INSERT INTO customer 
	(customer_id, customer_name, birthday, membertype_id) 
    VALUES (2, '이구름', '1990-07-16', 1);
INSERT INTO customer 
	(customer_id, customer_name, birthday, membertype_id) 
    VALUES (3, '박하늘', '1976-03-09', 2),
		   (4, '강산', '1991-05-04', 1),
           (5, '유바다', '1993-04-21', 2);
  • product 테이블 데이터 삽입
    -- 일부 컬럼의 데이터만 삽입: NULL값 허용시(기본값 설정되어 있는 경우)
    -- Ex) sql(1, '약용 입욕제')
INSERT INTO product
	(product_id, product_name, stock, price)
    # stock, price 는 NOT NULL 이 아니라서 생략해도 실행가능
    VALUES (1, '약용 입욕제', 100, 70),
		   (2, '약용 핸드솝', 23, 700),
           (3, '천연 아로마 입욕제', 4, 120),
           (4, '거품 목욕제', 23, 120);

2. Table Import Wizard 활용

  • 데이터 파일(csv)이 존재하는 경우 Table Import Wizard 를 통해 데이터를 삽입할 수 있다.
  • productorder 테이블 데이터 삽입
    • csv 파일로 저장되어 있는 주문데이터를 로딩하여 데이터테이블 & 데이터 삽입
    • 데이터베이스명에서 우클릭하여 Table Import Wizard 사용

1) 좌측 SCHEMASmarketdb 우클릭

2) Table Data Import Wizard

3) 파일 위치 탐색 및 선택

4) 테이블 이름 설정 및 선택

  • Use existing table : 이미 생성한 테이블이 있는 경우 (저장된 데이터가 있는지에 유의한다.)
  • Create new table : 새로 테이블을 생성
    • Truncate table before import : DROP IF EXISTS 와 같은 기능으로 존재하는 경우 삭제하고 생성한다.

5) 데이터 형식 선택

  • 인코딩 방식을 설정하고 Source ColumnDest Column을 매핑 오류가 발생하지 않도록 맞춰준다.
  • Next 로 진행하면 데이터가 Import 된다.
    ※ 만약 인코딩 에러가 발생하는 경우 VS Code 나 Excel 에서 다른이름으로 저장하여 인코딩 방식을 변경해준다.

6) 테이블 생성 완료

  • 당연하게도 아래 UI 에서 직접 타이핑하여 데이터를 삽입할 수도 있다.

0개의 댓글